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

标签 unicode emoji codepoint

红心表情符号 (❤️)“\u2764\uFE0F”似乎需要两个 Unicode 代码点,具体来说 Heavy Black Heart随后是 Variation Selector 。然而,blue 💙 , green 💚 , yellow 💛 ,和purple 💜每个都有自己的单个代码点。

为什么红色如此不同?

最佳答案

由于历史原因。最初,只有 U+2764 HEAVY BLACK HEART,第一个支持表情符号的应用程序决定将其渲染为红心。这些早期的应用程序总是将 U+2764 呈现为表情符号。后来人们意识到这是一个坏主意,表情符号的变体选择器被标准化了。当添加额外的心形表情符号时,不需要另一个红心,因此被省略。相反,有一个单独的黑心表情符号 U+1F5A4 🖤。

理论上,应用程序可能要求将表情符号变体选择器也附加到其他心脏代码点。但将紫心勋章这样的角色渲染为非表情符号并没有多大意义。不过,它确实对《HEAVY BLACK HEART》产生了影响,它通常旨在渲染为原始的、普通的《Heavy Black Heart》角色。

关于unicode - 为什么红心表情符号需要两个代码点,而其他彩色心形表情符号需要一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42679712/

相关文章:

java - 如何将 unicode hex "0x20000"的字符串表示形式转换为 Java 中的 int 代码点 0x20000

string - 检查字节序列是否包含utf-16

python - 如何使用 Python 从文本文件中删除回车符?

Ruby:如何将潜在的 unicode 字符串分解为字节

arrays - 上下文类型 'Emoji' 不能与数组文字一起使用

html - 在 CSS 中使用表情符号有什么好处?

python - 恢复编码错误的文件名

ios - 如何为ios制作新的自定义情感键盘(有点像表情符号)

javascript - 将 JavaScript 字符串拆分为代码点数组? (考虑到 "surrogate pairs"但不是 "grapheme clusters")

java - 如何阅读非 BMP (astral) Unicode 增补字符(代码点)