Subject: Re: bug#54970: 28.1; Some emoji no longer display

From: Eli Zaretskii <[email-masked]>
Date: Mon, 18 Apr 2022 08:12:51 +0300

> From: Howard Melman <[email-masked]>
> Date: Sun, 17 Apr 2022 18:03:38 -0400
> Cc: Eli Zaretskii <[email-masked]>,
>  [email-masked],
>  [email-masked],
>  [email-masked]
> 
> > Iʼm not sure what we could change. I guess we could add a
> > configuration variable that says 'treat every code point that has a
> > default text presentation and an emoji one as emoji', except we
> > already have that: VARIATION SELECTOR 16
> 
> Yes, I think I would like a configuration variable like that.  It's seems like a good
> application of the Robustness Principle.  

We decided not to use the Emoji presentation of these characters by
default for a good reason: there are many symbols that _can_ have
Emoji presentation, but they are used frequently in "normal" text.
Look at the beginning of admin/unidata/emoji-data.txt, and you will
see what I mean: even ASCII characters like '#' and digits can have
Emoji presentation, and we definitely don't want them appear as Emoji.
Don't forget that Emacs display features like this one are _global_,
so if for some insane reason we decide to have digits displayed as
Emoji, you will get that everywhere, including on the mode line, for
example.

So what will that hypothetical variable do?  It cannot affect all the
characters that _may_ have the Emoji presentation, so we will need to
decide which ones to affect and which ones not to affect.  If you look
at emoji-data.txt, you will realize that the decision is not easy; for
example, what about U+2122 TRADE MARK SIGN or U+23F0 ALARM CLOCK or
U+262E PEACE SYMBOL?  Some people will want them as Emoji, while
others won't.  So we'd need another variable with a long list of
codepoints that are Emoji by default?  Such a variable sounds like a
PITA to let users customize.

So we decided not to do any of that, and instead to go with the
default presentation as determined by Unicode.  I hope you now
understand better why we did that.

> I also thought perhaps there should be another "script" parallel to 'emoji that
> included these so I could something like
> 
> (set-fontset-font t 'emoji-vs '("Apple Color Emoji" . "iso10646-1") nil 'prepend)
> 
> but now I suspect that's not really the right way? Or is it?

A character cannot belong to more than one script in Emacs, so that's
not possible, AFAIU.  And I don't see why it would be necessary, since
one can customize the fontset for individual codepoints without using
a script symbol.