Subject: Re: bug#42256: 27.0.50; composition

From: Juri Linkov <[email-masked]>
Date: Tue, 14 Jul 2020 03:13:12 +0300

> Why do you need that, may I ask?  Why is it important to know which
> characters were composed, and in what usage scenario?

For the same reason why there is the need to see the name of
the base character.  Displaying information about only part of
composition (only its first character) is incomplete to see
what characters participate in the composition, especially to know
the names of usually small glyphs of accents that are hardly distinguishable
when composed with the base character.

> Please also update the Emacs manual, where it describes this display,
> because now the text there is outdated.

Done.

> Actually, the results are inaccurate or even incorrect, at least in
> some cases.  Here's one case where the results are wrong:
>
>   emacs -Q
>   C-h h
>   C-u 411 M-g c
>   C-u C-x =
>
> You will see towards the end of the *help* buffer:
>
>  Composed with the following character(s) "്" using this font:
>    harfbuzz:-outline-Kartika-normal-normal-normal-serif-13-*-*-*-p-*-iso10646-1
>  by these glyphs:
>    [0 1 3384 337 12 0 12 9 0 nil]
>  from these character(s):
>    സ (#xd38) MALAYALAM LETTER SA
>    ് (#xd4d) MALAYALAM SIGN VIRAMA
>    ക (#xd15) MALAYALAM LETTER KA
>    ാ (#xd3e) MALAYALAM VOWEL SIGN AA

I tried, but got a different output:

Composed with the following character(s) "്കാ" using this font:
  ftcrhb:-PfEd-Lohit Malayalam-normal-normal-normal-*-13-*-*-*-*-0-iso10646-1
by these glyphs:
  [0 3 3384 184 14 0 15 8 5 nil]
  [0 3 3405 71 6 0 6 8 0 nil]
from these character(s):
  സ (#xd38) MALAYALAM LETTER SA
  ് (#xd4d) MALAYALAM SIGN VIRAMA
  ക (#xd15) MALAYALAM LETTER KA
  ാ (#xd3e) MALAYALAM VOWEL SIGN AA

The difference is in "Composed with the following character(s) "്കാ"
and in the rows of glyphs.  And according to the composition string "്കാ"
the list of 4 characters is correct.

> The added list of characters seems to imply that 4 characters were
> composed at buffer position 411.  But actually only the first 2 of
> them were composed, as clearly see from the line starting with
> "Composed with" above.
>
> A similar problem happens at buffer position 413 of HELLO.

Here is the output from 'C-u 413 M-g c C-u C-x =':

Composed with the following character(s) "ം" using this font:
  ftcrhb:-PfEd-Lohit Malayalam-normal-normal-normal-*-13-*-*-*-*-0-iso10646-1
by these glyphs:
  [0 1 3376 59 8 0 8 8 0 nil]
  [0 1 3330 16 7 0 8 6 0 nil]
from these character(s):
  ര (#xd30) MALAYALAM LETTER RA
  ം (#xd02) MALAYALAM SIGN ANUSVARA

Again, it seems the list of characters is correct according
to the text "Composed with the following character(s) "ം".

> And at position 872 you can see an even more stark example: instead of
> 2 characters, we show 8(!).

I don't understand where these 8 characters are coming from.
This composition of 8 characters is returned by find-composition.
Maybe the bug is in find-composition?