Subject: bug#63731: [PATCH] Support Emoji Variation Sequence 16 (FE0F) where appropriate

From: Robert Pluim <[email-masked]>
Date: Fri, 26 May 2023 17:29:41 +0200

>>>>> On Fri, 26 May 2023 08:06:11 -0700, Steven Allen <[email-masked]> said:

    Steven> Eli Zaretskii <[email-masked]> writes:
    >> AFAIU, this change will populate composition-function-table for many
    >> "normal" characters, including ASCII digits and symbol/punctuation
    >> characters from the 0x2xxx blocks.  E.g., after you build Emacs with
    >> this patch, what do the following evaluations yield:
    >> 
    >> M-: (aref composition-function-table ?0) RET
    >> M-: (aref composition-function-table #x2122) RET
    >> 
    >> If they yield non-nil values, it could mean dramatic slowdown of
    >> redisplay with these characters.

    Steven> Both of these yield nil with this patch applied (and I haven't noticed
    Steven> any performance regressions). But it looks like you and Robert have a
    Steven> better patch so I'll leave you to it.

Itʼs smaller, thatʼs for sure. And it will definitely be faster.

    Steven> However, I'd like to draw your attention to the existing hard-coded
    Steven> VS-16 table here:

    Steven> https://git.savannah.gnu.org/cgit/emacs.git/tree/admin/unidata/emoji-zwj.awk?h=4b3de748b0b04407d2492500c77905de56de1180#n72

    Steven> It feels like this should either be the full table (the one in the
    Steven> patch) or it shouldn't exist at all. But again, I'm not the expert here.

Welcome to the wonderful world of Unicode. The reason the table exists
is that there are codepoints that are *not* emoji, but theyʼre part of
emoji sequences, so we still need to treat them as emoji in some
situations. Why Unicode didnʼt just make them emoji I donʼt know.

Robert
--