Subject: Re: bug#39799: 28.0.50; Most emoji sequences don’t render correctly

From: Robert Pluim <[email-masked]>
Date: Tue, 21 Sep 2021 18:10:37 +0200

>>>>> On Tue, 21 Sep 2021 18:58:38 +0300, Eli Zaretskii <[email-masked]> said:

    >> From: Robert Pluim <[email-masked]>
    >> Cc: [email-masked],  [email-masked],  [email-masked]
    >> Date: Tue, 21 Sep 2021 16:43:17 +0200
    >> 
    Eli> Not sure I understand.  The sequence U+1F4F9,U+1F3FD indeed does not
    Eli> appear in emoji-zwj.el, but it does appear in emoji-sequences.txt.
    Eli> However, the string "👩🏽" doesn't match the regexp in the
    Eli> composition-function-table's slot for U+1F4F9.  Why is this?
    >> 
    >> Because for skin tones we index on the modifier, and use lookback:
    >> 
    >> ;; Skin tones
    >> (set-char-table-range composition-function-table
    >> '(#x1F3FB . #x1F3FF)
    >> (nconc (char-table-range composition-function-table '(#x1F3FB . #x1F3FF))
    >> (list (vector ".[\U0001F3FB-\U0001F3FF]"
    >> 1
    >> 'compose-gstring-for-graphic))))

    Eli> Ah, okay.  But why isn't that working?

I have no idea. Even a single entry for U+1F469 in
composition-function-table in emoji-zwj.el messes things up.

    >> Iʼve just tried adding "\N{U+1F469}\N{U+1F3FE}" to the composition
    >> function table regexp for U+1F469 manually, and now I get correct
    >> composition. That means we could process the
    >> RGI_Emoji_Modifier_Sequence entries from emoji-sequences.txt with
    >> emoji-zwj.awk and add them, indexed on the base character (and remove
    >> the above code).
    >>

This turns out to be a pretty small change, so if we donʼt get to the
bottom of it we have an alternative.

    >> Iʼd still like to understand where things are going wrong though.

    Eli> Are you debugging this, or would you like me to take a look?

Iʼd appreciate it if you have time. Itʼs not code Iʼm very familiar
with (and someone asked me to implement VS-16 based composition, so
Iʼm busy :-) )

Robert
--