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

From: Mike FABIAN <[email-masked]>
Date: Fri, 28 Feb 2020 13:46:50 +0100

Robert Pluim <[email-masked]> さんはかきました:

> I suck at awk, but my attempt is attached. It DTRT for me under Cairo
> if I change my fontset settings to use 'Noto Color Emoji' instead of
> Symbola for:
>
>              (#x1F300 . #x1F5FF)	;; Misc Symbols and Pictographs
>              (#x1F900 . #x1F9FF)	;; Supplemental Symbols and Pictographs
>
> It matches forward off the first char, so the
> composition-function-table entries all have '0' as the number of chars
> to match. Would it be better to match backwards? Weʼd run into the
> 4-character maximum for that, since some of the sequences are 7 or
> more characters long.
>
>     >> > If you mean they are not displayed in correct colors, then Emacs
>     >> > doesn't yet support color emoji, we lack some infrastructure for
>     >> > that.  Again, work in that area is welcome, it should be relatively
>     >> > easy since we now have HarfBuzz support for text shaping.
>     >> 
>     >> Actually the color display works already. I tested with current master
>     >> (build with cairo) and the emoji display just fine in color.
>
>     Eli> Maybe in a Cairo build.  Or maybe I'm missing something.
>
> Iʼm not seeing colour emoji in a -Q Cairo build. Which sequence is this
> again?

To check the colour, almost any emoji will work, it doesn’t have to be a
sequence. For example, I see these in colour:

👩‍🦰 U+1F469 U+200D U+1F9B0 woman: red hair
🧑‍🦰 U+1F9D1 U+200D U+1F9B0 person: red hair
😇 U+1F607

When I start "emacs -Q" (cairo build from current git master), I
see the emoji first in black and white as in the attached
emacs-default-emoji.png.

Then, after evaluating:

(set-fontset-font t '(#x10000 . #x1FFFF) '("Noto Color Emoji" . "unicode-bmp") nil 'prepend)

I see them in colour.

So I have put

(set-fontset-font t '(#x10000 . #x1FFFF) '("Noto Color Emoji" . "unicode-bmp") nil 'prepend)

in my init file.

-- 
Mike FABIAN <[email-masked]>