我正在尝试查找Unicode标准定义的表情符号代码点的官方列表,并且遇到了一些相互冲突的来源:根据表情符号数据.txt偶数数字是表情符号;unicode.org 的其他来源仅建议该列表的一个子集是表情符号,例如表情符号图表和表情符号测试文件。Unicode 技术报告 #51 中甚至有一个名为"哪些字符是表情符号"的部分,但它并没有真正回答我的问题,或者至少我在那里看不到它。
那么,哪些 Unicode 代码点是表情符号?
并非所有表情符号都是从单个 Unicode 代码点创建的。有些字符只有在组合成"表情符号序列"时才会出现表情符号。这使得仅通过代码点很难计算表情符号字符。这就是UTR #51中的第3节试图传达的内容,但可以通过一些示例进行改进:
U+0031
是 1,但与U+FE0F U+20E3
: ⃣ 结合使用时会出现表情符号外观(或带有U+FE0E U+20E3
: 1️1︎⃣ 的普通外观)。U+1F170
是 ,但与U+FE0F
: ️ 结合使用时会出现表情符号外观。U+2620
是︎ ☠,但与U+FE0F
结合使用时会出现表情符号:☠️。- (通常,
U+FE0F
变体序列用于将许多现有字符转换为相应的表情符号序列,而无需将它们编码为单独的代码点。 - 区域指示器符号仅在形成国家/地区代码时显示为表情符号:
U+1F1E6 U+1F1F6
,但不显示为U+1F1E6 U+1F1F5
。
emoji-data.txt
文件列出了具有Emoji=Yes
字符属性的所有字符。这些都是基本字符(例如 1、、︎ ☠、、),至少可以开始一个表情符号序列,即使它们本身不是一个完整的序列。emoji-test.txt
文件列出了所有完整的表情符号序列。