* bug#39799: 28.0.50; Most emoji sequences don’t render correctly @ 2020-02-26 14:28 Mike FABIAN 2020-02-28 7:14 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-26 14:28 UTC (permalink / raw) To: 39799 [-- Attachment #1: Type: text/plain, Size: 8424 bytes --] 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 <mfabian@redhat.com> [-- Attachment #2: emacs-color-emoji.png --] [-- Type: image/png, Size: 30451 bytes --] ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-26 14:28 bug#39799: 28.0.50; Most emoji sequences don’t render correctly Mike FABIAN @ 2020-02-28 7:14 ` Eli Zaretskii 2020-02-28 7:36 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 7:14 UTC (permalink / raw) To: Mike FABIAN; +Cc: 39799 > From: Mike FABIAN <mfabian@redhat.com> > 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 Not 2, 3. Look more closely, and you will see that the U+200D ZWJ character is displayed as a thin (1-pixel) space between the 2 emoji. > 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). That's just a matter of setting up composition-function-table to support these sequences. For example, try the above again after evaluating: (set-char-table-range composition-function-table '(#x1F9B0 . #x1F9B3) (list (vector "[\U0001F468-\U0001F469]\u200D[\U0001F9B0-\U0001F9B3]" 2 'compose-gstring-for-graphic))) Patches are welcome to convert the emoji-related files in Unicode's character database into appropriate composition-function-table setup, similar to the example above. Some script to be run at Emacs build time and produce, say, lisp/emoji.el to populate composition-function-table, would be nice (see the Awk scripts in admin/unidata as one source of inspiration). > 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): 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. Thanks. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 7:14 ` Eli Zaretskii @ 2020-02-28 7:36 ` Mike FABIAN 2020-02-28 8:25 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 7:36 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> 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 > > Not 2, 3. Look more closely, and you will see that the U+200D ZWJ > character is displayed as a thin (1-pixel) space between the 2 emoji. Yes. >> 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). > > That's just a matter of setting up composition-function-table to > support these sequences. For example, try the above again after > evaluating: > > (set-char-table-range composition-function-table '(#x1F9B0 . #x1F9B3) > (list > (vector > "[\U0001F468-\U0001F469]\u200D[\U0001F9B0-\U0001F9B3]" > 2 > 'compose-gstring-for-graphic))) Yes, that does indeed work. > Patches are welcome to convert the emoji-related files in Unicode's > character database into appropriate composition-function-table setup, > similar to the example above. Some script to be run at Emacs build > time and produce, say, lisp/emoji.el to populate > composition-function-table, would be nice (see the Awk scripts in > admin/unidata as one source of inspiration). Pango also has a .c file which is generated by a python script from the Unicode emoji data files to make all these sequences known to Pango. I can try to write a script. Would it be OK to use Python for such a script generating emoji.el? >> 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): > > 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. -- Mike FABIAN <mfabian@redhat.com> ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 7:36 ` Mike FABIAN @ 2020-02-28 8:25 ` Eli Zaretskii 2020-02-28 12:21 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 8:25 UTC (permalink / raw) To: Mike FABIAN; +Cc: 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 08:36:10 +0100 > > > Patches are welcome to convert the emoji-related files in Unicode's > > character database into appropriate composition-function-table setup, > > similar to the example above. Some script to be run at Emacs build > > time and produce, say, lisp/emoji.el to populate > > composition-function-table, would be nice (see the Awk scripts in > > admin/unidata as one source of inspiration). > > Pango also has a .c file which is generated by a python script from > the Unicode emoji data files to make all these sequences known to Pango. > > I can try to write a script. Would it be OK to use Python for such a > script generating emoji.el? I'd prefer not to add Python as prerequisite for building Emacs. We already use Awk, so using that'd be fine. Alternatively, we could do it in Emacs Lisp, similar to unidata-gen.el, but that requires some care because we cannot run Lisp programs until we have some version of Emacs. > > 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. Maybe in a Cairo build. Or maybe I'm missing something. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 8:25 ` Eli Zaretskii @ 2020-02-28 12:21 ` Robert Pluim 2020-02-28 12:46 ` Mike FABIAN 2020-02-28 13:08 ` Eli Zaretskii 0 siblings, 2 replies; 104+ messages in thread From: Robert Pluim @ 2020-02-28 12:21 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, Mike FABIAN [-- Attachment #1: Type: text/plain, Size: 2263 bytes --] >>>>> On Fri, 28 Feb 2020 10:25:22 +0200, Eli Zaretskii <eliz@gnu.org> said: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: 39799@debbugs.gnu.org >> Date: Fri, 28 Feb 2020 08:36:10 +0100 >> >> > Patches are welcome to convert the emoji-related files in Unicode's >> > character database into appropriate composition-function-table setup, >> > similar to the example above. Some script to be run at Emacs build >> > time and produce, say, lisp/emoji.el to populate >> > composition-function-table, would be nice (see the Awk scripts in >> > admin/unidata as one source of inspiration). >> >> Pango also has a .c file which is generated by a python script from >> the Unicode emoji data files to make all these sequences known to Pango. >> >> I can try to write a script. Would it be OK to use Python for such a >> script generating emoji.el? Eli> I'd prefer not to add Python as prerequisite for building Emacs. We Eli> already use Awk, so using that'd be fine. 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? Robert [-- Attachment #2: emoji-zwj.awk --] [-- Type: text/plain, Size: 2285 bytes --] #!/usr/bin/awk -f ## Copyright (C) 2020 Free Software Foundation, Inc. ## Author: Robert Pluim <rpluim@gmail.com> ## This file is part of GNU Emacs. ## GNU Emacs is free software: you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## GNU Emacs is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## You should have received a copy of the GNU General Public License ## along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. ### Commentary: ## This script takes as input Unicode's emoji-zwj-sequences.txt ## (https://www.unicode.org/Public/emoji/12.0/emoji-zwj-sequences.txt) ## and produces output for Emacs's lisp/international/emoji-zwj.el. ## For additional details, see <https://debbugs.gnu.org/39799#8>. ## Things to do after installing a new version of emoji-zwj-sequences.txt: ## Check the output against the old output. ### Code: /^[0-9A-F]/ { sub(/ *;.*/, "", $0) num = split($0, elts) if (ch[elts[1]] == "") { vec[elts[1]] = "" ch[elts[1]] = elts[1] } else { vec[elts[1]] = vec[elts[1]] " " } vec[elts[1]] = vec[elts[1]] "\"" for (j = 1; j <= num; j++) { c = sprintf("\\N{U+%s}", elts[j]) vec[elts[1]] = vec[elts[1]] c } vec[elts[1]] = vec[elts[1]] "\"" } END { print ";;; emoji-zwj.el --- emoji zwj character composition table" print ";;; Automatically generated from admin/unidata/emoji-zwj-sequences.txt" print "(dolist (elt '(" for (elt in ch) { printf("(#x%s . (%s))\n", elt, vec[elt]) } print " ))" print " (set-char-table-range composition-function-table" print " (car elt)" print " (list (vector (regexp-opt (cdr elt))" print " 0" print " 'compose-gstring-for-graphic))))" print "\n" print "(provide 'emoji-zwj)" } [-- Attachment #3: emoji-zwj.el --] [-- Type: application/emacs-lisp, Size: 48758 bytes --] ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 12:21 ` Robert Pluim @ 2020-02-28 12:46 ` Mike FABIAN 2020-02-28 13:19 ` Robert Pluim 2020-02-28 13:08 ` Eli Zaretskii 1 sibling, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 12:46 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 [-- Attachment #1: Type: text/plain, Size: 2015 bytes --] Robert Pluim <rpluim@gmail.com> さんはかきました: > 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 <mfabian@redhat.com> [-- Attachment #2: emacs-default-emoji.png --] [-- Type: image/png, Size: 35919 bytes --] [-- Attachment #3: emacs-color-emoji.png --] [-- Type: image/png, Size: 38579 bytes --] ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 12:46 ` Mike FABIAN @ 2020-02-28 13:19 ` Robert Pluim 2020-02-28 13:50 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2020-02-28 13:19 UTC (permalink / raw) To: Mike FABIAN; +Cc: 39799 >>>>> On Fri, 28 Feb 2020 13:46:50 +0100, Mike FABIAN <mfabian@redhat.com> said: >> Iʼm not seeing colour emoji in a -Q Cairo build. Which sequence is this >> again? Mike> To check the colour, almost any emoji will work, it doesn’t have to be a Mike> sequence. For example, I see these in colour: Mike> 👩🦰 U+1F469 U+200D U+1F9B0 woman: red hair Mike> 🧑🦰 U+1F9D1 U+200D U+1F9B0 person: red hair Mike> 😇 U+1F607 Mike> When I start "emacs -Q" (cairo build from current git master), I Mike> see the emoji first in black and white as in the attached Mike> emacs-default-emoji.png. Mike> Then, after evaluating: Mike> (set-fontset-font t '(#x10000 . #x1FFFF) '("Noto Color Emoji" . "unicode-bmp") nil 'prepend) Mike> I see them in colour. Mike> So I have put Mike> (set-fontset-font t '(#x10000 . #x1FFFF) '("Noto Color Emoji" . "unicode-bmp") nil 'prepend) Mike> in my init file. OK, so you were changing the fontsets. That matches what I see. Hmm, is "Symbola" still a good fallback font? Or should we add "Noto Color Emoji" or similar in front of it? Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 13:19 ` Robert Pluim @ 2020-02-28 13:50 ` Mike FABIAN 2020-02-28 13:56 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 13:50 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 Robert Pluim <rpluim@gmail.com> さんはかきました: > Hmm, is "Symbola" still a good fallback font? Or should we add "Noto > Color Emoji" or similar in front of it? I think "Noto Color Emoji" is nicer than "Symbola" if available. The emoji look much nicer in colour, much easier to distinguish. I think Symbola is a good black and white fallback if no colour emoji font is available. Unfortunately the license of Symbola is not free anymore, it used to be but it was recently changed to “strictly personal and non-commercial purposes“: http://users.teilar.gr/~g1951d/License.pdf -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 13:50 ` Mike FABIAN @ 2020-02-28 13:56 ` Eli Zaretskii 2020-02-28 14:44 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 13:56 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: 39799@debbugs.gnu.org, eliz@gnu.org > Date: Fri, 28 Feb 2020 14:50:48 +0100 > > Robert Pluim <rpluim@gmail.com> さんはかきました: > > > Hmm, is "Symbola" still a good fallback font? Or should we add "Noto > > Color Emoji" or similar in front of it? > > I think "Noto Color Emoji" is nicer than "Symbola" if available. > The emoji look much nicer in colour, much easier to distinguish. Symbola covers much more than just Emoji. That was the main reason it was added to fontset.el. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 13:56 ` Eli Zaretskii @ 2020-02-28 14:44 ` Mike FABIAN 0 siblings, 0 replies; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 14:44 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: 39799@debbugs.gnu.org, eliz@gnu.org >> Date: Fri, 28 Feb 2020 14:50:48 +0100 >> >> Robert Pluim <rpluim@gmail.com> さんはかきました: >> >> > Hmm, is "Symbola" still a good fallback font? Or should we add "Noto >> > Color Emoji" or similar in front of it? >> >> I think "Noto Color Emoji" is nicer than "Symbola" if available. >> The emoji look much nicer in colour, much easier to distinguish. > > Symbola covers much more than just Emoji. That was the main reason it > was added to fontset.el. Yes, and I think it should be kept there for all the other symbols. And also as a fallback for emoji if no nicer colour emoji font is installed. Even if the current license is only for personal use, I think it is still good to have Symbola in fontset.el to be able to use it just by installing the font. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 12:21 ` Robert Pluim 2020-02-28 12:46 ` Mike FABIAN @ 2020-02-28 13:08 ` Eli Zaretskii 2020-02-28 13:47 ` Mike FABIAN 2020-02-28 14:14 ` Robert Pluim 1 sibling, 2 replies; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 13:08 UTC (permalink / raw) To: Robert Pluim, Glenn Morris; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: Mike FABIAN <mfabian@redhat.com>, 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 13:21:59 +0100 > > Eli> I'd prefer not to add Python as prerequisite for building Emacs. We > Eli> already use Awk, so using that'd be fine. > > I suck at awk, but my attempt is attached. Thanks. I wonder if we could make the output more human-readable... Glenn, any advice or comments? > It DTRT for me under Cairo if I change my fontset settings to use > 'Noto Color Emoji' instead of Symbola for: Is that a free font (it's from Google, AFAIK, so it might not be)? If it is free, we could modify fontset.el to use this font if available. (Or maybe there are better free Emoji fonts out there?) > (#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? I don't think matching backwards is better in general. Did you have a reason for thinking it was? > Weʼd run into the 4-character maximum for that, since some of the > sequences are 7 or more characters long. If the sequences are 7 character long, then the forward-matching pattern will hit the same limitation as well, no? > >> > 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? The ones in http://www.unicode.org/Public/emoji/12.0/emoji-sequences.txt, and specifically the flag sequences and the skin color sequences. At least AFAIU the original report. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 13:08 ` Eli Zaretskii @ 2020-02-28 13:47 ` Mike FABIAN 2020-02-28 13:54 ` Eli Zaretskii 2020-02-28 14:14 ` Robert Pluim 1 sibling, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 13:47 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Robert Pluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> It DTRT for me under Cairo if I change my fontset settings to use >> 'Noto Color Emoji' instead of Symbola for: > > Is that a free font (it's from Google, AFAIK, so it might not be)? If > it is free, we could modify fontset.el to use this font if available. > (Or maybe there are better free Emoji fonts out there?) “Noto Color Emoji” is free (Apache 2.0 License): https://github.com/googlefonts/noto-emoji/blob/master/LICENSE “Joypixels” is also a nice colour emoji font, but it is *not* free: https://d1j8pt39hxlh3d.cloudfront.net/contracts/finalized-pdfs/free-5.1.pdf (free only for personal use). The nice black and white emoji font “Symbola” is unfortunately not free either, see: http://users.teilar.gr/~g1951d/License.pdf free for “strictly personal and non-commercial purposes”. -- Mike FABIAN <mfabian@redhat.com> ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 13:47 ` Mike FABIAN @ 2020-02-28 13:54 ` Eli Zaretskii 0 siblings, 0 replies; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 13:54 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: Robert Pluim <rpluim@gmail.com>, Glenn Morris <rgm@gnu.org>, > 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 14:47:40 +0100 > > Eli Zaretskii <eliz@gnu.org> さんはかきました: > > >> It DTRT for me under Cairo if I change my fontset settings to use > >> 'Noto Color Emoji' instead of Symbola for: > > > > Is that a free font (it's from Google, AFAIK, so it might not be)? If > > it is free, we could modify fontset.el to use this font if available. > > (Or maybe there are better free Emoji fonts out there?) > > “Noto Color Emoji” is free (Apache 2.0 License): > https://github.com/googlefonts/noto-emoji/blob/master/LICENSE > > “Joypixels” is also a nice colour emoji font, but it is *not* free: > > https://d1j8pt39hxlh3d.cloudfront.net/contracts/finalized-pdfs/free-5.1.pdf > > (free only for personal use). Thanks for the info. > The nice black and white emoji font “Symbola” is unfortunately not free > either, see: > > http://users.teilar.gr/~g1951d/License.pdf > > free for “strictly personal and non-commercial purposes”. That's the latest version, AFAIK; older versions were free, and can still be found on the Internet. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 13:08 ` Eli Zaretskii 2020-02-28 13:47 ` Mike FABIAN @ 2020-02-28 14:14 ` Robert Pluim 2020-02-28 14:45 ` Eli Zaretskii ` (2 more replies) 1 sibling, 3 replies; 104+ messages in thread From: Robert Pluim @ 2020-02-28 14:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, mfabian >>>>> On Fri, 28 Feb 2020 15:08:59 +0200, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: Mike FABIAN <mfabian@redhat.com>, 39799@debbugs.gnu.org >> Date: Fri, 28 Feb 2020 13:21:59 +0100 >> Eli> I'd prefer not to add Python as prerequisite for building Emacs. We Eli> already use Awk, so using that'd be fine. >> >> I suck at awk, but my attempt is attached. Eli> Thanks. I wonder if we could make the output more human-readable... Eli> Glenn, any advice or comments? Why does it need to be human-readable? The other files generated from the unicode data are not particularly readable. >> It DTRT for me under Cairo if I change my fontset settings to use >> 'Noto Color Emoji' instead of Symbola for: Eli> Is that a free font (it's from Google, AFAIK, so it might not be)? If Eli> it is free, we could modify fontset.el to use this font if available. Eli> (Or maybe there are better free Emoji fonts out there?) Its license is Apache 2.0. It seems fairly popular. I have no opinion either way. >> (#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? Eli> I don't think matching backwards is better in general. Did you have a Eli> reason for thinking it was? I thought I saw a comment in composite.c that says matching is done backward, but I see that itʼs done forwards as well. >> Weʼd run into the 4-character maximum for that, since some of the >> sequences are 7 or more characters long. Eli> If the sequences are 7 character long, then the forward-matching Eli> pattern will hit the same limitation as well, no? C-h v composition-function-table says: PREV-CHARS is a non-negative integer (less than 4) specifying how many characters before C to check the matching with PATTERN. If it is 0, PATTERN must match C and the following characters. If it is 1, PATTERN must match a character before C and the following characters. which on careful re-reading says that the lookback canʼt be more than 3 characters, but that matching forward has no limit. Eli> The ones in http://www.unicode.org/Public/emoji/12.0/emoji-sequences.txt, Eli> and specifically the flag sequences and the skin color sequences. At Eli> least AFAIU the original report. As Mike clarified, you need to change the fontsets in order to get them to display in colour (uncomposed, of course). Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 14:14 ` Robert Pluim @ 2020-02-28 14:45 ` Eli Zaretskii 2020-02-28 15:32 ` Mike FABIAN 2020-02-28 15:39 ` Robert Pluim 2020-02-28 14:46 ` Eli Zaretskii 2020-02-28 16:19 ` Eli Zaretskii 2 siblings, 2 replies; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 14:45 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: Glenn Morris <rgm@gnu.org>, mfabian@redhat.com, 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 15:14:01 +0100 > > >> It DTRT for me under Cairo if I change my fontset settings to use > >> 'Noto Color Emoji' instead of Symbola for: > > Eli> Is that a free font (it's from Google, AFAIK, so it might not be)? If > Eli> it is free, we could modify fontset.el to use this font if available. > Eli> (Or maybe there are better free Emoji fonts out there?) > > Its license is Apache 2.0. It seems fairly popular. I have no opinion > either way. What about the fact that we still support XFT? And anyway, the name "Noto Color Emoji" seems to imply it's a font created to display Emoji, not symbols in general, let alone non-symbol blocks we currently set up to use Symbola if that is available. > >> Weʼd run into the 4-character maximum for that, since some of the > >> sequences are 7 or more characters long. > > Eli> If the sequences are 7 character long, then the forward-matching > Eli> pattern will hit the same limitation as well, no? > > C-h v composition-function-table says: > > PREV-CHARS is a non-negative integer (less than 4) specifying how many > characters before C to check the matching with PATTERN. If it is 0, > PATTERN must match C and the following characters. If it is 1, > PATTERN must match a character before C and the following characters. > > which on careful re-reading says that the lookback canʼt be more than > 3 characters, but that matching forward has no limit. Depends on the patterns used, I guess. > Eli> The ones in http://www.unicode.org/Public/emoji/12.0/emoji-sequences.txt, > Eli> and specifically the flag sequences and the skin color sequences. At > Eli> least AFAIU the original report. > > As Mike clarified, you need to change the fontsets in order to get > them to display in colour (uncomposed, of course). I don't see how that is relevant. Fontsets are just means to cause Emacs use a certain font for a certain range of characters. Fontsets do not affect color Emoji support. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 14:45 ` Eli Zaretskii @ 2020-02-28 15:32 ` Mike FABIAN 2020-02-28 15:57 ` Robert Pluim 2020-02-28 15:39 ` Robert Pluim 1 sibling, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 15:32 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Robert Pluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: Glenn Morris <rgm@gnu.org>, mfabian@redhat.com, 39799@debbugs.gnu.org >> Date: Fri, 28 Feb 2020 15:14:01 +0100 >> >> >> It DTRT for me under Cairo if I change my fontset settings to use >> >> 'Noto Color Emoji' instead of Symbola for: >> >> Eli> Is that a free font (it's from Google, AFAIK, so it might not be)? If >> Eli> it is free, we could modify fontset.el to use this font if available. >> Eli> (Or maybe there are better free Emoji fonts out there?) >> >> Its license is Apache 2.0. It seems fairly popular. I have no opinion >> either way. > > What about the fact that we still support XFT? Is it possible to set up the fontsets by default in a way that colour emoji fonts like "Noto Color Emoji" can be used by default in a cairo build but avoided by default in an XFT build? > And anyway, the name "Noto Color Emoji" seems to imply it's a font > created to display Emoji, not symbols in general, let alone non-symbol > blocks we currently set up to use Symbola if that is available. Yes, if possible, "Noto Color Emoji" should be preferred for the emoji but Symbola should be preferred for all the other symbols. >> As Mike clarified, you need to change the fontsets in order to get >> them to display in colour (uncomposed, of course). > > I don't see how that is relevant. Fontsets are just means to cause > Emacs use a certain font for a certain range of characters. Fontsets > do not affect color Emoji support. Yes, so if you change the fontset to use a colour emoji font for a certain range of characters (which should be emoji), these emoji will display in colour in a cairo build. I am not sure what happens in an XFT build, if possible such unsupported fonts should be ignored in an XFT build. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 15:32 ` Mike FABIAN @ 2020-02-28 15:57 ` Robert Pluim 0 siblings, 0 replies; 104+ messages in thread From: Robert Pluim @ 2020-02-28 15:57 UTC (permalink / raw) To: Mike FABIAN; +Cc: 39799 >>>>> On Fri, 28 Feb 2020 16:32:39 +0100, Mike FABIAN <mfabian@redhat.com> said: Mike> Eli Zaretskii <eliz@gnu.org> さんはかきました: >>> From: Robert Pluim <rpluim@gmail.com> >>> Cc: Glenn Morris <rgm@gnu.org>, mfabian@redhat.com, 39799@debbugs.gnu.org >>> Date: Fri, 28 Feb 2020 15:14:01 +0100 >>> >>> >> It DTRT for me under Cairo if I change my fontset settings to use >>> >> 'Noto Color Emoji' instead of Symbola for: >>> Eli> Is that a free font (it's from Google, AFAIK, so it might not be)? If Eli> it is free, we could modify fontset.el to use this font if available. Eli> (Or maybe there are better free Emoji fonts out there?) >>> >>> Its license is Apache 2.0. It seems fairly popular. I have no opinion >>> either way. >> >> What about the fact that we still support XFT? Mike> Is it possible to set up the fontsets by default in a way that colour Mike> emoji fonts like "Noto Color Emoji" can be used by default in a cairo Mike> build but avoided by default in an XFT build? Iʼm not sure. I donʼt think we have a (featurep 'xft) or similar, and parsing system-configuration-features is just icky. Itʼs possible that adding Noto Color Emoji to a fontset will just result in it being ignored in an XFT build. Itʼs not something Iʼve tested. Mike> Yes, so if you change the fontset to use a colour emoji font for a Mike> certain range of characters (which should be emoji), these emoji will Mike> display in colour in a cairo build. Mike> I am not sure what happens in an XFT build, if possible such unsupported Mike> fonts should be ignored in an XFT build. Colour fonts are ignored in an XFT build, period. Fonts that are colour fonts but donʼt get classified as such by fontconfig (such as "Noto Color Emoji") get added to face-ignored-fonts as and when we discover them. Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 14:45 ` Eli Zaretskii 2020-02-28 15:32 ` Mike FABIAN @ 2020-02-28 15:39 ` Robert Pluim 2020-02-28 16:38 ` Mike FABIAN 1 sibling, 1 reply; 104+ messages in thread From: Robert Pluim @ 2020-02-28 15:39 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, mfabian >>>>> On Fri, 28 Feb 2020 16:45:04 +0200, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: Glenn Morris <rgm@gnu.org>, mfabian@redhat.com, 39799@debbugs.gnu.org >> Date: Fri, 28 Feb 2020 15:14:01 +0100 >> >> >> It DTRT for me under Cairo if I change my fontset settings to use >> >> 'Noto Color Emoji' instead of Symbola for: >> Eli> Is that a free font (it's from Google, AFAIK, so it might not be)? If Eli> it is free, we could modify fontset.el to use this font if available. Eli> (Or maybe there are better free Emoji fonts out there?) >> >> Its license is Apache 2.0. It seems fairly popular. I have no opinion >> either way. Eli> What about the fact that we still support XFT? I try to forget that :-) Eli> And anyway, the name "Noto Color Emoji" seems to imply it's a font Eli> created to display Emoji, not symbols in general, let alone non-symbol Eli> blocks we currently set up to use Symbola if that is available. Right. Thereʼs a Noto Emoji font as well. >> As Mike clarified, you need to change the fontsets in order to get >> them to display in colour (uncomposed, of course). Eli> I don't see how that is relevant. Fontsets are just means to cause Eli> Emacs use a certain font for a certain range of characters. Fontsets Eli> do not affect color Emoji support. They donʼt, no, but in this case changing the fontset was enough to get the right glyphs to display. Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 15:39 ` Robert Pluim @ 2020-02-28 16:38 ` Mike FABIAN 0 siblings, 0 replies; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 16:38 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 Robert Pluim <rpluim@gmail.com> さんはかきました: > Eli> And anyway, the name "Noto Color Emoji" seems to imply it's a font > Eli> created to display Emoji, not symbols in general, let alone non-symbol > Eli> blocks we currently set up to use Symbola if that is available. > > Right. Thereʼs a Noto Emoji font as well. That has not been updated for a very long time though. Maybe it is dead. -- Mike FABIAN <mfabian@redhat.com> ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 14:14 ` Robert Pluim 2020-02-28 14:45 ` Eli Zaretskii @ 2020-02-28 14:46 ` Eli Zaretskii 2020-02-28 15:35 ` Robert Pluim 2020-02-28 16:19 ` Eli Zaretskii 2 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 14:46 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: Glenn Morris <rgm@gnu.org>, mfabian@redhat.com, 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 15:14:01 +0100 > > Eli> Thanks. I wonder if we could make the output more human-readable... > Eli> Glenn, any advice or comments? > > Why does it need to be human-readable? The other files generated from > the unicode data are not particularly readable. Readability is desirable because the file will be read by humans. Which other files are not readable? I had charscript.el in mind, and that one is quite readable. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 14:46 ` Eli Zaretskii @ 2020-02-28 15:35 ` Robert Pluim 2020-02-28 15:44 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2020-02-28 15:35 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, mfabian >>>>> On Fri, 28 Feb 2020 16:46:30 +0200, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: Glenn Morris <rgm@gnu.org>, mfabian@redhat.com, 39799@debbugs.gnu.org >> Date: Fri, 28 Feb 2020 15:14:01 +0100 >> Eli> Thanks. I wonder if we could make the output more human-readable... Eli> Glenn, any advice or comments? >> >> Why does it need to be human-readable? The other files generated from >> the unicode data are not particularly readable. Eli> Readability is desirable because the file will be read by humans. Hmm, maybe. I guess we could process it in elisp to replace the characters with their names, and adding extra newlines is trivial. What other kind of changes did you have in mind? Eli> Which other files are not readable? I had charscript.el in mind, and Eli> that one is quite readable. I had uni-bidi.el in mind, and thatʼs just a dump of a char-table. Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 15:35 ` Robert Pluim @ 2020-02-28 15:44 ` Eli Zaretskii 2020-02-28 16:24 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 15:44 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: 39799@debbugs.gnu.org, mfabian@redhat.com > Date: Fri, 28 Feb 2020 16:35:17 +0100 > > Eli> Readability is desirable because the file will be read by humans. > > Hmm, maybe. I guess we could process it in elisp to replace the > characters with their names, and adding extra newlines is > trivial. What other kind of changes did you have in mind? Just adding newlines, I think. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 15:44 ` Eli Zaretskii @ 2020-02-28 16:24 ` Robert Pluim 2020-02-28 17:30 ` Mike FABIAN 2020-02-28 20:13 ` Eli Zaretskii 0 siblings, 2 replies; 104+ messages in thread From: Robert Pluim @ 2020-02-28 16:24 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, mfabian >>>>> On Fri, 28 Feb 2020 17:44:08 +0200, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: 39799@debbugs.gnu.org, mfabian@redhat.com >> Date: Fri, 28 Feb 2020 16:35:17 +0100 >> Eli> Readability is desirable because the file will be read by humans. >> >> Hmm, maybe. I guess we could process it in elisp to replace the >> characters with their names, and adding extra newlines is >> trivial. What other kind of changes did you have in mind? Eli> Just adding newlines, I think. OK. Iʼll work on that and the required makefile changes. One thing this has thrown up that I donʼt understand is this: Most of the emojis in emoji-sequences.txt can be made to use Noto Color Emoji, but some canʼt. e.g. #x24c2 Ⓜ is stubbornly not being displayed using Noto Color Emoji, even though that font has a glyph for it, and Iʼve added: (set-fontset-font "fontset-default" symbol-subgroup '("Noto Color Emoji" . "iso10646-1") nil 'prepend) just after the similar setting for Symbola in lisp/international/fontset.el Itʼs not being displayed with the default font, and setting use-default-font-for-symbols to nil makes no difference. Itʼs using: ftcrhb:-GOOG-Noto Sans CJK JP-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 (#x3F8) However, if I eval (set-fontset-font nil #x24c2 '("Noto Color Emoji" . "iso10646-1") nil 'prepend) in the frame displaying the character, then it does use Noto Color Emoji. What am I missing? Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 16:24 ` Robert Pluim @ 2020-02-28 17:30 ` Mike FABIAN 2020-02-28 17:55 ` Mike FABIAN ` (2 more replies) 2020-02-28 20:13 ` Eli Zaretskii 1 sibling, 3 replies; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 17:30 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 Robert Pluim <rpluim@gmail.com> さんはかきました: > One thing this has thrown up that I donʼt understand is this: > > Most of the emojis in emoji-sequences.txt can be made to use Noto > Color Emoji, but some canʼt. e.g. > > #x24c2 Ⓜ > > is stubbornly not being displayed using Noto Color Emoji, even though > that font has a glyph for it, and Iʼve added: > > (set-fontset-font "fontset-default" symbol-subgroup > '("Noto Color Emoji" . "iso10646-1") nil > 'prepend) > > just after the similar setting for Symbola in > lisp/international/fontset.el > > Itʼs not being displayed with the default font, and setting > use-default-font-for-symbols to nil makes no difference. Itʼs using: > > ftcrhb:-GOOG-Noto Sans CJK JP-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 (#x3F8) > > However, if I > eval > > (set-fontset-font nil #x24c2 > '("Noto Color Emoji" . "iso10646-1") nil > 'prepend) > > in the frame displaying the character, then it does use Noto Color > Emoji. What am I missing? > > Robert U+24C2 is an Emoji which has both a text and an emoji presentation. See: http://unicode.org/reports/tr51/#Emoji_Variation_Selector_Notes http://unicode.org/reports/tr51/#def_fully_qualified_emoji_zwj_sequence http://unicode.org/reports/tr51/#def_non_fully_qualified_emoji_zwj_sequence http://www.unicode.org/Public/emoji/12.0/emoji-data.txt U+1F600 is an emoji, which has only emoji representation: $ grep 1F600 emoji-data.txt 1F600 ; Emoji # E1.0 [1] (😀) grinning face 1F600 ; Emoji_Presentation # E1.0 [1] (😀) grinning face 1F600 ; Extended_Pictographic# E1.0 [1] (😀) grinning face It displays without problems in colour in my Emacs. Note that U+24C2 does not have the "Emoji_Presentation" tag: $ grep 24C2 emoji-data.txt 24C2 ; Emoji # E0.6 [1] (Ⓜ️) circled M 24C2 ; Extended_Pictographic# E0.6 [1] (Ⓜ️) circled M It has to variations, text representation and emoji representation: $ grep 24C2 emoji-variation-sequences.txt 24C2 FE0E ; text style; # (1.1) CIRCLED LATIN CAPITAL LETTER M 24C2 FE0F ; emoji style; # (1.1) CIRCLED LATIN CAPITAL LETTER M (U+1F600 is not in emoji-variation-sequences.txt as it has only emoji representation). $ grep 1F600 emoji-test.txt 1F600 ; fully-qualified # 😀 E1.0 grinning face $ grep 24C2 emoji-test.txt 24C2 FE0F ; fully-qualified # Ⓜ️ E0.6 circled M 24C2 ; unqualified # Ⓜ E0.6 circled M $ As you can see above, U+1F600 is already fully-qualified on its own. If I test in gedit, U+24C2 on its own is displayed in black and white (happens to use "MS Gothic" font on my system). U+24C2 U+FE0E is displayed in black and white in gedit as well. U+24C2 U+FE0F is displayed in colour in gedit using the "Noto Color Emoji" font. These selectors don’t work in Emacs for me. U+24C2, U+24C2 U+FE0E, and U+24C2 U+FE0F *all* display in black and white for me in Emacs. The selectors are displayed as a narrow box. The presence of such selectors in a currently visible buffer make my Emacs extremely slow and unresponsive, I can hardly finish typing this e-mail. If I switch to some other buffer so that no such selectors are currently visible, my Emacs is responsive. Now that I switched back to this buffer to send this e-mail, it is terribly slow again. Same problem when one of the Unicode emoji data files is displayed which contains these selectors. Emacs becomes unusably slow. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 17:30 ` Mike FABIAN @ 2020-02-28 17:55 ` Mike FABIAN 2020-02-28 18:01 ` Robert Pluim 2020-02-28 20:21 ` Eli Zaretskii 2 siblings, 0 replies; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 17:55 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 [-- Attachment #1: Type: text/plain, Size: 1347 bytes --] Mike FABIAN <mfabian@redhat.com> さんはかきました: > U+24C2 is an Emoji which has both a text and an emoji presentation. See: Surprisingly, even some ASCII characters are emoji and have a text and an emoji representation. For example # U+0023: $ grep 0023 emoji-data.txt 0023 ; Emoji # E0.0 [1] (#️) number sign 0023 ; Emoji_Component # E0.0 [1] (#️) number sign $ Is listed as an Emoji but does not have Emoji_Presentation tag, so it should usually be displayed as text when not followed by a variation selector. $ grep 0023 emoji-variation-sequences.txt 0023 FE0E ; text style; # (1.1) NUMBER SIGN 0023 FE0F ; emoji style; # (1.1) NUMBER SIGN When testing this in gedit, U+23 displays as text using the “DejaVu Sans” font. U+23 U+FE0E displays as text using the “DejaVu Sans” font. U+23 U+FE0F displays as an emoji using the “Noto Color Emoji” Font. With the “Noto Color Emoji” font this is not very obvious as the glyph for # in that font looks quite similar to the text version. My “emoji-picker” tool displays it the same way as gedit as it also uses pango, see the 3 attached screenshot showing how it looks like in DejaVu Sans, Noto Color Emoji, and Joypixels. -- Mike FABIAN <mfabian@redhat.com> [-- Attachment #2: hash-shown-as-emoji-with-joypixels-font.png --] [-- Type: image/png, Size: 93267 bytes --] [-- Attachment #3: hash-shown-as-emoji-with-noto-color-emoji-font.png --] [-- Type: image/png, Size: 69053 bytes --] [-- Attachment #4: hash-shown-as-text-with-dejavu-sans-font.png --] [-- Type: image/png, Size: 67315 bytes --] ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 17:30 ` Mike FABIAN 2020-02-28 17:55 ` Mike FABIAN @ 2020-02-28 18:01 ` Robert Pluim 2020-02-28 19:29 ` Mike FABIAN ` (2 more replies) 2020-02-28 20:21 ` Eli Zaretskii 2 siblings, 3 replies; 104+ messages in thread From: Robert Pluim @ 2020-02-28 18:01 UTC (permalink / raw) To: Mike FABIAN; +Cc: 39799 >>>>> On Fri, 28 Feb 2020 18:30:12 +0100, Mike FABIAN <mfabian@redhat.com> 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 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 18:01 ` Robert Pluim @ 2020-02-28 19:29 ` Mike FABIAN 2020-02-28 19:34 ` Mike FABIAN 2020-02-28 21:32 ` Mike FABIAN 2 siblings, 0 replies; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 19:29 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 Robert Pluim <rpluim@gmail.com> さんはかきました: > OK. How do you determine which font is being used in gedit? By comparing how it looks like in gedit with how it looks like in my own little emoji-tool “emoji-picker”. “emoji-picker” uses the same rendering stack as gedit (harfbuzz, cairo, pango). As you can see in the screenshots of “emoji-picker” attached to my last mail, when I right click on an emoji I get a popup with some information about that emoji where I also display which font was actually used to render that emoji. That might be a different font from what was requested in the font menu of emoji-picker. A bit similar how you can check in Emacs with “C-u C-x =” what font was really used for the character under the cursor. In “emoji-picker” I can see that parts of an emoji-sequence are sometimes even rendered in several different fonts if this sequence was recently added by Unicode and Pango does not know it yet. https://github.com/mike-fabian/ibus-typing-booster/blob/master/engine/itb_pango.py#L114 -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 18:01 ` Robert Pluim 2020-02-28 19:29 ` Mike FABIAN @ 2020-02-28 19:34 ` Mike FABIAN 2020-02-28 21:32 ` Mike FABIAN 2 siblings, 0 replies; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 19:34 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 Robert Pluim <rpluim@gmail.com> さんはかきました: > 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. > > Can you try my patch from > <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=39133#41> ? I probably > should have pushed it already... Trying, building with your patch now ... -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 18:01 ` Robert Pluim 2020-02-28 19:29 ` Mike FABIAN 2020-02-28 19:34 ` Mike FABIAN @ 2020-02-28 21:32 ` Mike FABIAN 2020-02-28 21:38 ` Robert Pluim 2 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 21:32 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 Robert Pluim <rpluim@gmail.com> さんはかきました: > 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. > Can you try my patch from > <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=39133#41> ? I probably > should have pushed it already... Great, that makes it fast again. With this patch, I can type normally in a buffer containing variation selectors. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 21:32 ` Mike FABIAN @ 2020-02-28 21:38 ` Robert Pluim 0 siblings, 0 replies; 104+ messages in thread From: Robert Pluim @ 2020-02-28 21:38 UTC (permalink / raw) To: Mike FABIAN; +Cc: 39799 >>>>> On Fri, 28 Feb 2020 22:32:10 +0100, Mike FABIAN <mfabian@redhat.com> said: Mike> Robert Pluim <rpluim@gmail.com> さんはかきました: 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. >> Can you try my patch from >> <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=39133#41> ? I probably >> should have pushed it already... Mike> Great, that makes it fast again. With this patch, I can type normally Mike> in a buffer containing variation selectors. Thanks for testing. Iʼll push it this weekend sometime. Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 17:30 ` Mike FABIAN 2020-02-28 17:55 ` Mike FABIAN 2020-02-28 18:01 ` Robert Pluim @ 2020-02-28 20:21 ` Eli Zaretskii 2020-02-28 20:25 ` Eli Zaretskii 2020-02-28 21:10 ` Mike FABIAN 2 siblings, 2 replies; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 20:21 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: Eli Zaretskii <eliz@gnu.org>, 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 18:30:12 +0100 > > U+24C2 is an Emoji which has both a text and an emoji presentation. I don't think I understand how this fact is relevant to which font Emacs selects for a character. Can you elaborate on the relation? > If I test in gedit, U+24C2 on its own is displayed in black and white > (happens to use "MS Gothic" font on my system). > U+24C2 U+FE0E is displayed in black and white in gedit as well. > U+24C2 U+FE0F is displayed in colour in gedit using the "Noto Color > Emoji" font. > > These selectors don’t work in Emacs for me. U+24C2, U+24C2 U+FE0E, and > U+24C2 U+FE0F *all* display in black and white for me in Emacs. > > The selectors are displayed as a narrow box. Emacs doesn't yet support display of sequences with variation selectors, although at least some part of the infrastructure is already there, see ftfont_variation_glyphs and similar functions in other HarfBuzz-based font backends. > The presence of such selectors in a currently visible buffer make my > Emacs extremely slow and unresponsive, I can hardly finish typing this > e-mail. Does it help to set inhibit-compacting-font-caches non-nil? ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 20:21 ` Eli Zaretskii @ 2020-02-28 20:25 ` Eli Zaretskii 2020-02-28 21:02 ` Eli Zaretskii 2020-02-28 21:10 ` Mike FABIAN 1 sibling, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 20:25 UTC (permalink / raw) To: mfabian, rpluim; +Cc: 39799 > Date: Fri, 28 Feb 2020 22:21:36 +0200 > From: Eli Zaretskii <eliz@gnu.org> > Cc: rpluim@gmail.com, 39799@debbugs.gnu.org > > Emacs doesn't yet support display of sequences with variation > selectors, although at least some part of the infrastructure is > already there, see ftfont_variation_glyphs and similar functions in > other HarfBuzz-based font backends. Hmm... it's possible I was confused, and the functions I mentioned are unrelated to variation selectors. To see if that's so, try to configure composition-function-table to display such sequences as composed characters, and see what happens when you use a proper font (e.g., the one with which Gedit displays the variations). ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 20:25 ` Eli Zaretskii @ 2020-02-28 21:02 ` Eli Zaretskii 2020-02-28 21:47 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 21:02 UTC (permalink / raw) To: mfabian, rpluim; +Cc: 39799 > Date: Fri, 28 Feb 2020 22:25:44 +0200 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 39799@debbugs.gnu.org > > Hmm... it's possible I was confused, and the functions I mentioned are > unrelated to variation selectors. To see if that's so, try to > configure composition-function-table to display such sequences as > composed characters, and see what happens when you use a proper font > (e.g., the one with which Gedit displays the variations). Looking into this some more reveals that we already have composition-function-table set up for variation selectors, see the end of lisp/language/japanese.el. Not sure why it's in japanese.el, but the code doesn't seem to be specific to Japanese characters, unless I'm missing something. So some debugging is required to understand why we don't display sequences with variation selectors as intended. Maybe DejaVu Sans doesn't support that? What if you try emacs -Q -fn Noto Color Emoji" does Emacs built with HarfBuzz then display the variation sequences as expected? ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 21:02 ` Eli Zaretskii @ 2020-02-28 21:47 ` Robert Pluim 2020-02-28 22:07 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2020-02-28 21:47 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, mfabian >>>>> On Fri, 28 Feb 2020 23:02:12 +0200, Eli Zaretskii <eliz@gnu.org> said: >> Date: Fri, 28 Feb 2020 22:25:44 +0200 >> From: Eli Zaretskii <eliz@gnu.org> >> Cc: 39799@debbugs.gnu.org >> >> Hmm... it's possible I was confused, and the functions I mentioned are >> unrelated to variation selectors. To see if that's so, try to >> configure composition-function-table to display such sequences as >> composed characters, and see what happens when you use a proper font >> (e.g., the one with which Gedit displays the variations). Eli> Looking into this some more reveals that we already have Eli> composition-function-table set up for variation selectors, see the end Eli> of lisp/language/japanese.el. Not sure why it's in japanese.el, but Eli> the code doesn't seem to be specific to Japanese characters, unless Eli> I'm missing something. So some debugging is required to understand Eli> why we don't display sequences with variation selectors as intended. Eli> Maybe DejaVu Sans doesn't support that? What if you try Eli> emacs -Q -fn Noto Color Emoji" Eli> does Emacs built with HarfBuzz then display the variation sequences as Eli> expected? -fn "Noto Color Emoji" doesnʼt change the default font for me for some reason, but if I change the font after startup then those sequences display correctly. (char-table-range composition-function-table #xFE0F) => ([".." 1 compose-gstring-for-variation-glyph]) and #xFE0F is always composable according to composite.c, so I donʼt understand why composing only works with Noto Color Emoji. Or does the font need specific support for it? Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 21:47 ` Robert Pluim @ 2020-02-28 22:07 ` Eli Zaretskii 2020-02-29 7:50 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 22:07 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: mfabian@redhat.com, 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 22:47:36 +0100 > > -fn "Noto Color Emoji" doesnʼt change the default font for me for some > reason, but if I change the font after startup then those sequences > display correctly. > > (char-table-range composition-function-table #xFE0F) > => ([".." 1 compose-gstring-for-variation-glyph]) OK, so this feature already works for suitable fonts. > and #xFE0F is always composable according to composite.c, so I donʼt > understand why composing only works with Noto Color Emoji. Or does the > font need specific support for it? Yes, the font needs to have glyph variations, see font-variation-glyphs and its underlying font-backend method get_variation_glyphs. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 22:07 ` Eli Zaretskii @ 2020-02-29 7:50 ` Mike FABIAN 2020-02-29 9:40 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 7:50 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Robert Pluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: mfabian@redhat.com, 39799@debbugs.gnu.org >> Date: Fri, 28 Feb 2020 22:47:36 +0100 >> >> -fn "Noto Color Emoji" doesnʼt change the default font for me for some >> reason, but if I change the font after startup then those sequences >> display correctly. >> >> (char-table-range composition-function-table #xFE0F) >> => ([".." 1 compose-gstring-for-variation-glyph]) > > OK, so this feature already works for suitable fonts. > >> and #xFE0F is always composable according to composite.c, so I donʼt >> understand why composing only works with Noto Color Emoji. Or does the >> font need specific support for it? > > Yes, the font needs to have glyph variations, see > font-variation-glyphs and its underlying font-backend method > get_variation_glyphs. http://unicode.org/reports/tr51/#Presentation_Style doesn’t seem to say that the fonts should have the variations. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 7:50 ` Mike FABIAN @ 2020-02-29 9:40 ` Eli Zaretskii 2020-02-29 10:45 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-29 9:40 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: Robert Pluim <rpluim@gmail.com>, 39799@debbugs.gnu.org > Date: Sat, 29 Feb 2020 08:50:40 +0100 > > >> and #xFE0F is always composable according to composite.c, so I donʼt > >> understand why composing only works with Noto Color Emoji. Or does the > >> font need specific support for it? > > > > Yes, the font needs to have glyph variations, see > > font-variation-glyphs and its underlying font-backend method > > get_variation_glyphs. > > http://unicode.org/reports/tr51/#Presentation_Style > > doesn’t seem to say that the fonts should have the variations. Please elaborate: which part thereof says that, and what are the implications regarding the fonts? The rendering of Emoji sequences is handled in Emacs via the font backend: Emacs submits the sequence to the backend, and the backend returns one or more glyphs that should be used to display the sequence. Emacs only submits a sequence of characters to the backend if the sequence matches one of the composition rules in composition-function-table. And the possible match for such composition rules is limited to character sequences that have the same 'face' text property, which in particular means the same font. In the case of variation selectors as part of the characters to be composed, Emacs additionally tests that the face's font has a glyph for the specified variation selector. If you are saying some of the above contradicts Unicode, please point out which part(s) and why. Thanks. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 9:40 ` Eli Zaretskii @ 2020-02-29 10:45 ` Mike FABIAN 0 siblings, 0 replies; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 10:45 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: Robert Pluim <rpluim@gmail.com>, 39799@debbugs.gnu.org >> Date: Sat, 29 Feb 2020 08:50:40 +0100 >> >> >> and #xFE0F is always composable according to composite.c, so I donʼt >> >> understand why composing only works with Noto Color Emoji. Or does the >> >> font need specific support for it? >> > >> > Yes, the font needs to have glyph variations, see >> > font-variation-glyphs and its underlying font-backend method >> > get_variation_glyphs. >> >> http://unicode.org/reports/tr51/#Presentation_Style >> >> doesn’t seem to say that the fonts should have the variations. > > Please elaborate: which part thereof says that, and what are the > implications regarding the fonts? I think it is a bit vague. It does not say that this should be handled by the fonts having glyphs for both styles, it does not seems to say that it should be handled by switching fonts according to the variation either. Currently no font which implements both the text and the emoji representation seems to exist. So currently one can only make it work by switching fonts depending on whether one wants to show text or emoji representation. Pango does it that way. I don’t know whether this is supposed to be the “right” way to it. > The rendering of Emoji sequences is handled in Emacs via the font > backend: Emacs submits the sequence to the backend, and the backend > returns one or more glyphs that should be used to display the > sequence. Emacs only submits a sequence of characters to the backend > if the sequence matches one of the composition rules in > composition-function-table. And the possible match for such > composition rules is limited to character sequences that have the same > 'face' text property, which in particular means the same font. In the > case of variation selectors as part of the characters to be composed, > Emacs additionally tests that the face's font has a glyph for the > specified variation selector. So this would work if a font had both black and white glyphs and colored glyphs and used the variation selectors to select the desired glyph. Maybe there should be a font like this, but currently no such font seems to exist. > If you are saying some of the above contradicts Unicode, please point > out which part(s) and why. I don’t think it contradicts Unicode. At least I am not sure, I think the specification is not clear how this should be done. But even if it doesn’t contradict Unicode, it means that it won't work well with currently available fonts. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 20:21 ` Eli Zaretskii 2020-02-28 20:25 ` Eli Zaretskii @ 2020-02-28 21:10 ` Mike FABIAN 2020-02-28 21:49 ` Eli Zaretskii 1 sibling, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 21:10 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: Eli Zaretskii <eliz@gnu.org>, 39799@debbugs.gnu.org >> Date: Fri, 28 Feb 2020 18:30:12 +0100 >> >> U+24C2 is an Emoji which has both a text and an emoji presentation. > > I don't think I understand how this fact is relevant to which font > Emacs selects for a character. Can you elaborate on the relation? That means that U+24C2 should display using a black and white “text” font like Symbola and U+24C2 U+FE0E as well, if possible. But U+24C2 U+FE0F should be displayed with a color emoji font like “Noto Color Emoji”, if possible. That’s how it works in gedit for example. By browsing the emoji data files with Emacs, I noticed that all emoji which have text and emoji presentations *always* displayed in black and white for me (Symbola font) even when I tried to set the fontset to use “Noto Color Emoji” for these code points. But for emoji which do not have these variants, setting the fontset to use “Noto Color Emoji” worked. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 21:10 ` Mike FABIAN @ 2020-02-28 21:49 ` Eli Zaretskii 2020-02-29 7:59 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 21:49 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 22:10:43 +0100 > > Eli Zaretskii <eliz@gnu.org> さんはかきました: > > >> From: Mike FABIAN <mfabian@redhat.com> > >> Cc: Eli Zaretskii <eliz@gnu.org>, 39799@debbugs.gnu.org > >> Date: Fri, 28 Feb 2020 18:30:12 +0100 > >> > >> U+24C2 is an Emoji which has both a text and an emoji presentation. > > > > I don't think I understand how this fact is relevant to which font > > Emacs selects for a character. Can you elaborate on the relation? > > That means that U+24C2 should display using a black and white “text” > font like Symbola and U+24C2 U+FE0E as well, if possible. But U+24C2 > U+FE0F should be displayed with a color emoji font like “Noto Color > Emoji”, if possible. > > That’s how it works in gedit for example. If Gedit selects a font by looking at more than one codepoint (and I'm not sure this is how it works in Gedit), then Emacs doesn't work that way. But regardless of how a font is selected, a single U+24C2 should be displayed as its default glyph in a font, whereas U+24C2 followed by U+FE0F should be displayed as a different glyph, the 16th variation of U+24C2 provided by the font. That variation could be a color one, or it could be some other variation of the default glyph, it all depends on what the font designer did. > By browsing the emoji data files with Emacs, I noticed that all emoji > which have text and emoji presentations *always* displayed in black and > white for me (Symbola font) even when I tried to set the fontset to use > “Noto Color Emoji” for these code points. Emacs by default disregards the fontset for symbol and punctuation characters. Set use-default-font-for-symbols to nil to override that. In any case, are these sequences displayed as composed characters? Does "C-u C-x =" tell that the base character U+24C2 was composed with the following variation selector? According to the setup in japanese.el, they should compose, if the font used for U+24C2 also supports the variation selectors. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 21:49 ` Eli Zaretskii @ 2020-02-29 7:59 ` Mike FABIAN 2020-02-29 10:04 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 7:59 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: > If Gedit selects a font by looking at more than one codepoint (and I'm > not sure this is how it works in Gedit), then Emacs doesn't work that > way. Yes, Gedit does this somehow with pango. It tries to avoid switching fonts in places where it would look bad. For example, if you have a default font supporting only ASCII and then there is a word containing some non-ASCII character like “grün” it chooses a font containing the “ü” for the whole word to avoid the “ü” looking out of place. > In any case, are these sequences displayed as composed characters? > Does "C-u C-x =" tell that the base character U+24C2 was composed with > the following variation selector? According to the setup in > japanese.el, they should compose, if the font used for U+24C2 also > supports the variation selectors. Yes, it does tell that it was composed with the following character: position: 255 of 257 (99%), column: 0 character: Ⓜ (displayed as Ⓜ) (codepoint 9410, #o22302, #x24c2) charset: unicode (Unicode (ISO10646)) code point in charset: 0x24C2 script: symbol syntax: w which means: word category: .:Base, L:Left-to-right (strong), l:Latin to input: type "C-x 8 RET 24c2" or "C-x 8 RET CIRCLED LATIN CAPITAL LETTER M" buffer code: #xE2 #x93 #x82 file code: #xE2 #x93 #x82 (encoded by coding system utf-8-unix) display: composed to form "Ⓜ️" (see below) Composed with the following character(s) "️" using this font: ftcrhb:-GOOG-Noto Color Emoji-normal-normal-normal-*-16-*-*-*-m-0-iso10646-1 by these glyphs: [0 1 9410 50 20 0 20 15 4 nil] Character code properties: customize what to show name: CIRCLED LATIN CAPITAL LETTER M general-category: So (Symbol, Other) decomposition: (circle 77) (circle 'M') There are text properties here: fontified nil -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 7:59 ` Mike FABIAN @ 2020-02-29 10:04 ` Eli Zaretskii 2020-02-29 11:14 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-29 10:04 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, 39799@debbugs.gnu.org > Date: Sat, 29 Feb 2020 08:59:49 +0100 > > Eli Zaretskii <eliz@gnu.org> さんはかきました: > > > If Gedit selects a font by looking at more than one codepoint (and I'm > > not sure this is how it works in Gedit), then Emacs doesn't work that > > way. > > Yes, Gedit does this somehow with pango. It tries to avoid switching > fonts in places where it would look bad. For example, if you have a > default font supporting only ASCII and then there is a word containing > some non-ASCII character like “grün” it chooses a font containing the > “ü” for the whole word to avoid the “ü” looking out of place. Well, "somehow" is not enough to see whether we have any additional work to do in Emacs, because Emacs also tries to achieve that same goal. There are many different ways to achieve it, though; for example, Emacs will AFAIK by default not even use a font that could support ASCII, but not Latin-1 blocks as the default face's font. What you say about Gedit makes sense in general, but questions immediately pop up: how does Gedit define a "word" (Emacs, as you know, has very a flexible definition that can be controlled from Lisp), how does it "know" that a word like "grün" belongs to the same script (otherwise displaying a character from another script using a different font, as in, say, "grאn" might make sense), etc. IOW, what we need is a detailed description of what Pango does here, and how does Gedit affect that by configuring its default fonts. Only then we can reason about the differences between that and what Emacs does. > > In any case, are these sequences displayed as composed characters? > > Does "C-u C-x =" tell that the base character U+24C2 was composed with > > the following variation selector? According to the setup in > > japanese.el, they should compose, if the font used for U+24C2 also > > supports the variation selectors. > > Yes, it does tell that it was composed with the following character: And the resulting display is what you expect? If not, then I think you need to find a font which supports Emoji presentation of characters such as Ⓜ, and make Emacs use it for those sequences. If you think this Emacs requirement for a capable font is incorrect, I suggest to post a question about this to the HarfBuzz mailing list, harfbuzz@lists.freedesktop.org, maybe HarfBuzz has capabilities in this regard that we somehow don't yet utilize. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 10:04 ` Eli Zaretskii @ 2020-02-29 11:14 ` Mike FABIAN 2020-02-29 11:52 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 11:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: rpluim@gmail.com, 39799@debbugs.gnu.org >> Date: Sat, 29 Feb 2020 08:59:49 +0100 >> >> Eli Zaretskii <eliz@gnu.org> さんはかきました: >> >> > If Gedit selects a font by looking at more than one codepoint (and I'm >> > not sure this is how it works in Gedit), then Emacs doesn't work that >> > way. >> >> Yes, Gedit does this somehow with pango. It tries to avoid switching >> fonts in places where it would look bad. For example, if you have a >> default font supporting only ASCII and then there is a word containing >> some non-ASCII character like “grün” it chooses a font containing the >> “ü” for the whole word to avoid the “ü” looking out of place. > > Well, "somehow" is not enough to see whether we have any additional > work to do in Emacs, because Emacs also tries to achieve that same > goal. There are many different ways to achieve it, though; for > example, Emacs will AFAIK by default not even use a font that could > support ASCII, but not Latin-1 blocks as the default face's font. > > What you say about Gedit makes sense in general, but questions > immediately pop up: how does Gedit define a "word" (Emacs, as you > know, has very a flexible definition that can be controlled from > Lisp), how does it "know" that a word like "grün" belongs to the same > script (otherwise displaying a character from another script using a > different font, as in, say, "grאn" might make sense), etc. Yes, “word” is already too simplified. > IOW, what we need is a detailed description of what Pango does here, > and how does Gedit affect that by configuring its default fonts. Only > then we can reason about the differences between that and what Emacs > does. Yes, you are right, and I think this is very difficult. I don’t know the details, but Pango seems to “cut” text into “runs” where each “run” is rendered with a single font. And it tries to cut the text into “runs” in a way that the overall result looks as nice as possible. This is really difficult and doesn’t always work well, sometimes the results are ugly although overall it seems to do a good job. >> > In any case, are these sequences displayed as composed characters? >> > Does "C-u C-x =" tell that the base character U+24C2 was composed with >> > the following variation selector? According to the setup in >> > japanese.el, they should compose, if the font used for U+24C2 also >> > supports the variation selectors. >> >> Yes, it does tell that it was composed with the following character: > > And the resulting display is what you expect? If not, then I think > you need to find a font which supports Emoji presentation of > characters such as Ⓜ, and make Emacs use it for those sequences. Yes, in the case of Ⓜ️ U+24C2 U+FE0F the result in Emacs is perfect when using “Noto Color Emoji” or “Joypixels”. It is displayed in colour and behaves as a single character in the buffer, the variation selector is not displayed as a box. This is perfect. But when using Symbola for the same sequence one sees U+FE0F as an ugly box. And when displaying the text representation sequence Ⓜ︎ U+24C2 U+FE0E one always sees U+FE0E as a box no matter whether using “Symbola”, “Noto Color Emoji” or “Joypixels”. I am not sure whether this is wrong. Maybe it is OK to require a font which can handle this? I am really not sure... But what about # U+0023 NUMBER SIGN ? This does have an emoji representation. I.e. U+0023 U+FE0F displays in color as an emoji in pango-view and gedit. How could this ever work in Emacs? If you have to decide for a single font to render U+0023 in Emacs, you would need to set a “capable” emoji font for an ASCII character like #. One probably does not want to do that. Then # in text representation would look different in style than the other ASCII characters because it would come as the text representation glyph from some emoji font which would probably not go well together with other ASCII characters coming from some font like for example “DejaVu Sans Mono”. So one probably wants to set something like “DejaVu Sans Mono” for # as well, otherwise normal text won’t look nice. But how can one display U+0023 U+FE0F as am emoji then? This seems very messy, I don’t know how this can be solved. > If you think this Emacs requirement for a capable font is incorrect, I > suggest to post a question about this to the HarfBuzz mailing list, > harfbuzz@lists.freedesktop.org, maybe HarfBuzz has capabilities in > this regard that we somehow don't yet utilize. Yes, I’ll try that, maybe that helps to understand it better. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 11:14 ` Mike FABIAN @ 2020-02-29 11:52 ` Eli Zaretskii 2020-02-29 16:59 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-29 11:52 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, 39799@debbugs.gnu.org > Date: Sat, 29 Feb 2020 12:14:28 +0100 > > > IOW, what we need is a detailed description of what Pango does here, > > and how does Gedit affect that by configuring its default fonts. Only > > then we can reason about the differences between that and what Emacs > > does. > > Yes, you are right, and I think this is very difficult. > > I don’t know the details, but Pango seems to “cut” text into “runs” > where each “run” is rendered with a single font. And it tries to > cut the text into “runs” in a way that the overall result looks > as nice as possible. Every text-shaping engine, including those used by Emacs, does that. The devil is in the details: how exactly are the "runs" decided. > >> Yes, it does tell that it was composed with the following character: > > > > And the resulting display is what you expect? If not, then I think > > you need to find a font which supports Emoji presentation of > > characters such as Ⓜ, and make Emacs use it for those sequences. > > Yes, in the case of Ⓜ️ U+24C2 U+FE0F the result in Emacs is perfect > when using “Noto Color Emoji” or “Joypixels”. It is displayed in colour > and behaves as a single character in the buffer, the variation selector > is not displayed as a box. This is perfect. > > But when using Symbola for the same sequence one sees U+FE0F as an ugly > box. So we should augment our default fontsets to use Emoji-capable fonts in preference to those, like Symbola, which aren't. And perhaps for Emoji we should make the exception in the rule that we prefer the default face's font, so that users will not need to tweak use-default-font-for-symbols to have Emoji display with those capable fonts. Patches to these effects are welcome. > But what about # U+0023 NUMBER SIGN ? > > This does have an emoji representation. The question is how important is to be able to display that character as an Emoji, in the context of the jobs that Emacs is mainly used for. Maybe not too much. > How could this ever work in Emacs? If you have to decide for a single > font to render U+0023 in Emacs, you would need to set a “capable” emoji > font for an ASCII character like #. One probably does not want to do > that. If fonts like DejaVu Sans Mono and others, routinely used for displaying fixed-pitch text (such as program source code) acquire the capabilities of displaying Emoji, that is exactly what should be done. As long as the current tendency of using Emoji everywhere continues, I see no reason not to expect those fonts to be enhanced to support Emoji. > Then # in text representation would look different in style than > the other ASCII characters because it would come as the text > representation glyph from some emoji font which would probably not go > well together with other ASCII characters coming from some font like > for example “DejaVu Sans Mono”. So one probably wants to set > something like “DejaVu Sans Mono” for # as well, otherwise normal text > won’t look nice. But how can one display U+0023 U+FE0F as am emoji then? > > This seems very messy, I don’t know how this can be solved. The 'face' text property method I mentioned elsewhere should still work, even if a single font cannot display both text and Emoji presentation of the sequences. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 11:52 ` Eli Zaretskii @ 2020-02-29 16:59 ` Mike FABIAN 0 siblings, 0 replies; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 16:59 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> > And the resulting display is what you expect? If not, then I think >> > you need to find a font which supports Emoji presentation of >> > characters such as Ⓜ, and make Emacs use it for those sequences. >> >> Yes, in the case of Ⓜ️ U+24C2 U+FE0F the result in Emacs is perfect >> when using “Noto Color Emoji” or “Joypixels”. It is displayed in colour >> and behaves as a single character in the buffer, the variation selector >> is not displayed as a box. This is perfect. >> >> But when using Symbola for the same sequence one sees U+FE0F as an ugly >> box. > > So we should augment our default fontsets to use Emoji-capable fonts > in preference to those, like Symbola, which aren't. And perhaps for > Emoji we should make the exception in the rule that we prefer the > default face's font, so that users will not need to tweak > use-default-font-for-symbols to have Emoji display with those capable > fonts. Patches to these effects are welcome. > >> But what about # U+0023 NUMBER SIGN ? >> >> This does have an emoji representation. > > The question is how important is to be able to display that character > as an Emoji, in the context of the jobs that Emacs is mainly used > for. Maybe not too much. I agree, not very important at all. I am surprised why this exists at all as an emoji. >> How could this ever work in Emacs? If you have to decide for a single >> font to render U+0023 in Emacs, you would need to set a “capable” emoji >> font for an ASCII character like #. One probably does not want to do >> that. > > If fonts like DejaVu Sans Mono and others, routinely used for > displaying fixed-pitch text (such as program source code) acquire the > capabilities of displaying Emoji, that is exactly what should be done. > As long as the current tendency of using Emoji everywhere continues, I > see no reason not to expect those fonts to be enhanced to support > Emoji. Yes, maybe that could be a long term solution. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 16:24 ` Robert Pluim 2020-02-28 17:30 ` Mike FABIAN @ 2020-02-28 20:13 ` Eli Zaretskii 2020-02-28 20:38 ` Robert Pluim 1 sibling, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 20:13 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: 39799@debbugs.gnu.org, mfabian@redhat.com > Date: Fri, 28 Feb 2020 17:24:58 +0100 > > Most of the emojis in emoji-sequences.txt can be made to use Noto > Color Emoji, but some canʼt. e.g. > > #x24c2 Ⓜ > > is stubbornly not being displayed using Noto Color Emoji, even though > that font has a glyph for it, and Iʼve added: > > (set-fontset-font "fontset-default" symbol-subgroup > '("Noto Color Emoji" . "iso10646-1") nil > 'prepend) > > just after the similar setting for Symbola in > lisp/international/fontset.el > > Itʼs not being displayed with the default font, and setting > use-default-font-for-symbols to nil makes no difference. Itʼs using: > > ftcrhb:-GOOG-Noto Sans CJK JP-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 (#x3F8) > > However, if I > eval > > (set-fontset-font nil #x24c2 > '("Noto Color Emoji" . "iso10646-1") nil > 'prepend) > > in the frame displaying the character, then it does use Noto Color > Emoji. What am I missing? Which part makes the difference: the "fontset-default" vs nil or symbol-subgroup vs an explicit codepoint? ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 20:13 ` Eli Zaretskii @ 2020-02-28 20:38 ` Robert Pluim 2020-02-28 20:55 ` Eli Zaretskii 2020-02-28 21:14 ` Mike FABIAN 0 siblings, 2 replies; 104+ messages in thread From: Robert Pluim @ 2020-02-28 20:38 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, mfabian >>>>> On Fri, 28 Feb 2020 22:13:14 +0200, Eli Zaretskii <eliz@gnu.org> said: >> (set-fontset-font nil #x24c2 >> '("Noto Color Emoji" . "iso10646-1") nil >> 'prepend) >> >> in the frame displaying the character, then it does use Noto Color >> Emoji. What am I missing? Eli> Which part makes the difference: the "fontset-default" vs nil or Eli> symbol-subgroup vs an explicit codepoint? symbol-subgroup in that context is (#x2460 . #x24FF) ;; Enclosed Alphanumerics so I suspect it's the nil rather than "fontset-default". <time passes> (set-fontset-font nil '(#x2460 . #x24FF) '("Noto Color Emoji" . "iso10646-1") nil 'prepend) Makes the character display using Noto Color Emoji. (set-fontset-font "fontset-default" '(#x2460 . #x24FF) '("Noto Color Emoji" . "iso10646-1") nil 'prepend) gives me: Debugger entered--Lisp error: (error "Fontset ‘default-fontset’ does not exist") set-fontset-font("default-fontset" (9312 . 9471) ("Noto Color Emoji" . "iso10646-1") nil prepend) (progn (set-fontset-font "default-fontset" '(9312 . 9471) '("Noto Color Emoji" . "iso10646-1") nil 'prepend)) eval((progn (set-fontset-font "default-fontset" '(9312 . 9471) '("Noto Color Emoji" . "iso10646-1") nil 'prepend)) t) elisp--eval-last-sexp(nil) eval-last-sexp(nil) funcall-interactively(eval-last-sexp nil) call-interactively(eval-last-sexp nil nil) command-execute(eval-last-sexp) and similarly if I specify a single character rather than a range. Using 't' instead of "default-fontset" doesnʼt error, but doesnʼt cause any font changes either. Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 20:38 ` Robert Pluim @ 2020-02-28 20:55 ` Eli Zaretskii 2020-02-28 21:22 ` Robert Pluim 2020-02-28 21:14 ` Mike FABIAN 1 sibling, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 20:55 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: 39799@debbugs.gnu.org, mfabian@redhat.com > Date: Fri, 28 Feb 2020 21:38:07 +0100 > > (set-fontset-font "fontset-default" '(#x2460 . #x24FF) > '("Noto Color Emoji" . "iso10646-1") nil > 'prepend) > > gives me: > > Debugger entered--Lisp error: (error "Fontset ‘default-fontset’ does not exist") > set-fontset-font("default-fontset" (9312 . 9471) ("Noto Color Emoji" . "iso10646-1") nil prepend) > (progn (set-fontset-font "default-fontset" '(9312 . 9471) '("Noto Color Emoji" . "iso10646-1") nil 'prepend)) > eval((progn (set-fontset-font "default-fontset" '(9312 . 9471) '("Noto Color Emoji" . "iso10646-1") nil 'prepend)) t) You used "default-fontset" instead of "fontset-default", thus the error. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 20:55 ` Eli Zaretskii @ 2020-02-28 21:22 ` Robert Pluim 2020-02-28 21:27 ` Mike FABIAN 2020-02-28 21:52 ` Eli Zaretskii 0 siblings, 2 replies; 104+ messages in thread From: Robert Pluim @ 2020-02-28 21:22 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, mfabian >>>>> On Fri, 28 Feb 2020 22:55:10 +0200, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: 39799@debbugs.gnu.org, mfabian@redhat.com >> Date: Fri, 28 Feb 2020 21:38:07 +0100 >> >> (set-fontset-font "fontset-default" '(#x2460 . #x24FF) >> '("Noto Color Emoji" . "iso10646-1") nil >> 'prepend) >> >> gives me: >> >> Debugger entered--Lisp error: (error "Fontset ‘default-fontset’ does not exist") >> set-fontset-font("default-fontset" (9312 . 9471) ("Noto Color Emoji" . "iso10646-1") nil prepend) >> (progn (set-fontset-font "default-fontset" '(9312 . 9471) '("Noto Color Emoji" . "iso10646-1") nil 'prepend)) >> eval((progn (set-fontset-font "default-fontset" '(9312 . 9471) '("Noto Color Emoji" . "iso10646-1") nil 'prepend)) t) Eli> You used "default-fontset" instead of "fontset-default", thus the Eli> error. D'oh. Friday night strikes again :-) With that fixed, neither the range or specific char variant makes any difference, I need to use nil. One other thing: the #x24C2 is not composed with the following #xFE0F when itʼs displayed using Google Noto Sans. If I get it to display with Noto Color Emoji it *is* composed, even though I haven't set up any composition-function-table entries for it. Where is that composition coming from? Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 21:22 ` Robert Pluim @ 2020-02-28 21:27 ` Mike FABIAN 2020-02-28 21:52 ` Eli Zaretskii 1 sibling, 0 replies; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 21:27 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 Robert Pluim <rpluim@gmail.com> さんはかきました: > One other thing: the #x24C2 is not composed with the following #xFE0F > when itʼs displayed using Google Noto Sans. Yes, I also noticed the #xFE0F displayed as a box. > If I get it to display > with Noto Color Emoji it *is* composed, even though I haven't set up > any composition-function-table entries for it. Where is that > composition coming from? No idea, I didn’t notice this until you mentioned it, but I see this as well. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 21:22 ` Robert Pluim 2020-02-28 21:27 ` Mike FABIAN @ 2020-02-28 21:52 ` Eli Zaretskii 2020-02-29 8:01 ` Mike FABIAN 1 sibling, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 21:52 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: 39799@debbugs.gnu.org, mfabian@redhat.com > Date: Fri, 28 Feb 2020 22:22:15 +0100 > > One other thing: the #x24C2 is not composed with the following #xFE0F > when itʼs displayed using Google Noto Sans. If I get it to display > with Noto Color Emoji it *is* composed, even though I haven't set up > any composition-function-table entries for it. Where is that > composition coming from? Emacs can only compose characters if the font supports all of the codepoints that are being composed. So you need to choose a font that supports these compositions. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 21:52 ` Eli Zaretskii @ 2020-02-29 8:01 ` Mike FABIAN 2020-02-29 9:49 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 8:01 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Robert Pluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: 39799@debbugs.gnu.org, mfabian@redhat.com >> Date: Fri, 28 Feb 2020 22:22:15 +0100 >> >> One other thing: the #x24C2 is not composed with the following #xFE0F >> when itʼs displayed using Google Noto Sans. If I get it to display >> with Noto Color Emoji it *is* composed, even though I haven't set up >> any composition-function-table entries for it. Where is that >> composition coming from? > > Emacs can only compose characters if the font supports all of the > codepoints that are being composed. So you need to choose a font that > supports these compositions. I think there are no fonts supporting both the emoji representations and text representations of emoji which have both. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 8:01 ` Mike FABIAN @ 2020-02-29 9:49 ` Eli Zaretskii 2020-02-29 10:26 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-29 9:49 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: Robert Pluim <rpluim@gmail.com>, 39799@debbugs.gnu.org > Date: Sat, 29 Feb 2020 09:01:37 +0100 > > > Emacs can only compose characters if the font supports all of the > > codepoints that are being composed. So you need to choose a font that > > supports these compositions. > > I think there are no fonts supporting both the emoji representations and > text representations of emoji which have both. Sorry, I don't understand: what does "which have both" refer to? Emacs doesn't create the text and emoji presentations, it just hands the sequences to the font backend and asks the backend to provide the font glyphs to display that sequence. The rest is between the font backend and the font. And of course all this depends on composition-function-table being set up to support these sequences. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 9:49 ` Eli Zaretskii @ 2020-02-29 10:26 ` Mike FABIAN 2020-02-29 11:19 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 10:26 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 [-- Attachment #1: Type: text/plain, Size: 4234 bytes --] Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: Robert Pluim <rpluim@gmail.com>, 39799@debbugs.gnu.org >> Date: Sat, 29 Feb 2020 09:01:37 +0100 >> >> > Emacs can only compose characters if the font supports all of the >> > codepoints that are being composed. So you need to choose a font that >> > supports these compositions. >> >> I think there are no fonts supporting both the emoji representations and >> text representations of emoji which have both. > > Sorry, I don't understand: what does "which have both" refer to? There are some emoji which have both emoji and text representations, for example: $ grep 24C2 emoji-variation-sequences.txt 24C2 FE0E ; text style; # (1.1) CIRCLED LATIN CAPITAL LETTER M 24C2 FE0F ; emoji style; # (1.1) CIRCLED LATIN CAPITAL LETTER M $ grep 24C2 emoji-data.txt 24C2 ; Emoji # E0.6 [1] (Ⓜ️) circled M 24C2 ; Extended_Pictographic# E0.6 [1] (Ⓜ️) circled M $ Other (most) emoji have only emoji representation, for example: $ grep 1F600 emoji-data.txt 1F600 ; Emoji # E1.0 [1] (😀) grinning face 1F600 ; Emoji_Presentation # E1.0 [1] (😀) grinning face 1F600 ; Extended_Pictographic# E1.0 [1] (😀) grinning face $ > Emacs doesn't create the text and emoji presentations, it just hands > the sequences to the font backend and asks the backend to provide the > font glyphs to display that sequence. The rest is between the font > backend and the font. And of course all this depends on > composition-function-table being set up to support these sequences. I think the specification in Unicode is quite vague on how this should be implemented. It doesn’t say anything about whether the fonts should do it or the application. If I understand it correctly, with the current implementation in Emacs, it would work if a font had glyphs for both variation selectors. I.e. if there was a font which had a colour glyph for 24C2 FE0F ; emoji style; # (1.1) CIRCLED LATIN CAPITAL LETTER M *and* a black and white glyph for 24C2 FE0E ; text style; # (1.1) CIRCLED LATIN CAPITAL LETTER M Then it would work in Emacs and 24C2 FE0F would display in colour and 24C2 FE0E in black and white. But there are no such fonts (yet??). Symbola doesn’t support the variation selectors at all, i.e. when using Symbola (set-fontset-font nil '(#x2460 . #x24FF) '("Symbola" . "iso10646-1") nil 'prepend) one gets the three variants Ⓜ U+24C2 Ⓜ︎ U+24C2 U+FE0E Ⓜ️ U+24C2 U+FE0F all in black and white and for the two variants which have the variation selectors one sees a narrow box in Emacs. When using “Noto Color Emoji” or “Joypixels”, one gets all three variants in colour, and a box is only shown for the line in the middle with the U+FE0E text style selector because neither “Noto Color Emoji” nor “Joypixels” seem to implement that one. The emoji style selector U+FE0F does not show a box though, if I understand you correctly that means that apparently both “Noto Color Emoji” and “Joypixels” implement the U+FE0F variation selector. If I paste these 3 lines into gedit (or anything else which uses pango for this) I see that different fonts are used. Can also be seen with pango-view --font="DejaVu Sans" ~/emoji-representation-test.txt (I attached the emoji-representation-test.txt file and how it is displayed by pango-view). I specified the DejaVu Sans font on the command line (which is used for the ASCII text in that screenshot. For the emoji, different fonts are used, on my system where I made that screenshot it happens to be the font “MS Gothic” for the emoji in the first two lines and “Noto Color Emoji” for the last line. So pango uses different fonts for a text representation emoji sequence than for emoji representation. The specification in Unicode does not seem to say that this is not allowed and that the font has to do it, it seems a bit vague there. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 [-- Attachment #2: emoji-representation-test.txt --] [-- Type: text/plain, Size: 56 bytes --] Ⓜ U+24C2 Ⓜ︎ U+24C2 U+FE0E Ⓜ️ U+24C2 U+FE0F [-- Attachment #3: pango-view-emoji-representation-test.txt.png --] [-- Type: image/png, Size: 1785 bytes --] ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 10:26 ` Mike FABIAN @ 2020-02-29 11:19 ` Eli Zaretskii 2020-02-29 11:36 ` Mike FABIAN 2020-02-29 11:41 ` Mike FABIAN 0 siblings, 2 replies; 104+ messages in thread From: Eli Zaretskii @ 2020-02-29 11:19 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, 39799@debbugs.gnu.org > Date: Sat, 29 Feb 2020 11:26:11 +0100 > > If I understand it correctly, with the current implementation in Emacs, > it would work if a font had glyphs for both variation selectors. > > I.e. if there was a font which had a colour glyph for > > 24C2 FE0F ; emoji style; # (1.1) CIRCLED LATIN CAPITAL LETTER M > > *and* a black and white glyph for > > 24C2 FE0E ; text style; # (1.1) CIRCLED LATIN CAPITAL LETTER M > > Then it would work in Emacs and 24C2 FE0F would display in colour > and 24C2 FE0E in black and white. Yes, in that case Emacs will display both sequences using the same font. > But there are no such fonts (yet??). Symbola doesn’t support the > variation selectors at all, i.e. when using Symbola > > (set-fontset-font nil '(#x2460 . #x24FF) '("Symbola" . "iso10646-1") nil 'prepend) > > one gets the three variants > > Ⓜ U+24C2 > Ⓜ︎ U+24C2 U+FE0E > Ⓜ️ U+24C2 U+FE0F > > all in black and white and for the two variants which have the variation > selectors one sees a narrow box in Emacs. > > When using “Noto Color Emoji” or “Joypixels”, one gets all three > variants in colour, and a box is only shown for the line in the middle > with the U+FE0E text style selector because neither “Noto Color Emoji” > nor “Joypixels” seem to implement that one. The emoji style selector > U+FE0F does not show a box though, if I understand you correctly that > means that apparently both “Noto Color Emoji” and “Joypixels” implement > the U+FE0F variation selector. OK, but then characters such as Ⓜ U+24C2 are supposed to be displayed in their text presentation by default, so the sequence Ⓜ︎ U+24C2 U+FE0E seems redundant, as it should display the same as just Ⓜ U+24C2. So this is not such a big loss for Emacs: you could use a font which supports only the Ⓜ️ U+24C2 U+FE0F sequence, and use just Ⓜ U+24C2 for the text presentation. > If I paste these 3 lines into gedit (or anything else which uses pango > for this) I see that different fonts are used. Can also be seen with > > pango-view --font="DejaVu Sans" ~/emoji-representation-test.txt You could have the same in Emacs if you define a special face that uses the other font, and then put that face on the sequence which isn't composed using the font selected by Emacs. > (I attached the emoji-representation-test.txt file and how it is > displayed by pango-view). I see only a small image showing the font name, and nothing else. Some problem with sending the attachment? > I specified the DejaVu Sans font on the command line (which is used for > the ASCII text in that screenshot. For the emoji, different fonts are > used, on my system where I made that screenshot it happens to be the > font “MS Gothic” for the emoji in the first two lines and “Noto Color > Emoji” for the last line. So pango uses different fonts for a text > representation emoji sequence than for emoji representation. Like I said, we need a more detailed understanding of how the font is selected by Pango in these cases. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 11:19 ` Eli Zaretskii @ 2020-02-29 11:36 ` Mike FABIAN 2020-02-29 11:58 ` Eli Zaretskii 2020-02-29 11:41 ` Mike FABIAN 1 sibling, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 11:36 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 [-- Attachment #1: Type: text/plain, Size: 3097 bytes --] Eli Zaretskii <eliz@gnu.org> さんはかきました: >> Ⓜ U+24C2 >> Ⓜ︎ U+24C2 U+FE0E >> Ⓜ️ U+24C2 U+FE0F >> >> all in black and white and for the two variants which have the variation >> selectors one sees a narrow box in Emacs. >> >> When using “Noto Color Emoji” or “Joypixels”, one gets all three >> variants in colour, and a box is only shown for the line in the middle >> with the U+FE0E text style selector because neither “Noto Color Emoji” >> nor “Joypixels” seem to implement that one. The emoji style selector >> U+FE0F does not show a box though, if I understand you correctly that >> means that apparently both “Noto Color Emoji” and “Joypixels” implement >> the U+FE0F variation selector. > > OK, but then characters such as Ⓜ U+24C2 are supposed to be displayed > in their text presentation by default, Yes. > so the sequence Ⓜ︎ U+24C2 U+FE0E > seems redundant, as it should display the same as just Ⓜ U+24C2. Yes, it seems a bit redundant. I was also surprised when I discovered U+FE0E. I think *all* the emoji which can be followed by U+FE0E (all those in http://www.unicode.org/Public/emoji/12.0/emoji-variation-sequences.txt) have text representation by default anyway, so why is U+FE0E needed at all? > So this is not such a big loss for Emacs: you could use a font which > supports only the Ⓜ️ U+24C2 U+FE0F sequence, and use just Ⓜ U+24C2 for > the text presentation. Yes. >> If I paste these 3 lines into gedit (or anything else which uses pango >> for this) I see that different fonts are used. Can also be seen with >> >> pango-view --font="DejaVu Sans" ~/emoji-representation-test.txt > > You could have the same in Emacs if you define a special face that > uses the other font, and then put that face on the sequence which > isn't composed using the font selected by Emacs. I think I don’t understand that completely. But you seem to say that it is possible to make Emacs use different fonts for U+24C2 and the sequence U+24C2 U+FE0F ? That sounds nice and would probably make it work better. >> (I attached the emoji-representation-test.txt file and how it is >> displayed by pango-view). > > I see only a small image showing the font name, and nothing else. > Some problem with sending the attachment? Oh, sorry, I apparently clicked on the title bar of the window when making the screenshot with the “import” tool. New screenshot attached. >> I specified the DejaVu Sans font on the command line (which is used for >> the ASCII text in that screenshot. For the emoji, different fonts are >> used, on my system where I made that screenshot it happens to be the >> font “MS Gothic” for the emoji in the first two lines and “Noto Color >> Emoji” for the last line. So pango uses different fonts for a text >> representation emoji sequence than for emoji representation. > > Like I said, we need a more detailed understanding of how the font is > selected by Pango in these cases. -- Mike FABIAN <mfabian@redhat.com> [-- Attachment #2: pango-view-emoji-representation-test.txt.png --] [-- Type: image/png, Size: 3366 bytes --] ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 11:36 ` Mike FABIAN @ 2020-02-29 11:58 ` Eli Zaretskii 2020-02-29 17:03 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-29 11:58 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, 39799@debbugs.gnu.org > Date: Sat, 29 Feb 2020 12:36:51 +0100 > > > You could have the same in Emacs if you define a special face that > > uses the other font, and then put that face on the sequence which > > isn't composed using the font selected by Emacs. > > I think I don’t understand that completely. But you seem to say that it > is possible to make Emacs use different fonts for U+24C2 and the > sequence U+24C2 U+FE0F ? It should be possible, yes. Define a new face, and make that face use a font that can display sequences like U+24C2 U+FE0E. Then put a 'face' text property whose value is that face you defined, on the text containing such a sequence. This should force Emacs to use the font you specified for that stretch of text, regardless of the fontset and the default font. Given that we don't really see why sequences with U+FE0E are needed, perhaps requiring Lisp programs which do want to display such sequences to use a special face is not such a big deal? > >> (I attached the emoji-representation-test.txt file and how it is > >> displayed by pango-view). > > > > I see only a small image showing the font name, and nothing else. > > Some problem with sending the attachment? > > Oh, sorry, I apparently clicked on the title bar of the window > when making the screenshot with the “import” tool. New screenshot > attached. OK, I see it now, thanks. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 11:58 ` Eli Zaretskii @ 2020-02-29 17:03 ` Mike FABIAN 2020-02-29 17:19 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 17:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: rpluim@gmail.com, 39799@debbugs.gnu.org >> Date: Sat, 29 Feb 2020 12:36:51 +0100 >> >> > You could have the same in Emacs if you define a special face that >> > uses the other font, and then put that face on the sequence which >> > isn't composed using the font selected by Emacs. >> >> I think I don’t understand that completely. But you seem to say that it >> is possible to make Emacs use different fonts for U+24C2 and the >> sequence U+24C2 U+FE0F ? > > It should be possible, yes. Define a new face, and make that face use > a font that can display sequences like U+24C2 U+FE0E. Then put a > 'face' text property whose value is that face you defined, on the text > containing such a sequence. This should force Emacs to use the font > you specified for that stretch of text, regardless of the fontset and > the default font. But that would be a manual process? Or would it be displayed like that by default? > Given that we don't really see why sequences with U+FE0E are needed, > perhaps requiring Lisp programs which do want to display such > sequences to use a special face is not such a big deal? Ah, I see, something like (require 'improve-emoji-display) which does this magic defining such a face. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 17:03 ` Mike FABIAN @ 2020-02-29 17:19 ` Eli Zaretskii 0 siblings, 0 replies; 104+ messages in thread From: Eli Zaretskii @ 2020-02-29 17:19 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, 39799@debbugs.gnu.org > Date: Sat, 29 Feb 2020 18:03:01 +0100 > > >> I think I don’t understand that completely. But you seem to say that it > >> is possible to make Emacs use different fonts for U+24C2 and the > >> sequence U+24C2 U+FE0F ? > > > > It should be possible, yes. Define a new face, and make that face use > > a font that can display sequences like U+24C2 U+FE0E. Then put a > > 'face' text property whose value is that face you defined, on the text > > containing such a sequence. This should force Emacs to use the font > > you specified for that stretch of text, regardless of the fontset and > > the default font. > > But that would be a manual process? Or would it be displayed like that > by default? We could do something automatically using JIT font-lock mechanism, perhaps. > > Given that we don't really see why sequences with U+FE0E are needed, > > perhaps requiring Lisp programs which do want to display such > > sequences to use a special face is not such a big deal? > > Ah, I see, something like > > (require 'improve-emoji-display) > > which does this magic defining such a face. Yes. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 11:19 ` Eli Zaretskii 2020-02-29 11:36 ` Mike FABIAN @ 2020-02-29 11:41 ` Mike FABIAN 2020-02-29 12:02 ` Eli Zaretskii 1 sibling, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 11:41 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: > OK, but then characters such as Ⓜ U+24C2 are supposed to be displayed > in their text presentation by default, so the sequence Ⓜ︎ U+24C2 U+FE0E > seems redundant, as it should display the same as just Ⓜ U+24C2. http://unicode.org/faq/vs.html#5 says: > Q: How should variation sequences be displayed? > > A: When they are valid variation sequences, they should be displayed as > illustrated in the Unicode code charts, the emoji charts, or in the > Ideographic Variation Database. When a variation sequence is not valid > or its display is not supported, the base character is displayed as > usual, and the variation selector is invisible. See Display of > Unsupported Characters. > > Q:What about applications that don't support variation sequences? > > A: Applications not supporting variation sequences should act as if the > variation selector is not present. That normally applies to all text > processes such as searching, sorting, parsing, and so forth. So probably Ⓜ︎ U+24C2 U+FE0E should not display U+FE0E as a box, as you say it should exactly display as just Ⓜ U+24C2. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 11:41 ` Mike FABIAN @ 2020-02-29 12:02 ` Eli Zaretskii 2020-02-29 17:14 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-29 12:02 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, 39799@debbugs.gnu.org > Date: Sat, 29 Feb 2020 12:41:02 +0100 > > > Q:What about applications that don't support variation sequences? > > > > A: Applications not supporting variation sequences should act as if the > > variation selector is not present. That normally applies to all text > > processes such as searching, sorting, parsing, and so forth. > > So probably Ⓜ︎ U+24C2 U+FE0E should not display U+FE0E as a box, as you > say it should exactly display as just Ⓜ U+24C2. You can control this via glyphless-char-display. The thin 1-pixel space is just the current default, and we could change that default if we think it's better not to display the variation selectors at all. It's just that the "Emacsy" way is not to conceal any characters from the user, so the current default was chosen to follow that. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 12:02 ` Eli Zaretskii @ 2020-02-29 17:14 ` Mike FABIAN 2020-02-29 17:27 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-29 17:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 39799 [-- Attachment #1: Type: text/plain, Size: 1903 bytes --] Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: rpluim@gmail.com, 39799@debbugs.gnu.org >> Date: Sat, 29 Feb 2020 12:41:02 +0100 >> >> > Q:What about applications that don't support variation sequences? >> > >> > A: Applications not supporting variation sequences should act as if the >> > variation selector is not present. That normally applies to all text >> > processes such as searching, sorting, parsing, and so forth. >> >> So probably Ⓜ︎ U+24C2 U+FE0E should not display U+FE0E as a box, as you >> say it should exactly display as just Ⓜ U+24C2. > > You can control this via glyphless-char-display. The thin 1-pixel > space is just the current default, and we could change that default if > we think it's better not to display the variation selectors at all. > It's just that the "Emacsy" way is not to conceal any characters from > the user, so the current default was chosen to follow that. I agree, not displaying anything at all is not so nice either. It is nicer if one can find something there when stepping over it and delete the U+FE0E, that is really more "Emacsy", I think. Like when I have “AA” (U+0041 U+FEFF U+0041) I can still move the cursor over that string and find that there is something between the two As, check what that is, delete it if I want ... So a thin 1-pixel space sounds good to me, it does not look ugly but one can still edit it. But currently I don’t seem to get a thin 1-pixel space for Ⓜ︎ U+24C2 U+FE0E I get a box with a 1 pixel border in the foreground colour (black) and this box has a total width of 6 pixels. See attached screenshot. This looks fairly ugly is a bit too much maybe. You get a 1-pixel space? Is special setup needed to get that or should I get that by default? -- Mike FABIAN <mfabian@redhat.com> [-- Attachment #2: display-of-fe0e.png --] [-- Type: image/png, Size: 3822 bytes --] ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 17:14 ` Mike FABIAN @ 2020-02-29 17:27 ` Eli Zaretskii 2020-03-02 9:10 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-29 17:27 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, 39799@debbugs.gnu.org > Date: Sat, 29 Feb 2020 18:14:24 +0100 > > But currently I don’t seem to get a thin 1-pixel space for > > Ⓜ︎ U+24C2 U+FE0E > > I get a box with a 1 pixel border in the foreground colour (black) and > this box has a total width of 6 pixels. See attached screenshot. > > This looks fairly ugly is a bit too much maybe. > > You get a 1-pixel space? Is special setup needed to get that or should > I get that by default? Sorry, I was thinking about U+200D. You are right, the variation selectors by default display as hex codes in a box. But that can be changed. This is set up in lisp/international/characters.el, which see. And you can set it manually, of course, since it's just a char-table. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-29 17:27 ` Eli Zaretskii @ 2020-03-02 9:10 ` Robert Pluim 2020-03-02 11:02 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2020-03-02 9:10 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, Mike FABIAN >>>>> On Sat, 29 Feb 2020 19:27:44 +0200, Eli Zaretskii <eliz@gnu.org> said: Eli> Sorry, I was thinking about U+200D. You are right, the variation Eli> selectors by default display as hex codes in a box. But that can be Eli> changed. This is set up in lisp/international/characters.el, which Eli> see. And you can set it manually, of course, since it's just a Eli> char-table. customizing glyphless-char-display-control is probably the easiest way to do that. Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-03-02 9:10 ` Robert Pluim @ 2020-03-02 11:02 ` Eli Zaretskii 0 siblings, 0 replies; 104+ messages in thread From: Eli Zaretskii @ 2020-03-02 11:02 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: Mike FABIAN <mfabian@redhat.com>, 39799@debbugs.gnu.org > Date: Mon, 02 Mar 2020 10:10:14 +0100 > > >>>>> On Sat, 29 Feb 2020 19:27:44 +0200, Eli Zaretskii <eliz@gnu.org> said: > > Eli> Sorry, I was thinking about U+200D. You are right, the variation > Eli> selectors by default display as hex codes in a box. But that can be > Eli> changed. This is set up in lisp/international/characters.el, which > Eli> see. And you can set it manually, of course, since it's just a > Eli> char-table. > > customizing glyphless-char-display-control is probably the easiest way > to do that. Yes, but my point was that could be done by default. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 20:38 ` Robert Pluim 2020-02-28 20:55 ` Eli Zaretskii @ 2020-02-28 21:14 ` Mike FABIAN 2020-02-28 21:50 ` Eli Zaretskii 1 sibling, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2020-02-28 21:14 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799 Robert Pluim <rpluim@gmail.com> さんはかきました: >>>>>> On Fri, 28 Feb 2020 22:13:14 +0200, Eli Zaretskii <eliz@gnu.org> said: > > >> (set-fontset-font nil #x24c2 > >> '("Noto Color Emoji" . "iso10646-1") nil > >> 'prepend) > >> > >> in the frame displaying the character, then it does use Noto Color > >> Emoji. What am I missing? > > Eli> Which part makes the difference: the "fontset-default" vs nil or > Eli> symbol-subgroup vs an explicit codepoint? > > symbol-subgroup in that context is (#x2460 . #x24FF) ;; Enclosed > Alphanumerics > so I suspect it's the nil rather than "fontset-default". <time passes> > > (set-fontset-font nil '(#x2460 . #x24FF) > '("Noto Color Emoji" . "iso10646-1") nil > 'prepend) > > Makes the character display using Noto Color Emoji. That works for me as well! But would it be possible to display it in Symbola if not followed by the emoji representation selector and in Noto Color Emoji if followed by the emoji representation selector?? -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 21:14 ` Mike FABIAN @ 2020-02-28 21:50 ` Eli Zaretskii 0 siblings, 0 replies; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 21:50 UTC (permalink / raw) To: Mike FABIAN; +Cc: rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: Eli Zaretskii <eliz@gnu.org>, 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 22:14:53 +0100 > > But would it be possible to display it in Symbola if not followed by the > emoji representation selector and in Noto Color Emoji if followed by the > emoji representation selector?? No. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 14:14 ` Robert Pluim 2020-02-28 14:45 ` Eli Zaretskii 2020-02-28 14:46 ` Eli Zaretskii @ 2020-02-28 16:19 ` Eli Zaretskii 2020-02-28 16:39 ` Robert Pluim 2 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 16:19 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: Glenn Morris <rgm@gnu.org>, mfabian@redhat.com, 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 15:14:01 +0100 > > >> 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? > > Eli> I don't think matching backwards is better in general. Did you have a > Eli> reason for thinking it was? > > I thought I saw a comment in composite.c that says matching is done > backward, but I see that itʼs done forwards as well. Btw, it sometimes _can_ be beneficial to use backward matching: if it makes the size of composition-function-table smaller. Since composition-function-table is a char-table, and char-tables allocate sub-tables only if needed, you can conserve memory (and thus make Emacs's memory footprint smaller) and faster (because 'aref' will llok up values in a char-table faster) by setting a smaller number of slots. For example, if the 2nd character of an Emoji sequence was always one specific character, or a small set of characters, you could set only the slots of those few characters, which would make the char-table smaller. OTOH, if that would yield many different composition rules in the list of rules for those few characters, redisplay could become slower, because it generally examines the rules one by one until it finds an appropriate one. So the winning setup of composition-function-table is the one that sets the smallest number of slots, but still keeps the lists of rules for those slots short. And note that setting the same rule for a range of codepoints generally uses up only one slot in the char-table, so rules that can be generalized to cover many characters are preferable. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 16:19 ` Eli Zaretskii @ 2020-02-28 16:39 ` Robert Pluim 2020-02-28 20:16 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2020-02-28 16:39 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, mfabian >>>>> On Fri, 28 Feb 2020 18:19:10 +0200, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: Glenn Morris <rgm@gnu.org>, mfabian@redhat.com, 39799@debbugs.gnu.org >> Date: Fri, 28 Feb 2020 15:14:01 +0100 >> >> >> 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? >> Eli> I don't think matching backwards is better in general. Did you have a Eli> reason for thinking it was? >> >> I thought I saw a comment in composite.c that says matching is done >> backward, but I see that itʼs done forwards as well. Eli> Btw, it sometimes _can_ be beneficial to use backward matching: if it Eli> makes the size of composition-function-table smaller. Since Eli> composition-function-table is a char-table, and char-tables allocate Eli> sub-tables only if needed, you can conserve memory (and thus make Eli> Emacs's memory footprint smaller) and faster (because 'aref' will llok Eli> up values in a char-table faster) by setting a smaller number of Eli> slots. For example, if the 2nd character of an Emoji sequence was Eli> always one specific character, or a small set of characters, you could Eli> set only the slots of those few characters, which would make the Eli> char-table smaller. OTOH, if that would yield many different Eli> composition rules in the list of rules for those few characters, Eli> redisplay could become slower, because it generally examines the rules Eli> one by one until it finds an appropriate one. So the winning setup of Eli> composition-function-table is the one that sets the smallest number of Eli> slots, but still keeps the lists of rules for those slots short. And Eli> note that setting the same rule for a range of codepoints generally Eli> uses up only one slot in the char-table, so rules that can be Eli> generalized to cover many characters are preferable. I donʼt think that applies in this case. The sequences are all easily categorised based on the first char in the sequence. It could be done based on the 2nd, or 3rd or whatever, but I donʼt think that reduces the number of entries. Plus thereʼs always one rule per character, since multiple patterns starting with the same character are combined using regexp-opt. One thing though: the code currently does set-char-table-range to a new value. Is there a chance that an entry already exists in composition-function-table for a particular character? If so Iʼd have to change it to add the new rule after the existing one (before?). Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 16:39 ` Robert Pluim @ 2020-02-28 20:16 ` Eli Zaretskii 2020-02-28 20:56 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2020-02-28 20:16 UTC (permalink / raw) To: Robert Pluim; +Cc: 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: rgm@gnu.org, mfabian@redhat.com, 39799@debbugs.gnu.org > Date: Fri, 28 Feb 2020 17:39:56 +0100 > > I donʼt think that applies in this case. The sequences are all easily > categorised based on the first char in the sequence. It could be done > based on the 2nd, or 3rd or whatever, but I donʼt think that reduces > the number of entries. Plus thereʼs always one rule per character, > since multiple patterns starting with the same character are combined > using regexp-opt. I wrote that to describe the general considerations, not necessarily because I think they are applicable in this particular case. I didn't analyze the sequences to see whether any of what I wrote can or should be used for them. > One thing though: the code currently does set-char-table-range to a > new value. Is there a chance that an entry already exists in > composition-function-table for a particular character? Only if the non-leading character is a combining character, which I think is unlikely. But in general, yes, this should be tested up front to avoid losing composition rules. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 20:16 ` Eli Zaretskii @ 2020-02-28 20:56 ` Robert Pluim 2021-09-20 20:38 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2020-02-28 20:56 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39799, mfabian >>>>> On Fri, 28 Feb 2020 22:16:21 +0200, Eli Zaretskii <eliz@gnu.org> said: >> One thing though: the code currently does set-char-table-range to a >> new value. Is there a chance that an entry already exists in >> composition-function-table for a particular character? Eli> Only if the non-leading character is a combining character, which I Eli> think is unlikely. But in general, yes, this should be tested up Eli> front to avoid losing composition rules. OK, Iʼll take that into account. Robert ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2020-02-28 20:56 ` Robert Pluim @ 2021-09-20 20:38 ` Robert Pluim 2021-09-21 9:16 ` Eli Zaretskii 2021-09-21 11:48 ` Mike FABIAN 0 siblings, 2 replies; 104+ messages in thread From: Robert Pluim @ 2021-09-20 20:38 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, 39799, mfabian >>>>> On Fri, 28 Feb 2020 21:56:04 +0100, Robert Pluim <rpluim@gmail.com> said: >>>>> On Fri, 28 Feb 2020 22:16:21 +0200, Eli Zaretskii <eliz@gnu.org> said: >>> One thing though: the code currently does set-char-table-range to a >>> new value. Is there a chance that an entry already exists in >>> composition-function-table for a particular character? Eli> Only if the non-leading character is a combining character, which I Eli> think is unlikely. But in general, yes, this should be tested up Eli> front to avoid losing composition rules. Robert> OK, Iʼll take that into account. Robert> Robert Iʼve just pushed a change to master that should fix (almost) all the issues with displaying emoji sequences (except for keycaps). Feedback welcome. Robert -- ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-20 20:38 ` Robert Pluim @ 2021-09-21 9:16 ` Eli Zaretskii 2021-09-21 10:34 ` Robert Pluim 2021-09-21 11:48 ` Mike FABIAN 1 sibling, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 9:16 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com > Date: Mon, 20 Sep 2021 22:38:28 +0200 > > Iʼve just pushed a change to master that should fix (almost) all the > issues with displaying emoji sequences (except for keycaps). Feedback > welcome. Thanks, this is mostly okay, IMO. the only issue I have with this is here: > --- a/admin/unidata/blocks.awk > +++ b/admin/unidata/blocks.awk > @@ -221,6 +221,46 @@ FILENAME ~ "emoji-data.txt" && /^[0-9A-F].*; Emoji_Presentation / { > } > > END { > + ## These codepoints have Emoji_Presentation = No, but they are > + ## used in emoji-sequences.txt and emoji-zwj-sequences.txt (with a > + ## Variation Selector), so force them into the emoji script so > + ## they will get composed correctly. FIXME: delete this when we > + ## can change the font used for a codepoint based on whether it's > + ## followed by a VS (usually VS-16) > + idx = 0 > + override_start[idx] = "261D" > + override_end[idx] = "261D" > + idx++ > + override_start[idx] = "26F9" > + override_end[idx] = "26F9" > + idx++ > + override_start[idx] = "270C" > + override_end[idx] = "270D" > + idx++ > + override_start[idx] = "2764" > + override_end[idx] = "2764" > + idx++ > + override_start[idx] = "1F3CB" > + override_end[idx] = "1F3CC" > + idx++ > + override_start[idx] = "1F3F3" > + override_end[idx] = "1F3F4" > + idx++ > + override_start[idx] = "1F441" > + override_end[idx] = "1F441" > + idx++ > + override_start[idx] = "1F575" > + override_end[idx] = "1F575" > + > + for (k in override_start) > + { > + i++ > + start[i] = override_start[k] > + end[i] = override_end[k] > + alt[i] = "emoji" > + name[i] = "Autogenerated emoji (override)" > + } Specifically, the U+2xxx codepoints are now in the 'emoji' script, which I think is undesirable, even if the price is that we won't support the sequences in which those codepoints are followed by VS-16. So I think we should remove those codepoints from the above, leaving only the U+1Fxxx" ones. Btw, currently U+261D followed by VS-16 doesn't compose for me, probably because compose-gstring-for-variation-glyph is hardcoded to work only for Han characters, and U+261D isn't, or because that function is not suited to VS-16 (it looks for glyph variations in the font)? Or am I missing something? Now to my idea of supporting those "U+2xxx VS-16" sequences without assigning them to the 'emoji' script: The function autocmp_chars uses font_range to find whether the sequence of characters that can be composed are supported by the same font. It currently takes the first character of the sequence, calls font_for_char for it, then checks that all the rest of the characters are supported by that font by calling font_encode_char. In our case, the first character of the sequence is U+2xxx, which is not in the 'emoji' script, so Emacs is likely to pick up a font that doesn't support Emoji, and the composition will fail. To avoid that, I propose the following change: . add a new argument to font_range, the codepoint that triggered the composition . inside font_range, if that codepoint belongs to the 'emoji' script (use char-script-table to find that out), call font_for_char with a representative character for 'emoji' (from script-representative-chars) instead of the first character of the sequence, then check that all the sequence characters, including the first one, can be supported by that font; if they can, return that font to the caller, to be used for the composition WDYT? Btw, if you use Firefox or Chrome, or some other application that can show Emoji sequences, or maybe just use HarfBuzz's hb-view, how does the display of the U+2xxx changes when they are followed by VS-16? Is the change prominent enough for us to try to support it? If not, perhaps the above should be left out for the moment. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 9:16 ` Eli Zaretskii @ 2021-09-21 10:34 ` Robert Pluim 2021-09-21 10:54 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2021-09-21 10:34 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, 39799, mfabian [-- Attachment #1: Type: text/plain, Size: 4892 bytes --] >>>>> On Tue, 21 Sep 2021 12:16:38 +0300, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com >> Date: Mon, 20 Sep 2021 22:38:28 +0200 >> >> Iʼve just pushed a change to master that should fix (almost) all the >> issues with displaying emoji sequences (except for keycaps). Feedback >> welcome. Eli> Thanks, this is mostly okay, IMO. the only issue I have with this is Eli> here: Eli> Specifically, the U+2xxx codepoints are now in the 'emoji' script, Eli> which I think is undesirable, even if the price is that we won't Eli> support the sequences in which those codepoints are followed by Eli> VS-16. So I think we should remove those codepoints from the above, Eli> leaving only the U+1Fxxx" ones. OK, Iʼll adjust it. Eli> Btw, currently U+261D followed by VS-16 doesn't compose for me, Eli> probably because compose-gstring-for-variation-glyph is hardcoded to Eli> work only for Han characters, and U+261D isn't, or because that Eli> function is not suited to VS-16 (it looks for glyph variations in the Eli> font)? Or am I missing something? You mean it doesnʼt get treated as a composition, or the result looks bad (despite the comments in compose-gstring-for-variation-glyph I donʼt see it limiting things to Han anywhere)? I have the latter: ☝️ position: 146 of 147 (99%), column: 0 character: ☝ (displayed as ☝) (codepoint 9757, #o23035, #x261d) charset: unicode (Unicode (ISO10646)) code point in charset: 0x261D script: emoji syntax: w which means: word category: .:Base to input: type "C-x 8 RET 261d" or "C-x 8 RET WHITE UP POINTING INDEX" buffer code: #xE2 #x98 #x9D file code: #xE2 #x98 #x9D (encoded by coding system utf-8-unix) display: composed to form "☝️" (see below) Composed with the following character(s) "️" using this font: ftcrhb:-GOOG-Noto Color Emoji-normal-normal-normal-*-19-*-*-*-m-0-iso10646-1 by these glyphs: [0 1 9757 69 24 0 24 18 5 nil] with these character(s): ️ (#xfe0f) VARIATION SELECTOR-16 Character code properties: customize what to show name: WHITE UP POINTING INDEX general-category: So (Symbol, Other) decomposition: (9757) ('☝') There are text properties here: fontified nil Eli> Now to my idea of supporting those "U+2xxx VS-16" sequences without Eli> assigning them to the 'emoji' script: Eli> The function autocmp_chars uses font_range to find whether the Eli> sequence of characters that can be composed are supported by the same Eli> font. It currently takes the first character of the sequence, calls Eli> font_for_char for it, then checks that all the rest of the characters Eli> are supported by that font by calling font_encode_char. In our case, Eli> the first character of the sequence is U+2xxx, which is not in the Eli> 'emoji' script, so Emacs is likely to pick up a font that doesn't Eli> support Emoji, and the composition will fail. To avoid that, I Eli> propose the following change: Eli> . add a new argument to font_range, the codepoint that triggered the Eli> composition Eli> . inside font_range, if that codepoint belongs to the 'emoji' script Eli> (use char-script-table to find that out), call font_for_char with Eli> a representative character for 'emoji' (from Eli> script-representative-chars) instead of the first character of the Eli> sequence, then check that all the sequence characters, including Eli> the first one, can be supported by that font; if they can, return Eli> that font to the caller, to be used for the composition Eli> WDYT? I think this means you'd have to add the Variation Selectors to the emoji script, but it should work. Iʼm not sure that *all* the characters need to be supported by the font: if thereʼs a ZWJ in there, itʼs purely functional, so thereʼs no need for a glyph for it (and Iʼm hoping harfbuzz agrees), but thatʼs a moot point for U+2xxx U+FE0F Eli> Btw, if you use Firefox or Chrome, or some other application that can Eli> show Emoji sequences, or maybe just use HarfBuzz's hb-view, how does Eli> the display of the U+2xxx changes when they are followed by VS-16? Is Eli> the change prominent enough for us to try to support it? If not, Eli> perhaps the above should be left out for the moment. At least with chromium, the glyph becomes more colourful for about a dozen codepoints, but not for U+261D (see attached). The VS-16 itself is hidden. Robert -- [-- Attachment #2: Screenshot from 2021-09-21 12-26-36.png --] [-- Type: image/png, Size: 4772 bytes --] [-- Attachment #3: Screenshot from 2021-09-21 12-26-11.png --] [-- Type: image/png, Size: 28196 bytes --] [-- Attachment #4: Screenshot from 2021-09-21 12-25-39.png --] [-- Type: image/png, Size: 21238 bytes --] ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 10:34 ` Robert Pluim @ 2021-09-21 10:54 ` Eli Zaretskii 2021-09-21 11:31 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 10:54 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com > Date: Tue, 21 Sep 2021 12:34:45 +0200 > > Eli> Btw, currently U+261D followed by VS-16 doesn't compose for me, > Eli> probably because compose-gstring-for-variation-glyph is hardcoded to > Eli> work only for Han characters, and U+261D isn't, or because that > Eli> function is not suited to VS-16 (it looks for glyph variations in the > Eli> font)? Or am I missing something? > > You mean it doesnʼt get treated as a composition, or the result looks > bad The former. > Composed with the following character(s) "️" using this font: > ftcrhb:-GOOG-Noto Color Emoji-normal-normal-normal-*-19-*-*-*-m-0-iso10646-1 > by these glyphs: > [0 1 9757 69 24 0 24 18 5 nil] > with these character(s): > ️ (#xfe0f) VARIATION SELECTOR-16 I guess it's the font, then. But anyway, it's confusing to have the composition function in japanese.el, we should move it to composite.el instead, I think. > I think this means you'd have to add the Variation Selectors to the > emoji script Yes, of course. > Iʼm not sure that *all* the > characters need to be supported by the font: if thereʼs a ZWJ in > there, itʼs purely functional, so thereʼs no need for a glyph for it > (and Iʼm hoping harfbuzz agrees) This is already handled in font_range: while (pos < *limit) { c = (NILP (string) ? fetch_char_advance_no_check (&pos, &pos_byte) : fetch_string_char_advance_no_check (string, &pos, &pos_byte)); Lisp_Object category = CHAR_TABLE_REF (Vunicode_category_table, c); if (FIXNUMP (category) && (XFIXNUM (category) == UNICODE_CATEGORY_Cf <<<<<<<<<<<<<<<<<<<< || CHAR_VARIATION_SELECTOR_P (c))) continue; > Eli> Btw, if you use Firefox or Chrome, or some other application that can > Eli> show Emoji sequences, or maybe just use HarfBuzz's hb-view, how does > Eli> the display of the U+2xxx changes when they are followed by VS-16? Is > Eli> the change prominent enough for us to try to support it? If not, > Eli> perhaps the above should be left out for the moment. > > At least with chromium, the glyph becomes more colourful for about a > dozen codepoints, but not for U+261D (see attached). So it _is_ worth supporting. Would you please make those changes in font_range and in blocks.awk? > The VS-16 itself is hidden. If the composition succeeds, it will be hidden in Emacs as well. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 10:54 ` Eli Zaretskii @ 2021-09-21 11:31 ` Eli Zaretskii 2021-09-21 17:43 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 11:31 UTC (permalink / raw) To: rpluim; +Cc: rgm, 39799, mfabian > Date: Tue, 21 Sep 2021 13:54:02 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com > > > I think this means you'd have to add the Variation Selectors to the > > emoji script > > Yes, of course. Btw, we could recognize VS-16 explicitly in font_range, and avoid putting them into the 'emoji' script. But that would be too kludgey, I guess. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 11:31 ` Eli Zaretskii @ 2021-09-21 17:43 ` Robert Pluim 2021-09-21 18:28 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2021-09-21 17:43 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, 39799, mfabian >>>>> On Tue, 21 Sep 2021 14:31:10 +0300, Eli Zaretskii <eliz@gnu.org> said: >> Date: Tue, 21 Sep 2021 13:54:02 +0300 >> From: Eli Zaretskii <eliz@gnu.org> >> Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com >> >> > I think this means you'd have to add the Variation Selectors to the >> > emoji script >> >> Yes, of course. Eli> Btw, we could recognize VS-16 explicitly in font_range, and avoid Eli> putting them into the 'emoji' script. But that would be too kludgey, Eli> I guess. FE0F is already in script-representative-chars for emoji :-) Eli, is this the kind of thing you were thinking of? Seems to work so far (with a small addition to blocks.awk). We'll need to find a better name for the new arg than 'trigger' though. diff --git a/src/composite.c b/src/composite.c index e97f8e2b4c..85485e9358 100644 --- a/src/composite.c +++ b/src/composite.c @@ -882,14 +882,15 @@ fill_gstring_body (Lisp_Object gstring) /* Try to compose the characters at CHARPOS according to composition rule RULE ([PATTERN PREV-CHARS FUNC]). LIMIT limits the characters to compose. STRING, if not nil, is a target string. WIN is a - window where the characters are being displayed. If characters are + window where the characters are being displayed. TRIGGER is the + character that triggered the composition check. If characters are successfully composed, return the composition as a glyph-string object. Otherwise return nil. */ static Lisp_Object autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t limit, struct window *win, struct face *face, - Lisp_Object string, Lisp_Object direction) + Lisp_Object string, Lisp_Object direction, int trigger) { ptrdiff_t count = SPECPDL_INDEX (); Lisp_Object pos = make_fixnum (charpos); @@ -920,7 +921,7 @@ autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos, struct frame *f = XFRAME (font_object); if (FRAME_WINDOW_P (f)) { - font_object = font_range (charpos, bytepos, &to, win, face, string); + font_object = font_range (charpos, bytepos, &to, win, face, string, trigger); if (! FONT_OBJECT_P (font_object) || (! NILP (re) && to < limit @@ -1269,7 +1270,7 @@ composition_reseat_it (struct composition_it *cmp_it, ptrdiff_t charpos, if (XFIXNAT (AREF (elt, 1)) != cmp_it->lookback) goto no_composition; lgstring = autocmp_chars (elt, charpos, bytepos, endpos, - w, face, string, direction); + w, face, string, direction, cmp_it->ch); if (composition_gstring_p (lgstring)) break; lgstring = Qnil; @@ -1307,7 +1308,7 @@ composition_reseat_it (struct composition_it *cmp_it, ptrdiff_t charpos, else direction = QR2L; lgstring = autocmp_chars (elt, cpos, bpos, charpos + 1, w, face, - string, direction); + string, direction, cmp_it->ch); if (! composition_gstring_p (lgstring) || cpos + LGSTRING_CHAR_LEN (lgstring) - 1 != charpos) /* Composition failed or didn't cover the current @@ -1676,7 +1677,7 @@ find_automatic_composition (ptrdiff_t pos, ptrdiff_t limit, ptrdiff_t backlim, for (check = cur; check_pos < check.pos; ) BACKWARD_CHAR (check, stop); *gstring = autocmp_chars (elt, check.pos, check.pos_byte, - tail, w, NULL, string, Qnil); + tail, w, NULL, string, Qnil, c); need_adjustment = 1; if (NILP (*gstring)) { diff --git a/src/font.c b/src/font.c index e043ef8d01..74a1214b38 100644 --- a/src/font.c +++ b/src/font.c @@ -3866,6 +3866,9 @@ font_at (int c, ptrdiff_t pos, struct face *face, struct window *w, If STRING is not nil, it is the string to check instead of the current buffer. In that case, FACE must be not NULL. + TRIGGER is the character that actually caused the composition + process to start, it may be different from the character at POS. + The return value is the font-object for the character at POS. *LIMIT is set to the position where that font can't be used. @@ -3873,15 +3876,16 @@ font_at (int c, ptrdiff_t pos, struct face *face, struct window *w, Lisp_Object font_range (ptrdiff_t pos, ptrdiff_t pos_byte, ptrdiff_t *limit, - struct window *w, struct face *face, Lisp_Object string) + struct window *w, struct face *face, Lisp_Object string, + int trigger) { ptrdiff_t ignore; int c; Lisp_Object font_object = Qnil; + struct frame *f = XFRAME (w->frame); if (!face) { - struct frame *f = XFRAME (w->frame); int face_id; if (NILP (string)) @@ -3912,6 +3916,23 @@ font_range (ptrdiff_t pos, ptrdiff_t pos_byte, ptrdiff_t *limit, continue; if (NILP (font_object)) { + if (EQ (CHAR_TABLE_REF (Vchar_script_table, trigger), + Qemoji)) + { + Lisp_Object val = assq_no_quit (Qemoji, Vscript_representative_chars); + if (CONSP (val)) + { + int face_id; + val = XCDR (val); + if (CONSP (val)) + val = XCAR (val); + else if (VECTORP (val)) + val = AREF (val, 0); + c = XFIXNAT (val); + face_id = FACE_FOR_CHAR (f, face, c, pos - 1, string); + face = FACE_FROM_ID (f, face_id); + } + } font_object = font_for_char (face, c, pos - 1, string); if (NILP (font_object)) return Qnil; @@ -5423,6 +5444,7 @@ syms_of_font (void) DEFSYM (Qiso8859_1, "iso8859-1"); DEFSYM (Qiso10646_1, "iso10646-1"); DEFSYM (Qunicode_bmp, "unicode-bmp"); + DEFSYM (Qemoji, "emoji"); /* Symbols representing keys of font extra info. */ DEFSYM (QCotf, ":otf"); diff --git a/src/font.h b/src/font.h index d3e1530642..1da72cca07 100644 --- a/src/font.h +++ b/src/font.h @@ -885,7 +885,7 @@ valid_font_driver (struct font_driver const *d) extern Lisp_Object font_update_drivers (struct frame *f, Lisp_Object list); extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t, ptrdiff_t *, struct window *, struct face *, - Lisp_Object); + Lisp_Object, int); extern void font_fill_lglyph_metrics (Lisp_Object, struct font *, unsigned int); extern Lisp_Object font_put_extra (Lisp_Object font, Lisp_Object prop, ^ permalink raw reply related [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 17:43 ` Robert Pluim @ 2021-09-21 18:28 ` Eli Zaretskii 2021-09-22 9:02 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 18:28 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com > Date: Tue, 21 Sep 2021 19:43:05 +0200 > > Eli, is this the kind of thing you were thinking of? Seems to work so > far (with a small addition to blocks.awk). Yes, with a minor comment below. > We'll need to find a better name for the new arg than 'trigger' > though. How about just 'ch'? We use such names all over the place, so describing what it is in the comment should be enough. > @@ -3912,6 +3916,23 @@ font_range (ptrdiff_t pos, ptrdiff_t pos_byte, ptrdiff_t *limit, > continue; > if (NILP (font_object)) > { > + if (EQ (CHAR_TABLE_REF (Vchar_script_table, trigger), > + Qemoji)) > + { > + Lisp_Object val = assq_no_quit (Qemoji, Vscript_representative_chars); > + if (CONSP (val)) > + { > + int face_id; > + val = XCDR (val); > + if (CONSP (val)) > + val = XCAR (val); > + else if (VECTORP (val)) > + val = AREF (val, 0); > + c = XFIXNAT (val); > + face_id = FACE_FOR_CHAR (f, face, c, pos - 1, string); > + face = FACE_FROM_ID (f, face_id); > + } > + } > font_object = font_for_char (face, c, pos - 1, string); > if (NILP (font_object)) > return Qnil; For backward compatibility, I'd prefer here, if font_for_char returns nil for the representative Emoji character, to call font_for_char again with the face and codepoint for the original character. Thanks. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 18:28 ` Eli Zaretskii @ 2021-09-22 9:02 ` Robert Pluim 2021-09-24 19:28 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2021-09-22 9:02 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, 39799, mfabian >>>>> On Tue, 21 Sep 2021 21:28:40 +0300, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com >> Date: Tue, 21 Sep 2021 19:43:05 +0200 >> >> Eli, is this the kind of thing you were thinking of? Seems to work so >> far (with a small addition to blocks.awk). Eli> Yes, with a minor comment below. >> We'll need to find a better name for the new arg than 'trigger' >> though. Eli> How about just 'ch'? We use such names all over the place, so Eli> describing what it is in the comment should be enough. OK >> @@ -3912,6 +3916,23 @@ font_range (ptrdiff_t pos, ptrdiff_t pos_byte, ptrdiff_t *limit, >> continue; >> if (NILP (font_object)) >> { >> + if (EQ (CHAR_TABLE_REF (Vchar_script_table, trigger), >> + Qemoji)) >> + { >> + Lisp_Object val = assq_no_quit (Qemoji, Vscript_representative_chars); >> + if (CONSP (val)) >> + { >> + int face_id; >> + val = XCDR (val); >> + if (CONSP (val)) >> + val = XCAR (val); >> + else if (VECTORP (val)) >> + val = AREF (val, 0); >> + c = XFIXNAT (val); >> + face_id = FACE_FOR_CHAR (f, face, c, pos - 1, string); >> + face = FACE_FROM_ID (f, face_id); >> + } >> + } >> font_object = font_for_char (face, c, pos - 1, string); >> if (NILP (font_object)) >> return Qnil; Eli> For backward compatibility, I'd prefer here, if font_for_char returns Eli> nil for the representative Emoji character, to call font_for_char Eli> again with the face and codepoint for the original character. OK. I spoke a little too soon, itʼs not working 100% reliably, sometimes the composition happens but the glyph for the preceding codepoint is not from the emoji font. Robert -- ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-22 9:02 ` Robert Pluim @ 2021-09-24 19:28 ` Mike FABIAN 2021-09-25 5:55 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2021-09-24 19:28 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799 [-- Attachment #1: Type: text/plain, Size: 403 bytes --] I have now tested with current git master (last commit 35d0675467e61aff30c21544f87f55b1b1a2cfd3) and it is much better! Thank you very much! I could still find one sequence which doesn‘t work though: 🏴☠ U+1F3F4 U+200D U+2620 pirate flag Works in gedit (i.e. it works in pango/cairo/harfbuzz), see screenshot. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 [-- Attachment #2: Screenshot.png --] [-- Type: image/png, Size: 32267 bytes --] ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-24 19:28 ` Mike FABIAN @ 2021-09-25 5:55 ` Eli Zaretskii 2021-09-25 7:35 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-25 5:55 UTC (permalink / raw) To: Mike FABIAN; +Cc: rgm, rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: Eli Zaretskii <eliz@gnu.org>, rgm@gnu.org, 39799@debbugs.gnu.org > Date: Fri, 24 Sep 2021 21:28:22 +0200 > > I could still find one sequence which doesn‘t work though: > > 🏴☠ U+1F3F4 U+200D U+2620 pirate flag > > Works in gedit (i.e. it works in pango/cairo/harfbuzz), see screenshot. Sounds like a bug in gedit: according to emoji-zwj-sequences.txt, this is not a complete sequence, the final U+FE0F is missing. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-25 5:55 ` Eli Zaretskii @ 2021-09-25 7:35 ` Mike FABIAN 2021-09-25 9:19 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2021-09-25 7:35 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, rpluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: Eli Zaretskii <eliz@gnu.org>, rgm@gnu.org, 39799@debbugs.gnu.org >> Date: Fri, 24 Sep 2021 21:28:22 +0200 >> >> I could still find one sequence which doesn‘t work though: >> >> 🏴☠ U+1F3F4 U+200D U+2620 pirate flag >> >> Works in gedit (i.e. it works in pango/cairo/harfbuzz), see screenshot. > > Sounds like a bug in gedit: according to emoji-zwj-sequences.txt, this > is not a complete sequence, the final U+FE0F is missing. Ah, you are right, with the final U+FE0F it works, great! Then I cannot find any sequence anymore which do not work except those Robert already mentioned. Something behaves slightly weird though when stepping with the cursor over the following emojis: 👩🏽 🏴 🏴 🏴 🏳️🌈 🏳️⚧️ 🏴☠️ For the 3 British flags, 🏴 🏴 🏴, I need 7 times forward-char to step over them (they are made from 7 code points). But for the other emoji in that example (👩🏽 🏳️🌈 🏳️⚧️ 🏴☠️) I need only 1 forward-char to step over each of them, even though they are also made from more than one code point. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-25 7:35 ` Mike FABIAN @ 2021-09-25 9:19 ` Eli Zaretskii 2021-11-06 18:59 ` Lars Ingebrigtsen 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-25 9:19 UTC (permalink / raw) To: Mike FABIAN; +Cc: rgm, rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, rgm@gnu.org, 39799@debbugs.gnu.org > Date: Sat, 25 Sep 2021 09:35:03 +0200 > > Something behaves slightly weird though when stepping with the cursor > over the following emojis: > > 👩🏽 🏴 🏴 🏴 🏳️🌈 🏳️⚧️ 🏴☠️ > > For the 3 British flags, 🏴 🏴 🏴, I need 7 times forward-char to step > over them (they are made from 7 code points). But for the other emoji in > that example (👩🏽 🏳️🌈 🏳️⚧️ 🏴☠️) I need only 1 forward-char to step over > each of them, even though they are also made from more than one code > point. Thanks, I installed a fix. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-25 9:19 ` Eli Zaretskii @ 2021-11-06 18:59 ` Lars Ingebrigtsen 0 siblings, 0 replies; 104+ messages in thread From: Lars Ingebrigtsen @ 2021-11-06 18:59 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, rpluim, 39799, Mike FABIAN This was a very long thread, but skimming it, I think that basically Robert fixed what was under discussion here, so I'm closing this bug report. If there's more to be done here, a new report that addresses those things in specific should be opened. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-20 20:38 ` Robert Pluim 2021-09-21 9:16 ` Eli Zaretskii @ 2021-09-21 11:48 ` Mike FABIAN 2021-09-21 11:58 ` Eli Zaretskii 1 sibling, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2021-09-21 11:48 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799 [-- Attachment #1: Type: text/plain, Size: 2392 bytes --] Robert Pluim <rpluim@gmail.com> さんはかきました: >>>>>> On Fri, 28 Feb 2020 21:56:04 +0100, Robert Pluim <rpluim@gmail.com> said: > >>>>>> On Fri, 28 Feb 2020 22:16:21 +0200, Eli Zaretskii <eliz@gnu.org> said: > >>> One thing though: the code currently does set-char-table-range to a > >>> new value. Is there a chance that an entry already exists in > >>> composition-function-table for a particular character? > > Eli> Only if the non-leading character is a combining character, which I > Eli> think is unlikely. But in general, yes, this should be tested up > Eli> front to avoid losing composition rules. > > Robert> OK, Iʼll take that into account. > > Robert> Robert > > Iʼve just pushed a change to master that should fix (almost) all the > issues with displaying emoji sequences (except for keycaps). Feedback > welcome. Should that also fix the skin tones? Because '👩🏽' (U+1F469 U+1F3FD) still displays as two characters for me although the cursor moves over it as one character. The font used seems to be JoyPixels: position: 1928 of 2088 (92%), restriction: <669-2089>, column: 1 character: 👩 (displayed as 👩) (codepoint 128105, #o372151, #x1f469) charset: unicode (Unicode (ISO10646)) code point in charset: 0x1F469 script: emoji syntax: w which means: word category: .:Base to input: type "C-x 8 RET 1f469" or "C-x 8 RET WOMAN" buffer code: #xF0 #x9F #x91 #xA9 file code: #xF0 #x9F #x91 #xA9 (encoded by coding system utf-8-emacs) display: composed to form "👩🏽" (see below) Composed with the following character(s) "🏽" using this font: ftcrhb:-GOOG-JoyPixels-normal-normal-normal-*-16-*-*-*-*-0-iso10646-1 by these glyphs: [0 1 128105 2168 19 0 19 15 4 nil] with these character(s): 🏽 (#x1f3fd) EMOJI MODIFIER FITZPATRICK TYPE-4 Character code properties: customize what to show name: WOMAN general-category: So (Symbol, Other) decomposition: (128105) ('👩') There are text properties here: fontified t Also from the way it looks it seems to be JoyPixels. And that font seems to support the skintones in other programs like emoji-picker: [-- Attachment #2: Screenshot.png --] [-- Type: image/png, Size: 56822 bytes --] [-- Attachment #3: Type: text/plain, Size: 78 bytes --] -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 11:48 ` Mike FABIAN @ 2021-09-21 11:58 ` Eli Zaretskii 2021-09-21 12:27 ` Mike FABIAN 2021-09-21 12:50 ` Robert Pluim 0 siblings, 2 replies; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 11:58 UTC (permalink / raw) To: Mike FABIAN; +Cc: rgm, rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: Eli Zaretskii <eliz@gnu.org>, rgm@gnu.org, 39799@debbugs.gnu.org > Date: Tue, 21 Sep 2021 13:48:17 +0200 > > > Iʼve just pushed a change to master that should fix (almost) all the > > issues with displaying emoji sequences (except for keycaps). Feedback > > welcome. > > Should that also fix the skin tones? It should, and I thought HarfBuzz on Cairo already supported that? Can you try this with hb-view and see if HarfBuzz produces a single glyph/grapheme from this sequence? ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 11:58 ` Eli Zaretskii @ 2021-09-21 12:27 ` Mike FABIAN 2021-09-21 12:37 ` Eli Zaretskii 2021-09-21 12:50 ` Robert Pluim 1 sibling, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2021-09-21 12:27 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, rpluim, 39799 [-- Attachment #1: Type: text/plain, Size: 904 bytes --] Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: Eli Zaretskii <eliz@gnu.org>, rgm@gnu.org, 39799@debbugs.gnu.org >> Date: Tue, 21 Sep 2021 13:48:17 +0200 >> >> > Iʼve just pushed a change to master that should fix (almost) all the >> > issues with displaying emoji sequences (except for keycaps). Feedback >> > welcome. >> >> Should that also fix the skin tones? > > It should, and I thought HarfBuzz on Cairo already supported that? Yes, and I think my screenshot shows that it does because my Screenshot uses Pango (and the rest of the rendering stack including HarfBuzz and Cairo). > Can you try this with hb-view and see if HarfBuzz produces a single > glyph/grapheme from this sequence? $ hb-view --annotate --font-file=/home/mfabian/.fonts/joypixels-6.6/android/joypixels-android. ttf --font-size=50 --text="👩🏽" looks like: [-- Attachment #2: Screenshot.png --] [-- Type: image/png, Size: 12822 bytes --] [-- Attachment #3: Type: text/plain, Size: 79 bytes --] -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 12:27 ` Mike FABIAN @ 2021-09-21 12:37 ` Eli Zaretskii 0 siblings, 0 replies; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 12:37 UTC (permalink / raw) To: Mike FABIAN; +Cc: rgm, rpluim, 39799 > From: Mike FABIAN <mfabian@redhat.com> > Cc: rpluim@gmail.com, rgm@gnu.org, 39799@debbugs.gnu.org > Date: Tue, 21 Sep 2021 14:27:39 +0200 > > >> Should that also fix the skin tones? > > > > It should, and I thought HarfBuzz on Cairo already supported that? > > Yes, and I think my screenshot shows that it does because my Screenshot > uses Pango (and the rest of the rendering stack including HarfBuzz and > Cairo). Now I'm confused: what do you mean here by "it does"? Does Emacs support that, or does some other program support it? If Emacs, then why did you just tell there was a problem? When I said "I thought HarfBuzz on Cairo already supported that", I meant Emacs that uses HarfBuzz on Cairo. I'm pretty sure we do support color Emoji in that configuration. > > Can you try this with hb-view and see if HarfBuzz produces a single > > glyph/grapheme from this sequence? > > $ hb-view --annotate --font-file=/home/mfabian/.fonts/joypixels-6.6/android/joypixels-android. > ttf --font-size=50 --text="👩🏽" > > looks like: The image looks partial and pixelated. Can you produce PNG or JPEG or some other color image file, and attach it? Anyway, if hb-view produces a single glyph, then I guess we need to debug ftcrfont.c and/or hbfont.c to see why we we produce 2 glyphs in that case. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 11:58 ` Eli Zaretskii 2021-09-21 12:27 ` Mike FABIAN @ 2021-09-21 12:50 ` Robert Pluim 2021-09-21 13:06 ` Eli Zaretskii 1 sibling, 1 reply; 104+ messages in thread From: Robert Pluim @ 2021-09-21 12:50 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, 39799, Mike FABIAN >>>>> On Tue, 21 Sep 2021 14:58:35 +0300, Eli Zaretskii <eliz@gnu.org> said: >> From: Mike FABIAN <mfabian@redhat.com> >> Cc: Eli Zaretskii <eliz@gnu.org>, rgm@gnu.org, 39799@debbugs.gnu.org >> Date: Tue, 21 Sep 2021 13:48:17 +0200 >> >> > Iʼve just pushed a change to master that should fix (almost) all the >> > issues with displaying emoji sequences (except for keycaps). Feedback >> > welcome. >> >> Should that also fix the skin tones? Eli> It should, and I thought HarfBuzz on Cairo already supported that? It does, but with 'Noto Color Emoji' it doesnʼt work for all codepoints. Eli> Can you try this with hb-view and see if HarfBuzz produces a single Eli> glyph/grapheme from this sequence? For reference, since the documentation of hb-view is sadly lacking: hb-view --output-file=foo.svg --font-size=14 \ /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf -u 1f469 produces a glyph with no skin tone. And hb-view --output-file=foo.svg --font-size=14 \ /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf -u 1f469,1f3fd Produces one with a medium tone. The skin tones are working for other code points, so I donʼt know what's causing this particular problem. Robert -- ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 12:50 ` Robert Pluim @ 2021-09-21 13:06 ` Eli Zaretskii 2021-09-21 13:25 ` Mike FABIAN 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 13:06 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: Mike FABIAN <mfabian@redhat.com>, rgm@gnu.org, 39799@debbugs.gnu.org > Date: Tue, 21 Sep 2021 14:50:22 +0200 > > >> Should that also fix the skin tones? > > Eli> It should, and I thought HarfBuzz on Cairo already supported that? > > It does, but with 'Noto Color Emoji' it doesnʼt work for all > codepoints. > > Eli> Can you try this with hb-view and see if HarfBuzz produces a single > Eli> glyph/grapheme from this sequence? > > For reference, since the documentation of hb-view is sadly lacking: > > hb-view --output-file=foo.svg --font-size=14 \ > /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf -u 1f469 > > produces a glyph with no skin tone. And > > hb-view --output-file=foo.svg --font-size=14 \ > /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf -u 1f469,1f3fd > > Produces one with a medium tone. The skin tones are working for other > code points, so I donʼt know what's causing this particular problem. If it works with hb-view, but not in Emacs, it's our problem. If it doesn't work in hb-view as well, perhaps we should ask the HarfBuzz developers what they have to say about this. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 13:06 ` Eli Zaretskii @ 2021-09-21 13:25 ` Mike FABIAN 2021-09-21 13:53 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Mike FABIAN @ 2021-09-21 13:25 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, Robert Pluim, 39799 Eli Zaretskii <eliz@gnu.org> さんはかきました: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: Mike FABIAN <mfabian@redhat.com>, rgm@gnu.org, 39799@debbugs.gnu.org >> Date: Tue, 21 Sep 2021 14:50:22 +0200 >> >> >> Should that also fix the skin tones? >> >> Eli> It should, and I thought HarfBuzz on Cairo already supported that? >> >> It does, but with 'Noto Color Emoji' it doesnʼt work for all >> codepoints. >> >> Eli> Can you try this with hb-view and see if HarfBuzz produces a single >> Eli> glyph/grapheme from this sequence? >> >> For reference, since the documentation of hb-view is sadly lacking: >> >> hb-view --output-file=foo.svg --font-size=14 \ >> /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf -u 1f469 >> >> produces a glyph with no skin tone. And >> >> hb-view --output-file=foo.svg --font-size=14 \ >> /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf -u 1f469,1f3fd >> >> Produces one with a medium tone. The skin tones are working for other >> code points, so I donʼt know what's causing this particular problem. > > If it works with hb-view, but not in Emacs, it's our problem. If it > doesn't work in hb-view as well, perhaps we should ask the HarfBuzz > developers what they have to say about this. It does work with hb-view. -- Mike FABIAN <mfabian@redhat.com> 睡眠不足はいい仕事の敵だ。 ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 13:25 ` Mike FABIAN @ 2021-09-21 13:53 ` Robert Pluim 2021-09-21 14:19 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2021-09-21 13:53 UTC (permalink / raw) To: Mike FABIAN; +Cc: rgm, 39799 >>>>> On Tue, 21 Sep 2021 15:25:46 +0200, Mike FABIAN <mfabian@redhat.com> said: >> If it works with hb-view, but not in Emacs, it's our problem. If it >> doesn't work in hb-view as well, perhaps we should ask the HarfBuzz >> developers what they have to say about this. Mike> It does work with hb-view. Itʼs a problem with the way we generate the auto composition sequences. If I remove the ZWJ sequences for eg 1f469, then all the skin tone sequences for 1f469 work (and the generating script has an embarassing but harmless typo, which Iʼll fix along the way) Robert -- ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 13:53 ` Robert Pluim @ 2021-09-21 14:19 ` Eli Zaretskii 2021-09-21 14:43 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 14:19 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: Eli Zaretskii <eliz@gnu.org>, rgm@gnu.org, 39799@debbugs.gnu.org > Date: Tue, 21 Sep 2021 15:53:52 +0200 > > Mike> It does work with hb-view. > > Itʼs a problem with the way we generate the auto composition > sequences. If I remove the ZWJ sequences for eg 1f469, then all the > skin tone sequences for 1f469 work Not sure I understand. The sequence U+1F4F9,U+1F3FD indeed does not appear in emoji-zwj.el, but it does appear in emoji-sequences.txt. However, the string "👩🏽" doesn't match the regexp in the composition-function-table's slot for U+1F4F9. Why is this? ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 14:19 ` Eli Zaretskii @ 2021-09-21 14:43 ` Robert Pluim 2021-09-21 15:58 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2021-09-21 14:43 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, 39799, mfabian >>>>> On Tue, 21 Sep 2021 17:19:23 +0300, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: Eli Zaretskii <eliz@gnu.org>, rgm@gnu.org, 39799@debbugs.gnu.org >> Date: Tue, 21 Sep 2021 15:53:52 +0200 >> Mike> It does work with hb-view. >> >> Itʼs a problem with the way we generate the auto composition >> sequences. If I remove the ZWJ sequences for eg 1f469, then all the >> skin tone sequences for 1f469 work 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)))) 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. Robert -- ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 14:43 ` Robert Pluim @ 2021-09-21 15:58 ` Eli Zaretskii 2021-09-21 16:10 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 15:58 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: mfabian@redhat.com, rgm@gnu.org, 39799@debbugs.gnu.org > 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? ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 15:58 ` Eli Zaretskii @ 2021-09-21 16:10 ` Robert Pluim 2021-09-21 16:23 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Robert Pluim @ 2021-09-21 16:10 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, 39799, mfabian >>>>> On Tue, 21 Sep 2021 18:58:38 +0300, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: mfabian@redhat.com, rgm@gnu.org, 39799@debbugs.gnu.org >> 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 -- ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 16:10 ` Robert Pluim @ 2021-09-21 16:23 ` Eli Zaretskii 2021-09-21 16:50 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 16:23 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: mfabian@redhat.com, rgm@gnu.org, 39799@debbugs.gnu.org > Date: Tue, 21 Sep 2021 18:10:37 +0200 > > >>>>> On Tue, 21 Sep 2021 18:58:38 +0300, Eli Zaretskii <eliz@gnu.org> said: > > >> 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. This rang a bell, so I looked around. And sure enough, there's this subtlety documented in the doc string of composition-function-table: The element at index C in the table, if non-nil, is a list of composition rules of the form ([PATTERN PREV-CHARS FUNC] ...); the rules must be specified in the descending order of PREV-CHARS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ values. ^^^^^^ (I could find the code which enforces this, if necessary, but I clearly remember bumping into this in misc-lang.el, with Arabic composition rules, which is when I added the above to documentation.) And emoji-zwj.el doesn't adhere to this condition. If you reorder the rules as required above, does the problem go away (I cannot test this myself, as I don't have access to a system where color Emoji work in Emacs)? > 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 :-) ) If the above doesn't work, I will dig more. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 16:23 ` Eli Zaretskii @ 2021-09-21 16:50 ` Eli Zaretskii 2021-09-21 18:20 ` Eli Zaretskii 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 16:50 UTC (permalink / raw) To: rpluim; +Cc: rgm, 39799, mfabian > Date: Tue, 21 Sep 2021 19:23:41 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com > > The element at index C in the table, if non-nil, is a list of > composition rules of the form ([PATTERN PREV-CHARS FUNC] ...); > the rules must be specified in the descending order of PREV-CHARS > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > values. > ^^^^^^ > > (I could find the code which enforces this, if necessary, but I > clearly remember bumping into this in misc-lang.el, with Arabic > composition rules, which is when I added the above to documentation.) > > And emoji-zwj.el doesn't adhere to this condition. If you reorder the > rules as required above, does the problem go away (I cannot test this > myself, as I don't have access to a system where color Emoji work in > Emacs)? Actually, ignore me: the above is for rules for the same character, whereas emoji-zwj.el doesn't have such rules. I will take a look at the code. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 16:50 ` Eli Zaretskii @ 2021-09-21 18:20 ` Eli Zaretskii 2021-09-22 8:59 ` Robert Pluim 2021-09-24 11:41 ` Robert Pluim 0 siblings, 2 replies; 104+ messages in thread From: Eli Zaretskii @ 2021-09-21 18:20 UTC (permalink / raw) To: rpluim; +Cc: rgm, 39799, mfabian > Date: Tue, 21 Sep 2021 19:50:00 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com > > I will take a look at the code. AFAICT, the composition machinery doesn't allow to have a rule with non-zero PREV-CHARS where PREV-CHARS are supposed to match characters that have their own rules in composition-function-table. Such rules are never considered, because once the rules for a character are processed, we never reconsider what to do with that character. I will ask Kenichi Handa whether my conclusion is indeed correct, but for now, I think we should take the fire escape you mentioned earlier: > >> 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. AFAIU, this means we will add 1F3FB..1F3FF to the characters that can follow each of those which have rules with zero lookback. Thanks. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 18:20 ` Eli Zaretskii @ 2021-09-22 8:59 ` Robert Pluim 2021-09-22 13:47 ` Eli Zaretskii 2021-09-24 11:41 ` Robert Pluim 1 sibling, 1 reply; 104+ messages in thread From: Robert Pluim @ 2021-09-22 8:59 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, 39799, mfabian >>>>> On Tue, 21 Sep 2021 21:20:07 +0300, Eli Zaretskii <eliz@gnu.org> said: >> Date: Tue, 21 Sep 2021 19:50:00 +0300 >> From: Eli Zaretskii <eliz@gnu.org> >> Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com >> >> I will take a look at the code. Eli> AFAICT, the composition machinery doesn't allow to have a rule with Eli> non-zero PREV-CHARS where PREV-CHARS are supposed to match characters Eli> that have their own rules in composition-function-table. Such rules Eli> are never considered, because once the rules for a character are Eli> processed, we never reconsider what to do with that character. I will Eli> ask Kenichi Handa whether my conclusion is indeed correct, but for Eli> now, I think we should take the fire escape you mentioned earlier: OK. Those are surprising semantics. If it does turn out to be like that, we should document it. >> >> 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. Eli> AFAIU, this means we will add 1F3FB..1F3FF to the characters that can Eli> follow each of those which have rules with zero lookback. Yes. I won't get to that today though. Robert -- ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-22 8:59 ` Robert Pluim @ 2021-09-22 13:47 ` Eli Zaretskii 0 siblings, 0 replies; 104+ messages in thread From: Eli Zaretskii @ 2021-09-22 13:47 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: rgm@gnu.org, 39799@debbugs.gnu.org, mfabian@redhat.com > Date: Wed, 22 Sep 2021 10:59:00 +0200 > > Eli> AFAICT, the composition machinery doesn't allow to have a rule with > Eli> non-zero PREV-CHARS where PREV-CHARS are supposed to match characters > Eli> that have their own rules in composition-function-table. Such rules > Eli> are never considered, because once the rules for a character are > Eli> processed, we never reconsider what to do with that character. I will > Eli> ask Kenichi Handa whether my conclusion is indeed correct, but for > Eli> now, I think we should take the fire escape you mentioned earlier: > > OK. Those are surprising semantics. If it does turn out to be like > that, we should document it. We could probably lift this restriction if we change the logic in composition_compute_stop_pos: it currently returns as soon as it finds the first character with a valid entry in composition-function-table, instead of keeping looking until it finds the one whose rule's PATTERN starts at the smallest character position. But even if it turns out there are no problems with such a change, I wouldn't do it for Emacs 28. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-21 18:20 ` Eli Zaretskii 2021-09-22 8:59 ` Robert Pluim @ 2021-09-24 11:41 ` Robert Pluim 2021-09-24 12:04 ` Eli Zaretskii 1 sibling, 1 reply; 104+ messages in thread From: Robert Pluim @ 2021-09-24 11:41 UTC (permalink / raw) To: Eli Zaretskii, mfabian; +Cc: rgm, 39799 >>>>> On Tue, 21 Sep 2021 21:20:07 +0300, Eli Zaretskii <eliz@gnu.org> said: >> This turns out to be a pretty small change, so if we donʼt get to the >> bottom of it we have an alternative. Eli> AFAIU, this means we will add 1F3FB..1F3FF to the characters that can Eli> follow each of those which have rules with zero lookback. Yes. Iʼve now pushed exactly that to master. There are two types of sequences that donʼt work: 1. Where the base character has Emoji_Presentation = No, hence we donʼt consider it for composition. These are all in the U+2xxx range, since we explicitly override this for those in the U+1xxxx range. They do have Emoji_Modifier_Base = Yes, but we donʼt currently do anything with that info. I guess if we managed to store it in a codepoint property somewhere, we could teach set-fontset-font or the composition code about it, but itʼs far too close to emacs-28 for that. 2. Ones I canʼt test because my version of Noto Color Emoji doesnʼt have glyphs for the base character (essentially these are all the new 14.0 emoji codepoints). (this does not include the change for choosing emoji presentation for codepoints followed by VS-16; that still needs some work). Thanks for the testing and the feedback so far. Robert -- ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-24 11:41 ` Robert Pluim @ 2021-09-24 12:04 ` Eli Zaretskii 2021-09-24 12:10 ` Robert Pluim 0 siblings, 1 reply; 104+ messages in thread From: Eli Zaretskii @ 2021-09-24 12:04 UTC (permalink / raw) To: Robert Pluim; +Cc: rgm, 39799, mfabian > From: Robert Pluim <rpluim@gmail.com> > Cc: rgm@gnu.org, 39799@debbugs.gnu.org > Date: Fri, 24 Sep 2021 13:41:07 +0200 > > Yes. Iʼve now pushed exactly that to master. There are two types of > sequences that donʼt work: > > 1. Where the base character has Emoji_Presentation = No, hence we > donʼt consider it for composition. These are all in the U+2xxx range, > since we explicitly override this for those in the U+1xxxx range. They > do have Emoji_Modifier_Base = Yes, but we donʼt currently do anything > with that info. I guess if we managed to store it in a codepoint > property somewhere, we could teach set-fontset-font or the composition > code about it, but itʼs far too close to emacs-28 for that. The idea was to make this work with the patch to font_range on which you were working? > (this does not include the change for choosing emoji presentation for > codepoints followed by VS-16; that still needs some work). That one is not just for VS-16, right? Thanks. ^ permalink raw reply [flat|nested] 104+ messages in thread
* bug#39799: 28.0.50; Most emoji sequences don’t render correctly 2021-09-24 12:04 ` Eli Zaretskii @ 2021-09-24 12:10 ` Robert Pluim 0 siblings, 0 replies; 104+ messages in thread From: Robert Pluim @ 2021-09-24 12:10 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rgm, 39799, mfabian >>>>> On Fri, 24 Sep 2021 15:04:18 +0300, Eli Zaretskii <eliz@gnu.org> said: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: rgm@gnu.org, 39799@debbugs.gnu.org >> Date: Fri, 24 Sep 2021 13:41:07 +0200 >> >> Yes. Iʼve now pushed exactly that to master. There are two types of >> sequences that donʼt work: >> >> 1. Where the base character has Emoji_Presentation = No, hence we >> donʼt consider it for composition. These are all in the U+2xxx range, >> since we explicitly override this for those in the U+1xxxx range. They >> do have Emoji_Modifier_Base = Yes, but we donʼt currently do anything >> with that info. I guess if we managed to store it in a codepoint >> property somewhere, we could teach set-fontset-font or the composition >> code about it, but itʼs far too close to emacs-28 for that. Eli> The idea was to make this work with the patch to font_range on which Eli> you were working? Yes. I donʼt know yet if that will be enough to allow removing the overrides. >> (this does not include the change for choosing emoji presentation for >> codepoints followed by VS-16; that still needs some work). Eli> That one is not just for VS-16, right? Right. Itʼs just that VS-16 make a convenient and colourful test case. Robert -- ^ permalink raw reply [flat|nested] 104+ messages in thread
end of thread, other threads:[~2021-11-06 18:59 UTC | newest] Thread overview: 104+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-02-26 14:28 bug#39799: 28.0.50; Most emoji sequences don’t render correctly Mike FABIAN 2020-02-28 7:14 ` Eli Zaretskii 2020-02-28 7:36 ` Mike FABIAN 2020-02-28 8:25 ` Eli Zaretskii 2020-02-28 12:21 ` Robert Pluim 2020-02-28 12:46 ` Mike FABIAN 2020-02-28 13:19 ` Robert Pluim 2020-02-28 13:50 ` Mike FABIAN 2020-02-28 13:56 ` Eli Zaretskii 2020-02-28 14:44 ` Mike FABIAN 2020-02-28 13:08 ` Eli Zaretskii 2020-02-28 13:47 ` Mike FABIAN 2020-02-28 13:54 ` Eli Zaretskii 2020-02-28 14:14 ` Robert Pluim 2020-02-28 14:45 ` Eli Zaretskii 2020-02-28 15:32 ` Mike FABIAN 2020-02-28 15:57 ` Robert Pluim 2020-02-28 15:39 ` Robert Pluim 2020-02-28 16:38 ` Mike FABIAN 2020-02-28 14:46 ` Eli Zaretskii 2020-02-28 15:35 ` Robert Pluim 2020-02-28 15:44 ` Eli Zaretskii 2020-02-28 16:24 ` Robert Pluim 2020-02-28 17:30 ` Mike FABIAN 2020-02-28 17:55 ` Mike FABIAN 2020-02-28 18:01 ` Robert Pluim 2020-02-28 19:29 ` Mike FABIAN 2020-02-28 19:34 ` Mike FABIAN 2020-02-28 21:32 ` Mike FABIAN 2020-02-28 21:38 ` Robert Pluim 2020-02-28 20:21 ` Eli Zaretskii 2020-02-28 20:25 ` Eli Zaretskii 2020-02-28 21:02 ` Eli Zaretskii 2020-02-28 21:47 ` Robert Pluim 2020-02-28 22:07 ` Eli Zaretskii 2020-02-29 7:50 ` Mike FABIAN 2020-02-29 9:40 ` Eli Zaretskii 2020-02-29 10:45 ` Mike FABIAN 2020-02-28 21:10 ` Mike FABIAN 2020-02-28 21:49 ` Eli Zaretskii 2020-02-29 7:59 ` Mike FABIAN 2020-02-29 10:04 ` Eli Zaretskii 2020-02-29 11:14 ` Mike FABIAN 2020-02-29 11:52 ` Eli Zaretskii 2020-02-29 16:59 ` Mike FABIAN 2020-02-28 20:13 ` Eli Zaretskii 2020-02-28 20:38 ` Robert Pluim 2020-02-28 20:55 ` Eli Zaretskii 2020-02-28 21:22 ` Robert Pluim 2020-02-28 21:27 ` Mike FABIAN 2020-02-28 21:52 ` Eli Zaretskii 2020-02-29 8:01 ` Mike FABIAN 2020-02-29 9:49 ` Eli Zaretskii 2020-02-29 10:26 ` Mike FABIAN 2020-02-29 11:19 ` Eli Zaretskii 2020-02-29 11:36 ` Mike FABIAN 2020-02-29 11:58 ` Eli Zaretskii 2020-02-29 17:03 ` Mike FABIAN 2020-02-29 17:19 ` Eli Zaretskii 2020-02-29 11:41 ` Mike FABIAN 2020-02-29 12:02 ` Eli Zaretskii 2020-02-29 17:14 ` Mike FABIAN 2020-02-29 17:27 ` Eli Zaretskii 2020-03-02 9:10 ` Robert Pluim 2020-03-02 11:02 ` Eli Zaretskii 2020-02-28 21:14 ` Mike FABIAN 2020-02-28 21:50 ` Eli Zaretskii 2020-02-28 16:19 ` Eli Zaretskii 2020-02-28 16:39 ` Robert Pluim 2020-02-28 20:16 ` Eli Zaretskii 2020-02-28 20:56 ` Robert Pluim 2021-09-20 20:38 ` Robert Pluim 2021-09-21 9:16 ` Eli Zaretskii 2021-09-21 10:34 ` Robert Pluim 2021-09-21 10:54 ` Eli Zaretskii 2021-09-21 11:31 ` Eli Zaretskii 2021-09-21 17:43 ` Robert Pluim 2021-09-21 18:28 ` Eli Zaretskii 2021-09-22 9:02 ` Robert Pluim 2021-09-24 19:28 ` Mike FABIAN 2021-09-25 5:55 ` Eli Zaretskii 2021-09-25 7:35 ` Mike FABIAN 2021-09-25 9:19 ` Eli Zaretskii 2021-11-06 18:59 ` Lars Ingebrigtsen 2021-09-21 11:48 ` Mike FABIAN 2021-09-21 11:58 ` Eli Zaretskii 2021-09-21 12:27 ` Mike FABIAN 2021-09-21 12:37 ` Eli Zaretskii 2021-09-21 12:50 ` Robert Pluim 2021-09-21 13:06 ` Eli Zaretskii 2021-09-21 13:25 ` Mike FABIAN 2021-09-21 13:53 ` Robert Pluim 2021-09-21 14:19 ` Eli Zaretskii 2021-09-21 14:43 ` Robert Pluim 2021-09-21 15:58 ` Eli Zaretskii 2021-09-21 16:10 ` Robert Pluim 2021-09-21 16:23 ` Eli Zaretskii 2021-09-21 16:50 ` Eli Zaretskii 2021-09-21 18:20 ` Eli Zaretskii 2021-09-22 8:59 ` Robert Pluim 2021-09-22 13:47 ` Eli Zaretskii 2021-09-24 11:41 ` Robert Pluim 2021-09-24 12:04 ` Eli Zaretskii 2021-09-24 12:10 ` Robert Pluim
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.