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

From: Mike FABIAN <[email-masked]>
Date: Wed, 26 Feb 2020 15:28:58 +0100

As can be seen in the attached screenshot, some 

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

don’t render correctly in the screenshot, although they work using the
same font (“Joypixels”, version 5.5) elsewhere, e.g. in gedit.

Same result in Emacs when using "Noto Color Emoji", both emoji sequences
are rendered as 2 characters each in Emacs (In gedit, “U+1F469 U+200D
U+1F9B0 woman: red hair” works but “U+1F9D1 U+200D U+1F9B0 person: red
hair” does not, so this is likely because the “Noto Color Emoji” font
does not yet support the latter sequence).

When loading

http://www.unicode.org/Public/emoji/12.0/emoji-zwj-sequences.txt

into Emacs one can see that most sequences don’t render correctly
(actually *all* sequences, as far as I can see).

Also, when loading

http://www.unicode.org/Public/emoji/12.0/emoji-sequences.txt

into Emacs, one can see that the Flag sequences and skin colour
sequences don’t render correctly either (not a font problem, both
“Noto Color Emoji” and “Joypixels” support these):

1F1FF 1F1FC   ; RGI_Emoji_Flag_Sequence      ; flag: Zimbabwe                                                 # E2.0   [1] (🇿🇼)

1F3F4 E0067 E0062 E0065 E006E E0067 E007F; RGI_Emoji_Tag_Sequence; flag: England                              # E5.0   [1] (🏴󠁧󠁢󠁥󠁮󠁧󠁿)

261D 1F3FB    ; RGI_Emoji_Modifier_Sequence  ; index pointing up: light skin tone                             # E1.0   [1] (☝🏻)

------------

In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.13, cairo version 1.16.0)
 of 2020-02-26 built on taka.site
Repository revision: 1dd44e633aed1ea10e9b611e844618814d6537aa
Repository branch: emacs-master-mike
Windowing system distributor 'Fedora Project', version 11.0.12006000
System Description: Fedora 31 (Workstation Edition)

Recent messages:
Wrote /home/mfabian/.newsrc.eld
Saving /home/mfabian/.newsrc.eld...done
No more unseen articles
No more unread articles
Mark activated
Updating buffer list...done
Commands: m, u, t, RET, g, k, S, D, Q; q to quit; h for help
Mark set
Quit
Mark activated

Configured using:
 'configure --prefix=/packages/stow/emacs-master-20200226 --with-cairo'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD
PDUMPER LCMS2 GMP

Important settings:
  value of $LC_MESSAGES: ja_JP.UTF-8
  value of $LC_TIME: ja_JP.UTF-8
  value of $LANG: C.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Message

Minor modes in effect:
  gnus-message-citation-mode: t
  mml-mode: t
  global-edit-server-edit-mode: t
  erc-networks-mode: t
  erc-menu-mode: t
  erc-list-mode: t
  erc-pcomplete-mode: t
  erc-autoaway-mode: t
  erc-log-mode: t
  erc-button-mode: t
  erc-netsplit-mode: t
  erc-ring-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-autojoin-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-readonly-mode: t
  erc-scrolltobottom-mode: t
  jabber-activity-mode: t
  show-paren-mode: t
  display-time-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  auto-fill-function: message-do-auto-fill
  transient-mark-mode: t
  abbrev-mode: t

Load-path shadows:
/home/mfabian/emacs-packages/woman hides /packages/stow/emacs-master-20200226/share/emacs/28.0.50/lisp/woman
/home/mfabian/emacs-packages/xt-mouse hides /packages/stow/emacs-master-20200226/share/emacs/28.0.50/lisp/xt-mouse
/home/mfabian/emacs/find-dired hides /packages/stow/emacs-master-20200226/share/emacs/28.0.50/lisp/find-dired
/home/mfabian/emacs/refill hides /packages/stow/emacs-master-20200226/share/emacs/28.0.50/lisp/textmodes/refill

Features:
(shadow emacsbug mm-archive jka-compr canlock sort gnus-cite mail-extr
gnus-bcklg misearch multi-isearch gnus-async qp gnus-ml disp-table
gnus-topic cursor-sensor utf-7 nndraft nnmh network-stream nsm nnml
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-cache
gnus-demon nntp smtpmail sendmail external-abook nnir gnus-msg gnus-art
mm-uu mml2015 mm-view mml-smime smime dig gnus-sum url url-proxy
url-privacy url-expand url-methods url-history shr url-cookie url-domsuf
url-util url-parse url-vars svg gnus-group gnus-undo gnus-start
gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo parse-time iso8601
gnus-spec gnus-int gnus-range message rmc rfc822 mml mml-sec epa epg
epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums text-property-search
mail-utils mm-util mail-prsvr ibuf-ext ibuffer ibuffer-loaddefs server
edit-server quail erc-networks erc-menu erc-list erc-pcomplete pcomplete
erc-autoaway erc-log erc-button browse-url erc-netsplit erc-ring
erc-fill erc-stamp erc-track cl-extra help-mode sauron-erc sauron
derived erc-match erc-join erc-goodies erc erc-backend erc-compat
auth-source eieio eieio-core eieio-loaddefs password-cache json map
thingatpt pp erc-loaddefs jabber jabber-libnotify dbus jabber-awesome
jabber-osd jabber-wmii jabber-xmessage jabber-festival jabber-sawfish
jabber-ratpoison jabber-screen jabber-socks5 jabber-ft-server
jabber-si-server jabber-ft-client jabber-ft-common jabber-si-client
jabber-si-common jabber-feature-neg jabber-truncate jabber-time
jabber-autoaway time-date subr-x jabber-vcard-avatars jabber-chatstates
jabber-events jabber-vcard jabber-avatar mailcap jabber-activity
jabber-watch jabber-modeline advice jabber-ahc-presence jabber-ahc
jabber-version jabber-ourversion jabber-muc-nick-completion hippie-exp
comint ansi-color ring jabber-browse jabber-search jabber-register
jabber-roster format-spec jabber-presence jabber-muc
jabber-muc-nick-coloring assoc hexrgb jabber-newdisco jabber-widget
jabber-disco jabber-chat jabber-history jabber-chatbuffer jabber-alert
jabber-iq jabber-core jabber-console sgml-mode dom ewoc jabber-keymap
jabber-sasl sasl sasl-anonymous sasl-login sasl-plain fsm jabber-logon
jabber-conn srv dns tls gnutls puny seq byte-opt bytecomp byte-compile
cconv jabber-xml xml jabber-menu jabber-autoloads jabber-util starttls
footnote rx w3m-cookie w3m easymenu timezone w3m-hist w3m-fb easy-mmode
w3m-ems mule-util w3m-ccl ccl w3m-favicon w3m-image cl-seq w3m-proc
w3m-util wid-edit cl-macs cl gv edmacro kmacro cl-loaddefs cl-lib
find-dired dired dired-loaddefs ispell paren avoid time tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win
x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit
x multi-tty make-network-process emacs)

Memory information:
((conses 16 1335259 111919)
 (symbols 48 25134 2)
 (strings 32 100843 24645)
 (string-bytes 1 2730315)
 (vectors 16 51368)
 (vector-slots 8 1397567 305406)
 (floats 8 363 323)
 (intervals 56 14489 1377)
 (buffers 1000 80))

-- 
Mike FABIAN <[email-masked]>