为什么红色的心形表情符号需要两个代码点,而其他彩色的心形需要一个代码点?


Answers:


63

由于历史原因。最初只有U + 2764 HEAVY BLACK HEART,最早支持Emojis的应用程序决定将其渲染为红色的心形。这些早期的应用程序始终将U + 2764渲染为表情符号。后来意识到这是一个坏主意,表情符号的变体选择器已标准化。添加其他心脏表情符号时,不需要再添加红色心脏,因此将其省略。而是有一个单独的黑色心形表情符号U + 1F5A4🖤。

从理论上讲,应用程序可能需要将Emoji变体选择器也附加到其他心脏代码点。但是将诸如PURPLE HEART之类的字符呈现为非表情符号并没有多大意义。但是,它对于HEAVY BLACK HEART确实有所不同,通常被设计为原始的普通沉重的黑色心脏字符。


可以肯定的是,其他颜色的心(好吧,其中大多数不是黑色的表情符号心)都在表情符号的第一轮中,但是只有2764被定义为对现有符号的解释。(嗯,至少避免穿西装是真的。)
艾伦·H

34

在表情符号出现几十年前,HEAVY BLACK HEART已添加到Unicode。当将表情符号合并到Unicode 6中后,一些已经存在的字符被简单地重新用作表情符号,以避免不必要的重复。后来,为字符定义了变体序列,这些字符也映射到非表情符号字符集,以更好地控制它们的显示方式。例如,U + 2744❄SNOWFLAKE最初来自Zapf Dingbats(我相信),但后来也制成了表情符号。因此,如果要强制使用原始文本样式的显示,可以使用VARIATION SELECTOR-15(结果为❄︎),如果要强制使用较新的表情符号样式的显示,则可以使用VARIATION SELECTOR-16(结果为❄️)。

但是请注意,目前还没有很多平台正确地支持这些变化序列。同样,当使用表情符号键盘时,并非所有人都自动应用变体选择器。理论上,在没有VS16的情况下,❤和❄(以及许多其他emoji表情)应默认显示为文本样式,但是许多应用程序也将其忽略。

如果您有兴趣,我会在我的网站上列出所有可以通过变体顺序显示的代码点列表。六月的下一次Unicode更新将添加更多内容。


1
注意:Zapf Dingbats(字体)≠Dingbats(Unicode部分)
Alan H.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.