第一章 介绍Emoji

表情符号是象形文字(图形符号),通常以彩色卡通形式呈现并在文本中内嵌使用。它们代表诸如面孔、天气、车辆和建筑物、食物和饮料、动物和植物或代表情感、感觉或活动的图标等事物。

表情符号这个词来自日语:絵(e≅图片)文字(moji≅文字)。

表情符号可以在内部表示为图形,也可以通过像其他字符一样以字体编码的普通字形表示。为清楚起见,后者被称为表情符号字符。一些 Unicode 字符通常显示为表情符号;有些通常显示为普通文本,有些可以双向显示。

表情符号于 1999 年在日本手机上可用。早在 2000 年就提出了将 DoCoMo 表情符号编码为 Unicode 标准的提议。当时还不清楚这些字符是否会被广泛使用——而且日本手机运营商也不支持将它们添加到 Unicode 中——因此没有采取任何行动。

表情符号在日本非常流行,但每个手机运营商都开发了不同(但部分重叠)的集合,每个手机供应商都使用自己的文本编码扩展,这些扩展互不兼容。供应商开发了交叉映射表,以允许表情符号字符与其他供应商的手机(包括电子邮件)进行有限的交换。其他平台无法显示的字符用〓(U+3013 GETA MARK)表示,但字符很容易损坏或掉线。

当非日本电子邮件和手机供应商开始支持与日本运营商的电子邮件交换时,他们遇到了这些问题。此外,没有办法用 Unicode 来表示这些字符,而 Unicode 是所有现代程序中文本的基础。2006 年,Google 开始着手将日文表情符号转换为 Unicode 私人使用代码,从而在2007 年

开发了内部映射表,以通过 Unicode 字符支持运营商表情符号。

然而,私有使用方法存在许多问题,因此向 Unicode 联盟提出了一项建议,以扩大符号的范围以包含表情符号。该提案于 2007 年 5 月获得批准,导致符号小组委员会的成立,2007 年 8 月,技术委员会同意根据小组委员会制定的一套原则支持 Unicode 中的表情符号编码。以下是一些跟踪 Unicode 表情符号字符进程的文档。

表情符号提案


日期文件号标题作者

2000-04-26L2/00-152NTT DoCoMo 象形文字格雷厄姆·阿舍(Symbian)

2006-11-01L2/06-369符号(范围扩展)马克戴维斯(谷歌)

2007-08-03L2/07-257编码表情符号的工作草案提案Kat Momoi、Mark Davis、Markus Scherer(谷歌)

2007-08-09L2/07-274R符号决议草案马克戴维斯(谷歌)

2007-09-18L2/07-391日本电视符号 (ARIB)米歇尔·苏格纳德(微软)

2009-01-30L2/09-026为新编码提出的表情符号Markus Scherer、Mark Davis、Kat Momoi、Darick Tong(谷歌);

Yasuo Kida, Peter Edberg (Apple)

2009-03-05L2/09-025R2对表情符号进行编码的建议

2010-04-27L2/10-132表情符号:背景数据

2011-02-15L2/11-052RWingdings 和 Webdings 符号米歇尔·苏格纳德


要查找此表中的文档,请参阅UTC 文档。

2009 年,第一个明确用作表情符号的 Unicode 字符被添加到 Unicode 5.2 中,以实现与 ARIB(无线电工业和商业协会)集的互操作性。一组 722 个字符被定义为日本手机运营商使用的表情符号字符的联合:其中 114 个字符已经在 Unicode 5.2 中。2010 年,剩下的 608 个表情符号字符与其他一些表情符号字符一起被添加到 Unicode 6.0。2012 年,更多的表情符号被添加到 Unicode 6.1,2014 年更多的表情符号被添加到 Unicode 7.0。从那时起,根据提交 Unicode 表情符号提案指南中的选择因素,添加了其他字符。 

以下是用作表情符号的一些主要象形文字来源何时以 Unicode 编码的摘要。每个来源可能包含除表情符号之外的其他字符,Unicode 字符可以对应多个来源。L 列包含用于图表 [emoji-charts] 和数据文件 [emoji-data] 的各种来源的单字母缩写。不对应任何这些来源的字符可以用其他 (x) 标记。

主要来源


资源缩写大号开发。

开始

发布统一码版本样本字符

黑白颜色代码CLDR 短名称

Zapf DingbatsZDingsz19891991-101.0U+270F铅笔

阿里布阿里布一种2007年2008-10-015.2U+2614带雨滴的雨伞

日本运营商JCarrierj2007年2010-10-116.0U+1F60E带着太阳镜的笑脸

翼和织带WDingsw20102014-06-167.0U+1F336辣椒


有关何时将各种表情符号源集添加到 Unicode 的详细视图,请参阅表情符号版本源[emoji-charts]。数据文件 [JSources] 显示了与原始日本运营商符号的对应关系。

