Subject: bug#54562: 28.0.91; Emoji sequence not composed

From: Eli Zaretskii <[email-masked]>
Date: Mon, 28 Mar 2022 19:07:53 +0300

> From: Robert Pluim <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Mon, 28 Mar 2022 16:59:16 +0200
> 
>     >> +static bool
>     >> +codepoint_is_combining_lookup_eligible (int ch)
>     >> +{
>     >> +  if ((0x20D0 <= ch && ch <= 0x20FF) || ch == 0x308)
>     >> +    return true;
>     >> +  return false;
>     >> +}
> 
>     Eli> Any reason not to use the Unicode category here?  Or do we want to
>     Eli> support only specific characters (in which case U+0308 is still not
>     Eli> the only one)?
> 
> You'd want to apply this to everything in Mn? Thatʼs a lot of
> codepoints. Or did you mean Me? Or anything in Mn thatʼs latin? The
> possibilities are endless :-)

I thought about any Mn character whose canonical-combining-class
property is 200 and above.  The COMBINING ENCLOSING <SOMETHING> stuff
will need to be added to that, of course.  And we could have that
option have multiple possible values, not just on/off...

Btw, for sequences that include a base character and 2 or more
diacritics, selecting a font that supports the first diacritic (the
one which triggers the composition) might not be enough, since the
rest of the diacritics could be absent from that font.  Instead, we'd
need something like "find the font for each one of them and then use
the one which supports the largest subset of them".