看来,红色的心形表情符号(❤️)“ \ u2764 \ uFE0F”需要两个Unicode代码点,特别是“沉重的黑色心形”后跟一个“变体选择器”。但是,蓝色💙,绿色yellow,黄色and和紫色💜都有各自的单个代码点。
为什么红色如此不同?
Answers:
由于历史原因。最初只有U + 2764 HEAVY BLACK HEART,最早支持Emojis的应用程序决定将其渲染为红色的心形。这些早期的应用程序始终将U + 2764渲染为表情符号。后来意识到这是一个坏主意,表情符号的变体选择器已标准化。添加其他心脏表情符号时,不需要再添加红色心脏,因此将其省略。而是有一个单独的黑色心形表情符号U + 1F5A4🖤。
从理论上讲,应用程序可能需要将Emoji变体选择器也附加到其他心脏代码点。但是将诸如PURPLE HEART之类的字符呈现为非表情符号并没有多大意义。但是,它对于HEAVY BLACK HEART确实有所不同,通常被设计为原始的普通沉重的黑色心脏字符。
在表情符号出现几十年前,HEAVY BLACK HEART已添加到Unicode。当将表情符号合并到Unicode 6中后,一些已经存在的字符被简单地重新用作表情符号,以避免不必要的重复。后来,为字符定义了变体序列,这些字符也映射到非表情符号字符集,以更好地控制它们的显示方式。例如,U + 2744❄SNOWFLAKE最初来自Zapf Dingbats(我相信),但后来也制成了表情符号。因此,如果要强制使用原始文本样式的显示,可以使用VARIATION SELECTOR-15(结果为❄︎),如果要强制使用较新的表情符号样式的显示,则可以使用VARIATION SELECTOR-16(结果为❄️)。
但是请注意,目前还没有很多平台正确地支持这些变化序列。同样,当使用表情符号键盘时,并非所有人都自动应用变体选择器。理论上,在没有VS16的情况下,❤和❄(以及许多其他emoji表情)应默认显示为文本样式,但是许多应用程序也将其忽略。
如果您有兴趣,我会在我的网站上列出所有可以通过变体顺序显示的代码点列表。六月的下一次Unicode更新将添加更多内容。