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

From: Robert Pluim <[email-masked]>
Date: Fri, 28 Feb 2020 19:01:59 +0100

>>>>> On Fri, 28 Feb 2020 18:30:12 +0100, Mike FABIAN <[email-masked]> said:

    >> #x24c2 Ⓜ
    >> 
    >> is stubbornly not being displayed using Noto Color Emoji, even though
    >> that font has a glyph for it, and Iʼve added:

    Mike> U+24C2 is an Emoji which has both a text and an emoji presentation. See:

    Mike> http://unicode.org/reports/tr51/#Emoji_Variation_Selector_Notes
    Mike> http://unicode.org/reports/tr51/#def_fully_qualified_emoji_zwj_sequence
    Mike> http://unicode.org/reports/tr51/#def_non_fully_qualified_emoji_zwj_sequence

    Mike> http://www.unicode.org/Public/emoji/12.0/emoji-data.txt

    Mike> U+1F600 is an emoji, which has only emoji representation:

    Mike> $ grep 1F600 emoji-data.txt 
    Mike> 1F600         ; Emoji                # E1.0   [1] (😀)       grinning face
    Mike> 1F600         ; Emoji_Presentation   # E1.0   [1] (😀)       grinning face
    Mike> 1F600         ; Extended_Pictographic# E1.0   [1] (😀)       grinning face

    Mike> It displays without problems in colour in my Emacs.

    Mike> Note that U+24C2 does not have the "Emoji_Presentation" tag:

    Mike> $ grep 24C2 emoji-data.txt 
    Mike> 24C2          ; Emoji                # E0.6   [1] (Ⓜ️)       circled M
    Mike> 24C2          ; Extended_Pictographic# E0.6   [1] (Ⓜ️)       circled M

    Mike> It has to variations, text representation and emoji representation:

    Mike> $ grep 24C2 emoji-variation-sequences.txt 
    Mike> 24C2 FE0E  ; text style;  # (1.1) CIRCLED LATIN CAPITAL LETTER M
    Mike> 24C2 FE0F  ; emoji style; # (1.1) CIRCLED LATIN CAPITAL LETTER M

    Mike> (U+1F600 is not in emoji-variation-sequences.txt as it has only emoji representation).

    Mike> $ grep 1F600 emoji-test.txt 
    Mike> 1F600                                      ; fully-qualified     # 😀 E1.0 grinning face
    Mike> $ grep 24C2 emoji-test.txt 
    Mike> 24C2 FE0F                                  ; fully-qualified     # Ⓜ️ E0.6 circled M
    Mike> 24C2                                       ; unqualified         # Ⓜ E0.6 circled M
    Mike> $

    Mike> As you can see above, U+1F600 is already fully-qualified on its own.

    Mike> If I test in gedit, U+24C2 on  its  own is displayed in black and white
    Mike> (happens to use "MS Gothic" font on my system).
    Mike> U+24C2 U+FE0E is displayed in black and white in gedit as well.
    Mike> U+24C2 U+FE0F is displayed in colour in gedit  using the "Noto Color
    Mike> Emoji" font.

OK. How do you determine which font is being used in gedit?

    Mike> These selectors don’t work in Emacs for me. U+24C2, U+24C2 U+FE0E, and
    Mike> U+24C2 U+FE0F *all* display in black and white for me in Emacs.

OK, so itʼs not just me. Iʼll have to do some reading and some
digging.

    Mike> The presence of such selectors in a currently visible buffer make my
    Mike> Emacs extremely slow and unresponsive, I can hardly finish typing this
    Mike> e-mail.

    Mike> If I switch to some other buffer so that no such selectors are currently
    Mike> visible, my Emacs is responsive.

    Mike> Now  that I switched back to this buffer to send this e-mail, it is
    Mike> terribly slow again. 

    Mike> Same problem when one of the Unicode emoji data files is displayed which
    Mike> contains these selectors. Emacs  becomes  unusably slow.

Can you try my patch from
<https://debbugs.gnu.org/cgi/bugreport.cgi?bug=39133#41> ? I probably
should have pushed it already...

Robert