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

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

> 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))))

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

> 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).
> 
> Iʼd still like to understand where things are going wrong though.

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