人们经常问 Unicode 标准中有多少个表情符号。这个问题没有一个简单的答案,因为没有明确的界限来区分哪些象形字符应该以典型的表情符号样式显示。有关完整图片,请参阅哪些字符是表情符号

本文档中使用的彩色图像和相关图表 [emoji-charts] 仅用于说明。它们没有出现在只有黑白图像的 Unicode 标准中。它们要么由各自的供应商提供以供在本文档中使用,要么被认为可用于非商业用途。使用供应商图像的许可查询应直接发送给这些供应商,而不是 Unicode 联盟。有关更多信息,请参阅表情符号图像的权利


定义

以下提供了本文档中使用的一些术语的更正式的定义。对文档的其他功能更感兴趣的读者可以选择从第 2 节,设计指南继续。

ED-1。emoji— 一种彩色象形文字,可以在文本中内联使用。在内部,表示是(a)图像,(b)编码字符或(c)编码字符序列。

对于 (a) ,本文档中使用了术语emoji 图像。也可以使用术语贴纸。 

对于 (b)而言,为了清楚起见,在必要时使用了表情符号字符这一术语。 

对于 (c),为了清楚起见,使用了术语emoji 序列

ED-2。emoticon— (1) 一系列文本字符(通常是标点符号或符号),用于表示面部表情或手势,例如 ;-) 和 (2) 在更广泛的意义上,还包括用于面部表情和手势的表情符号。

  表情符号

ED-3。emoji character— 具有Emoji属性的字符。

emoji_character := \p{Emoji}

建议将这些字符用作表情符号。

ED-4。extended pictographic character  — 具有Extended_Pictographic属性的字符。

这些字符是象形的,或者在其他方面与具有 Emoji 属性的字符相似。

 Extended_Pictographic属性用于自定义分割(如 [UAX29] 和 [UAX14] 中所述),以便将来可能的 emoji zwj 序列不会破坏字素簇、单词或线条。在某些块中具有 Line_Break=ID 的未分配代码点也被分配了Extended_Pictographic属性。这些块用于将来分配表情符号字符。

ED-5。emoji component — 具有Emoji_Component属性的字符。

这些字符在表情符号序列中使用,但通常不会作为单独的选项出现在表情符号键盘上,例如键帽基本字符或区域指示符字符。

一些emoji components 是 emoji characters,而其他(例如标签字符和ZWJ)不是。

有关详细信息,请参阅第 3 节,哪些字符是表情符号。有关定义表情符号属性的数据文件的信息,请参阅附件 A:表情符号属性和数据文件。


表情符号展示

ED-6。default emoji presentation character- 默认情况下,应与表情符号演示而不是文本演示一起出现的字符。

default_emoji_presentation_character := \p{Emoji_Presentation}

这些字符具有Emoji_Presentation属性。请参阅附件 A:表情符号属性和数据文件。

ED-7。default text presentation character— 默认情况下应与文本演示一起出现的字符,而不是表情符号演示。

default_text_presentation_character := \P{Emoji_Presentation}

这些字符没有Emoji_Presentation属性;也就是说,它们的Emoji_Presentation属性值为No。请参阅附件 A:表情符号属性和数据文件。

有关表情符号和文本演示的更多详细信息,请参阅第 2 节,设计指南第 4 节,演示样式

表情符号和文本呈现序列

ED-8。text presentation selector - 字符 U+FE0E VARIATION SELECTOR-15 (VS15),用于请求表情符号字符的文本呈现。 (在本规范的先前版本中 也称为文本变体选择器 

text_presentation_selector := \x{FE0E}

ED-8a。text presentation sequence 由一个emoji character和一个text presentation selector

text_presentation_sequence := emoji_character text_presentation_selector

唯一有效的文本呈现序列是 emoji-variation-sequences.txt[emoji-data] 中列出的那些。

ED-9。emoji presentation selector - 字符 U+FE0F VARIATION SELECTOR-16 (VS16),用于请求表情符号字符的表情符号演示。 (在本规范的先前版本中 也称为表情符号变体选择器 

emoji_presentation_selector := \x{FE0F}

ED-9a。emoji presentation sequence— 由一个emoji character 一个 emoji presentation selector.。

emoji_presentation_sequence := emoji_character emoji_presentation_selector

唯一有效的表情符号呈现序列是 emoji-variation-sequences.txt[emoji-data]中列出的那些。

表情符号修饰符

ED-11。emoji modifier— 可用于修改emoji 修饰符序列中前面的 emoji 外观的字符。

emoji_modifier := \p{Emoji_Modifier}

这些字符具有Emoji_Modifier属性。请参阅附件 A:表情符号属性和数据文件。

ED-12。emoji modifier base— 一个字符,其外观可以由emoji 修饰符序列中的后续 emoji 修饰符修改。

emoji_modifier_base := \p{Emoji_Modifier_Base}

这些字符具有Emoji_Modifier_Base属性。请参阅附件 A:表情符号属性和数据文件。

它们也列在受表情符号修饰符的字符中。

ED-13。emoji modifier sequence— 以下形式的序列:

emoji_modifier_sequence :=

emoji_modifier_base emoji_modifier

有关表情符号修饰符的更多详细信息,请参阅第 2.4 节,多样性。

表情符号序列

ED-14。emoji flag sequence- 两个区域指示符字符的序列,其中对应的 ASCII 字符是[CLDRUnicode 区域子标签指定的有效区域序列 ,idStatus="regular" 或 "deprecated"。另请参阅附件 B:有效的表情符号标志序列。  

emoji_flag_sequence :=

regional_indicator regional_indicator

regional_indicator := \p{Regional_Indicator}

单例区域指示符字符不是格式良好的emoji flag sequence

ED-14a。emoji tag sequence (ETS)— 以下形式的序列:

emoji_tag_sequence := tag_base tag_spec tag_end

tag_base           := emoji_character

| emoji_modifier_sequence

| emoji_presentation_sequence

tag_spec           := [\x{E0020}-\x{E007E}]+

tag_end            := \x{E007F}

 tag_spec由从 U+E0020 TAG SPACE 到 U+E007E TAG TILDE 的所有字符组成。每个都tag_spec定义了一个特定的视觉变体,以应用于tag_base字符。虽然tag_spec包括值 U+E0041 TAG LATIN CAPITAL LETTER A .. U+E005A TAG LATIN CAPITAL LETTER Z,但它们目前不使用,保留用于将来的扩展。

由tag_end字符 U+E007F CANCEL TAG 组成,必须用于终止序列。

不属于 an 的标签字符序列emoji_tag_sequence不是格式良好的emoji tag sequence.

 表情符号标签序列的含义和有效性标准以及 a 的预期视觉变体tag_spec由附件 C:有效表情符号标签序列确定。


ED-14c。emoji keycap sequence— 以下形式的序列:

emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}

这些序列位于type_fieldEmoji_Keycap_Sequence下列出的emoji-sequences.txt文件中 

ED-15。emoji core sequence — 以下形式的序列:

emoji_core_sequence :=

emoji_character

| emoji_presentation_sequence

| emoji_keycap_sequence

| emoji_modifier_sequence

| emoji_flag_sequence

ED-15a。emoji zwj element— 可以在 emoji ZWJ 序列中使用的更有限的元素,如下所示:

emoji_zwj_element :=

emoji_character

| emoji_presentation_sequence

| emoji_modifier_sequence

ED-16。emoji zwj sequence — 具有至少一个连接符的 emoji 序列。

emoji_zwj_sequence :=

emoji_zwj_element ( ZWJ emoji_zwj_element )+

ZWJ := \x{200d}

ED-17。emoji sequence— 核心序列、标签序列或 ZWJ 序列,如下所示:

emoji_sequence :=

emoji_core_sequence

| emoji_zwj_sequence

| emoji_tag_sequence

ED-17a。qualified emoji character- 字符串中的表情符号字符 (a) 具有默认表情符号表示或 (b) 是表情符号修饰符序列中的第一个字符或 (c) 不是默认表情符号表示字符,但是第一个字符表情符号演示序列。

ED-18。fully-qualified emoji — 限定的 emoji 字符,或每个 emoji 字符都限定的 emoji 序列。

ED-18a。minimally-qualified emoji— 一个 emoji 序列,其中第一个字符是限定的,但序列不是完全限定的。

ED-19。unqualified emoji——既不是完全合格也不是最低限度合格的表情符号。

有关在表情符号序列中使用变体选择器的建议,请参阅第 2.7 节,表情符号实现说明

表情符号集

以下集合是根据附件 A 中描述的数据文件和属性定义的:表情符号属性和数据文件。这些集合的组成可能会从一个版本更改为下一个版本。

这些集合中的每一个都可以被认为是一个二元属性。它们是字符串的属性。有关更多讨论,请参阅UTS #18:Unicode 正则表达式[UTS18] 和UTR #23:Unicode 字符属性模型[UTR23]。

ED-20。basic emoji set— type_field Basic_Emojiemoji-data]中列出的表情符号字符集和表情符号呈现序列。  

这是一组用于通用输入的表情符号。

该集合不包括所有不用于独立直接输入的表情符号组件实例。 实现应支持此集中表情符号组件的独立显示,即使它们不可用于直接输入。

肤色修改器和头发组件甚至应该单独显示,但它们不应该(通常)出现在键盘面板上。这些包含在 Basic_Emoji 中。

其他组件(U+20E3 COMBINING ENCLOSING KEYCAP、区域指示符、标签字符、ZWJ 和 VS16)不应该单独出现表情符号,而是作为表情符号序列的一部分出现。这些不包含在 Basic_Emoji 中。

否则,此集合包括  属性值为Emoji_Presentation = Yes 的表情符号字符的所有实例以及 其基本字符具有属性值Emoji_Presentation= No 的有效 表情符号表示序列的所有实例。      

ED-21。emoji keycap sequence setemoji-sequences.txt文件 [emoji-data] 中 type_fieldEmoji_Keycap_Sequence 下列

这是所有有效表情符号键帽序列的集合。

注意:以下定义使用首字母缩略词“RGI ”来表示“推荐用于一般交换”,指的是旨在跨多个平台广泛支持的某个较大集合的子集。

ED-22。RGI emoji modifier sequence set emoji-sequences.txt文件 [emoji-data] 中 type_fieldRGI_Emoji_Modifier_Sequence 下列

这是推荐用于一般交换的所有有效表情符号修饰符序列的子集。   

ED-23。RGI emoji flag sequence set   — emoji-sequences.txt文件 [emoji-data] 中 type_fieldRGI_Emoji_Flag_Sequence中列出的特定表情符号序列。

这是推荐用于一般交换的所有有效表情符号标志序列的子集。请参阅附件 B:有效的表情符号标志序列  

ED-24。RGI emoji tag sequence set emoji-sequences.txt文件 [emoji-data] 中 type_fieldRGI_Emoji_Tag_Sequence 下列

这是推荐用于一般交换的所有有效表情符号标签序列的子集。请参阅附件 C:有效的表情符号标签序列。   

ED-25。RGI emoji ZWJ sequence set— 在RGI_Emoji_ZWJ_Sequenceemoji-zwj-sequences.txt文件 [emoji-data]。  

这是推荐用于一般交换的所有有效表情符号 zwj 序列的子集。   

ED-26。(此定义已被删除。)

ED-27。RGI emoji set —ED-20ED-21ED-22ED-23ED-24ED-25涵盖的所有表情符号(字符和序列)的集合 。

这是推荐用于一般交换的所有有效表情符号(字符和序列)的子集。

这对应于RGI_Emoji属性。





1.4.7符号

全部大写的字符名称是正式的 Unicode 名称属性值,例如 U+1F473 MAN WITH TURBAN。正式名称是不可变的内部标识符,但通常不能反映当前解释字符的做法。

现有字符或序列的小写字符名称是 CLDR 短名称,例如 U+1F473person wear turban

1.4.8 性能稳定性

表情符号属性对于每个版本的数据都是稳定的——它们不会因那个版本而改变。但是,它们可能会在该版本和后续版本之间发生变化。例如,对于 Emoji 版本 5.0,isEmoji(♟)=false,但对于版本 11.0,则为 true。

某些表情符号属性未针对某些字符串操作关闭。例如:

isEmoji(toLowercase(X)) ≠ isEmoji(X) 对于 X=Ⓜ️ 的情况,因为:

isEmoji(Ⓜ️) = true

toLowercase(Ⓜ️) = ⓜ

isEmoji(ⓜ) = false

套管操作可能会产生无效的变化序列。虽然以下字符串形成了一个大小写对,但emoji presentation selector 没有为 ⓜ 定义,因此对其呈现没有影响:


Ⓜ️ = 有效变化序列

ⓜ = 无效的变化序列



1.4.9EBNF 和正则表达式

以下 EBNF 可用于快速扫描可能的表情符号。然后可以在必要时通过根据定义执行有效性测试或检查RGI 表情符号集来验证这些可能的表情符号。它比当前定义中的表达式要简单得多。它包括一个表情符号的超集,作为这种简单性的副产品,但可以通过有效性测试清除额外的表情符号。


EBNF笔记

可能的表情符号:=

flag_sequence

| zwj_element (\x{200D} zwj_element)*

\x{200D} = 零宽度连接符

flag_sequence :=

  \p{RI} \p{RI}

\p{RI} = 区域指标

zwj_element :=

  \p{Emoji} emoji_modification?


emoji_modification :=

  \p{EMod}

| \x{FE0F} \x{20E3}?

\p{EMod} = Emoji_Modifier

\x{FE0F} = emoji VS

\x{20E3} = 封闭键帽

tag_modifier :=

[\x{E0020}-\x{E007E}]+ \x{E007F}

\x{E00xx} 是标签

\x{E007F} = TERM 标签


 从这些 EBNF 规则可以生成一个正则表达式,如下所示。虽然这个正则表达式可能看起来很复杂,但它比定义的结果要简单得多。直接使用定义会导致正则表达式复杂很多倍,但仍需要通过有效性测试进行验证。


正则表达式

\p{RI} \p{RI}

| \p{表情符号}

  ( \p{EMod}

  | \x{FE0F} \x{20E3}?

  | [\x{E0020}-\x{E007E}]+ \x{E007F} )?

  (\x{200D} \p{Emoji}

    ( \p{EMod}

    | \x{FE0F} \x{20E3}?

    | [\x{E0020}-\x{E007E}]+ \x{E007F} ) ?

  )*



实现

实现可以将表情符号修饰符作为输入调色板中的单独字符呈现,或使用长按等机制呈现组合字符。

表情符号修饰符不适用于与任意表情符号字符组合。相反,它们仅限于表情符号修饰符基本字符:其他字符不得与表情符号修饰符组合。随着本文档的后续版本,该集合可能会随着时间而改变。要查找每个版本的表情符号修饰符库的确切列表,请使用 Emoji_Modifier_Base 字符属性,如附件 A:表情符号属性和数据文件中所述。

示例表情符号修饰符基础



下图显示了带有表情符号修饰符的预期显示,具体取决于前面的字符和对表情符号修饰符的支持级别。“不支持”行显示字符通常如何出现在没有包含该字符的字体的系统上:缺少字形指示符。在某些情况下,应禁止在 Emoji_Modifier_Base 字符之后显示表情符号修饰符:

如果 emoji 修饰符基础在特定系统上没有可见的皮肤,则应禁止任何后续 emoji 修饰符。

在其他情况下,可能会抑制在 Emoji_Modifier_Base 字符之后显示表情符号修饰符:

如果特定 emoji 修饰符基使用与用于其他 Emoji_Modifier_Base 字符的默认肤色不同的非真实肤色,则可能会抑制任何后续 emoji 修饰符。例如,假设吸血鬼在特定实现中显示为灰色皮肤,而其他 Emoji_Modifier_Base 字符在没有表情符号修饰符的情况下显示为霓虹黄色皮肤;吸血鬼之后的任何表情符号修饰符都可能被抑制。

预期的表情符号修饰符显示


支持水平表情符号修饰符基础顺序展示

完全支持是的+

是的+

是的,但看不到皮肤+

是,但不寻常的默认肤色+

不+

倒退是的+

不+

不支持是的+

不+


如上所述,在第 2.4 节的末尾,多样性,表情符号表示选择器既不需要也不推荐用于表情符号修饰符序列。见ED-13。表情符号修饰符序列。但是,较旧的数据可能包含有缺陷的表情符号修饰符序列,其中确实包含表情符号表示选择器。



2.5Emoji ZWJ 序列

U+200D ZERO WIDTH JOINER (ZWJ) 可用于字符序列的元素之间,以指示应显示单个字形(如果可用)。实现可以使用这种机制来处理这样的 emoji zwj 序列作为单个字形,使用调色板或键盘为所示字形生成适当的序列。对于这样一个系统的用户来说,这些行为就像单个表情符号字符,即使它们在内部是序列。

当 emoji zwj 序列被发送到没有对应的单个字形的系统时,ZWJ 字符将被忽略并显示单独的 emoji 的后备序列。因此,一个 emoji zwj 序列只应由回退序列对接收者也有意义的实现来定义和支持。

例如,以下是可能的显示:

ZWJ序列显示


顺序展示组合字形?

是的



2.5Emoji ZWJ 序列

U+200D ZERO WIDTH JOINER (ZWJ) 可用于字符序列的元素之间,以指示应显示单个字形(如果可用)。实现可以使用这种机制来处理这样的 emoji zwj 序列作为单个字形,使用调色板或键盘为所示字形生成适当的序列。对于这样一个系统的用户来说,这些行为就像单个表情符号字符,即使它们在内部是序列。

当 emoji zwj 序列被发送到没有对应的单个字形的系统时,ZWJ 字符将被忽略并显示单独的 emoji 的后备序列。因此,一个 emoji zwj 序列只应由回退序列对接收者也有意义的实现来定义和支持。

例如,以下是可能的显示:

ZWJ序列显示


顺序展示组合字形?

是的



2.6多人分组

有几种表情符号描绘了不止一个人的互动。如果这些要通过选择或性别或肤色来实施,则可能需要根据具体情况进行特殊处理。下面列出了这些表情符号:

多人分组


十六进制字符CLDR 名称

U+1F91D握手

U+1F46F有兔耳朵的人

U+1F93C人们摔跤

U+1F46B手牵手的女人和男人

U+1F46C手牵手的男人

U+1F46D手牵手的妇女

U+1F48F吻

U+1F491有心的情侣

U+1F46A家庭


还有一些其他表情符号可以共享相同的性别和肤色,例如双手合十。就性别和肤色而言,这些行为就像一个人一样,因此不需要特殊处理。其他示例包括:

对于 U+1F486接受按摩的人,提供按摩的人的手应该被描绘成没有肤色显示,也许戴着手套。

对于以下 emoji 及其肤色变体,婴儿应被描绘为不显示肤色,可能被毯子覆盖,以便将 emoji 视为一个人以进行肤色修改:

U+1F931母乳喂养

U+1F469 U+200D U+1F37C女人喂奶

U+1F468 U+200D U+1F37C男人喂奶

U+1F9D1 U+200D U+1F37C人喂奶

2.6.1多人性别

多人分组的表情符号具有未指定的性别(除非修改),但牵手的三个字符除外。握手本身并没有提供性别差异。

通过使用包含 MAN、WOMAN、ADULT、BOY、GIRL 和 CHILD 的 ZWJ 序列,将 Gender 应用于 KISS、COUPLE WITH HEART 和 FAMILY。数据文件列出了这些的 RGI 版本,如下所示:


U+1F469 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F468吻:女人,男人



使用 ZWJ 序列将性别应用于具有兔耳朵的人和摔跤的人,如下所示。

多人分组的性别


描述内部代表

有兔耳朵的人

兔耳朵的男人

兔耳朵的女人

人们摔跤

男子摔跤

女子摔跤



2.6.2多人肤色

与性别一样,肤色可以以类似的方式应用于多人分组。由序列内部表示的表情符号可能会在每个使用它们的字符(带有 Emoji_Modifier_Base 的字符)之后添加肤色修饰符(Emoji_Modifier字符)。这通过下面的表使用序列进行多人分组的肤色进行了说明。   

不应生成混合没有肤色的人物角色和有肤色的人物角色的多人序列。也就是说,对于输入系统,如果多人表情符号序列中的一个人物角色具有肤色修饰符,那么该序列中的所有人物角色都应该具有肤色修饰符。

在 Emoji 12.0 中,更新了 Emoji_Modifier_Base 属性、表情修饰符序列和RGI ZWJ 序列,添加了 25 种男女手拉手的肤色组合,以及女性手拉手、男性手拉手和人手拉手的各 15 种组合。这些序列显示为 70 个不同的图像。

在 Emoji 12.1 中,女性手拉手、男性手拉手和人们手拉手的 RGI ZWJ 序列进一步更新,分别增加了 10 个序列,因此它们的序列对应于女性和男性手拉手的序列。新序列适用于不同肤色的人,但在序列后期而不是较早时肤色较深。例如:

表情符号 12.0 序列: 1F4681F3FD200D 1F91D 200D 1F4681F3FB;手拉手的男士:中等肤色,肤色

表情符号 12.1 新增:1F4681F3FB200D 1F91D 200D 1F4681F3FD;手牵手的男士:肤色,中等肤色

上述序列之间的唯一区别是,中等肤色男人和浅肤色男人的推断位置是左右互换的。

实现可以为两个序列使用相同的图像。对于多人表情符号,实现不需要仅根据位置为相同性别的人提供不同的图像。是否这样做的选择可能取决于特定于特定供应商图像的设计考虑。

其他不同肤色组合的多人组可以表示为有效序列,但还不是RGI;例如,为家庭添加混合肤色会添加 4,225 个表情符号序列。

使用序列进行多人分组的肤色


描述内部代表

手牵手的女性:

中等、深色的肤色

手牵手的人:

中等、深色的肤色

家庭:女人,女人,女孩,女孩:

中等,黑暗。浅色,中等肤色



肤色修饰符可以应用于多人分组表中列出的九个角色中的每一个;下表说明了其中一些字符的示例。这使组中的所有人都具有相同的肤色,这类似于性别标记的工作方式。

但是,在 Emoji 14.0 中,此类 emoji 修饰符序列仅对 9 个字符中的 6 个具有 RGI 状态:亲吻带心的情侣、牵手的男女、牵手男人、牵手女人握手

使用单个字符的多人分组的肤色


描述内部代表

握手:

中等肤色

兔耳朵的人:

中等肤色

兔耳女性:

中等肤色

手牵手的男女:

中等肤色

家庭:

中等肤色



2.7.1Emoji and Text Presentation Selectors

This section describes where the emoji presentation selectors can be used. The text presentation selector only occurs in text presentation sequences, which are not displayed as emoji.

CharactersVariation / Behavior

emoji charactermayhave an emoji or text presentation selector added if the result is a validemoji presentation sequenceortext presentation sequence

shouldhave an emoji presentation selector added if Emoji_Presentation=No whenever an emoji presentation is desired

emoji flag sequencedoes notcontain an emoji or text presentation selector

shouldbe displayed with an emoji presentation by default

emoji modifier sequencedoes notcontain an emoji or text presentation selector

shouldbe displayed with an emoji presentation by default, whether or not the modifier base has Emoji_Presentation=Yes

Implementationsmaychoose to support old data that containsdefectiveemoji_modifier_sequences, that is, having emoji presentation selectors.

emoji zwj sequencemay havean emoji presentation selector

The recommended behavior is:

User Input:

onlyfully-qualified emojizwj sequences should be generated by keyboards and other user input devices.

Processing and Display:

fully-qualified emojizwj sequences should be handled appropriately in processing, such as display, editing, segmentation, and so on.

minimally-qualifiedorunqualifiedemoji zwj sequences may be handled in the same way as their fully-qualified forms; the choice is up to the implementation.

A text presentation selector breaks an emoji zwj sequence, preventing characters on either side from displaying as a single image. The two partial sequences should be displayed as separate images, each with presentation style as specified by any presentation selectors present, or by default style for those emoji that do not have any variation selectors.


2.8头发成分

Emoji 版本 11.0 引入了头发组件,可以在 ZWJ 序列中使用来指示头发颜色或样式。推荐用于通用交换 (RGI) 的序列列在数据文件中。组件包括:

红发(姜)

卷发

白发

头发颜色和发型有数百种可能的区别,但为了限制组合的数量——而且因为表情符号是用“卡通”风格呈现的——头发成分的数量很少。请注意,金发男子/女人/人物表情符号已经提供了金色的头发颜色。棕色/黑色头发已经是人形表情符号中头发颜色的典型默认设置。

2.9颜色

ZWJ 序列中可以使用九个大的彩色方形表情符号,以指示如果可能的话,应该以该颜色显示基本表情符号。结果图像的颜色可能与颜色方块不完全相同。用于此目的的颜色方块是:

U+2B1B黑色大方

U+2B1C 白色大方

U+1F7E5 大红色正方形 ... U+1F7EB 大棕色正方形

如果实现不提供该颜色的单个表情符号图像,用户应该看到显示所需颜色指示的后备外观。如果支持颜色 ZWJ 序列并且基本表情符号已经具有该颜色,则应忽略颜色方块。

表情符号字形颜色示例


 内部代表样品

展示

后备

外观

黑猫

U+1F408U+200DU+2B1B

橘猫

U+1F408U+200DU+1F7E7


方格需要 ZWJ;它们的行为不像Emoji Modifiers中列出的五个肤色修饰符。

 白色方形表情符号通常呈现为浅灰色,以将其与白色背景区分开来。


2.10表情符号字形朝向

根据供应商的做法,带有面向右侧或左侧的字形的表情符号可能面向任一方向。但是,在跨平台交换文本时,这种不一致可能会导致含义发生变化。以下 ZWJ 机制可用于明确指示方向。如果没有面向该方向的基本表情符号图像,用户应该会看到显示所需方向指示的后备外观。如果支持方向 ZWJ 序列并且基本表情符号已经面向该方向,则应忽略方向表情符号。

表情符号字形方向示例


内部代表预期

显示

后备

外观

U+1F3C3U+200DU+2B05 U+FE0F

U+1F3C3U+200DU+27A1 U+FE0F


在 Emoji 版本 14.0 中没有这种形式的 RGI emoji ZWJ 序列。

2.11Emoji ZWJ 序列的顺序

为个人表示 emoji ZWJ 序列时,应使用以下顺序:


命令类别部分

1根据第 1.4.1 节表情符号字符

2表情符号修饰符或表情符号演示选择器第 2.4 节多样性

3头发成分第 2.8 节头发组件

4颜色第 2.9 节,颜色

5性别标志或对象第 2.3.1 节,中性表情符号

6方向指示器第 2.10 节,表情符号字形朝向




3哪些字符是表情符号

有多种方法可以计算 Unicode 中的表情符号,特别是因为表情符号序列可能显示为单个表情符号图像。以下概述了计算表情符号的方法;它可以是(例如):

可以在 emoji 中使用的代码点的数量,尽管这包括一些仅用作序列的一部分并且本身没有表情符号外观的代码点;

 可以显示为单个字形的一个或多个字符的所有序列(可能更接近用户认为的表情符号数量),尽管通常只有可能序列的子集在任何平台上显示为单个字形,并且一些序列可能是特定于平台的扩展。

 建议任何旨在支持 Unicode 表情符号的字体或键盘都应支持 [emoji-data] 数据文件中列出的字符和序列。完整集的最佳定义在 emoji-test.txt 文件中。

 Emoji Counts, v14.0图表提供了有关本规范当前版本的各种计数的更多详细信息。Emoji Counts Key中描述了各种列和行标题 。

图表中的“小计”行表示用户通常认为的表情符号的数量。例如,其中不包括 26 个区域指标 (RI) 代码点;即使它们具有 Emoji 状态,它们通常仅成对使用来表示标志。

 典型的键盘通常会显示更少的表情符号,因为它们可能使用长按等机制来显示特定表情符号的修饰符序列,因此不会同时显示与图表行相关的所有图像,这些图表行计算带有显式肤色的表情符号。

单独的 [emoji-charts] 提供了有关其中许多子集和其他子集的更多信息,例如:

最近发布的表情符号字符列在最近添加的表情符号中。

 在Emoji Candidates中可以找到 Unicode 未来版本的 候选表情符号。


Which Characters are Emoji

There are different ways to count the emoji in Unicode, especially because an emoji sequence may display as a single emoji image. The following provides an overview of the ways to count emoji; it can be (for example):

The count of code points that can be used in emoji, though this includes some code points that are only used as part of sequences and don’t have emoji appearance by themselves;

All sequences of one or more characters that can appear as a single glyph (which is probably closer to what users think of as the number of emoji), though typically only a subset of possible sequences are displayed as a single glyph on any platform, and some sequences may be platform-specific extensions.

It is recommended that any font or keyboard whose goal is to support Unicode emoji should support the characters and sequences listed in the [emoji-data] data files. The best definition of the full set is in the emoji-test.txt file.

TheEmoji Counts, v14.0 chart provides more detail about the various counts as of the current version of this specification. The various column and row headers are described inEmoji Counts Key.

The “Subtotal” row in the chart indicates the count of what users typically think of as emoji. For example, the 26 Regional Indicator (RI) code points are not included there; even though they have Emoji status, they are typically only used in pairs to represent flags.

Typical keyboards may normally present even fewer emoji, since they may use mechanisms like a long press to display modifier sequences for specific emoji, and would thus not simultaneously display all of the images associated with the chart rows that count emoji with explicit skin tones.

Separate [emoji-charts] provide more information on many of these subsets and others, for example:

Emoji characters that were released most recently are listed inEmoji Recently Added.

Emoji candidates for a future version of Unicode are found inEmoji Candidates.



即使在表情符号和文本表示选择器可用的情况下,实施者也不清楚象形图的默认表示应该是表情符号还是文本。这意味着当跨平台共享时,一段文本可能会以不同于预期的样式显示。虽然这对于 Unicode 字符来说是完全合法的——永远无法保证呈现风格——但开发人员之间对何时使用表情符号呈现的共识很重要,这样可以减少意外或不和谐的呈现。实现需要知道通常预期的默认表示是什么,以促进跨平台和应用程序的互操作性。

对于实现者来说,三类 Unicode 字符之间没有明确的界限:

emoji-default:那些希望默认有表情符号演示的人,但也可以有文本演示

text-default:那些期望默认有文本显示,但也可以有表情符号显示的人

text-only:那些应该只有文本演示的


可以使用附件 A:表情符号属性和数据文件中列出的属性来区分这些类别。第一类是Emoji=YesEmoji_Presentation=Yes的字符。第二类是Emoji=YesEmoji_Presentation=No的字符。第三类是Emoji=No的字符。

给定表情符号字符的呈现取决于环境、是否存在表情符号或文本呈现选择器以及默认呈现样式(表情符号与文本)。在短信和聊天等非正式环境中,大多数表情符号字符以彩色表情符号呈现更合适,并且仅获得带有文本呈现选择器的文本呈现。反之,在文字处理等正式环境中,一般情况下,emoji 字符最好以文本呈现形式出现,而仅通过 emoji 呈现选择器获得彩色 emoji 呈现。




Emoji Character Properties


PropertyAbbrProperty Values

EmojiEmoji=Yesfor characters that are emoji

Emoji_PresentationEPres=Yesfor characters that have emoji presentation by default

Emoji_ModifierEMod=Yesfor characters that are emoji modifiers

Emoji_Modifier_BaseEBase=Yesfor characters that can serve as a base for emoji modifiers

Emoji_ComponentEComp=Yesfor characters used in emoji sequences that normally do not appear on emoji keyboards as separate choices, such as keycap base characters or Regional_Indicator characters. All characters in emoji sequences are eitherEmojiorEmoji_Component. Implementations must not, however, assume that allEmoji_Componentcharacters are alsoEmoji. There are some non-emoji characters that are used in various emoji sequences, such as tag characters andZWJ.

Extended_PictographicExtPict=Yesfor characters that are used to future-proof segmentation. TheExtended_Pictographiccharacters contain all theEmojicharacters except for someEmoji_Componentcharacters.


IfEmoji=No, thenEmoji_Presentation=No,Emoji_Modifier=No, andEmoji_Modifier_Base=No.




A.1Data Files

The emoji properties are specified in the emoji data files (see [emoji-data]):

Data Files


emoji-data.txtProperty value for the properties listed in theEmoji Character Propertiestable

emoji-variation-sequences.txtAll permissibleemoji presentation sequencesandtext presentation sequences

emoji-zwj-sequences.txtZWJ sequences used to represent emoji

emoji-sequences.txtOther sequences used to represent emoji

emoji-test.txtTest file for emoji characters and sequences


主要编码规则详细拆解介绍

Emoji 编码规则 D1 emoji presentation sequence(呈现序列)

Emoji 编码规则 D2 emoji modifier sequence (修饰序列)

Emoji 编码规则 D3 emoji flag sequence (旗帜序列)

Emoji 编码规则 D4 emoji keycap sequence (键盘序列)

Emoji 编码规则 D5 emoji tag sequence (ETS)

Emoji 编码规则 D6 emoji zwj sequence (零宽连接序列)

你可能感兴趣的:(第一章 介绍Emoji)