背景:在国内大家找Emoji的材料很多都是经过各大博主吸收过在分析一遍的。而大家分析的角度不同,很难全面的去了解emoji的整个从发展到制作规则,再到该如何展示的一个完整的表情过程。所以把官网的Emoji用谷歌翻译转成中文辅助大家理解。我仅作为搬运分享给大家。为了让大家了解技术的源头。不做商用。如果有侵权行为请联系我。我立马收回。
原文地址:https://www.unicode.org/reports/tr51/#Identification
Unicode® Technical Standard #51
概括
本文档定义了 Unicode 表情符号字符和序列的结构,并提供了支持该结构的数据,例如哪些字符被认为是表情符号,哪些表情符号应该默认显示为文本样式而不是表情符号样式,哪些可以是以多种肤色显示。它还提供设计指南,用于改进跨平台和实现的表情符号字符的互操作性。
从本规范 11.0 版开始,表情符号字符库与 Unicode 标准同步,并具有相同的版本编号系统。有关详细信息,请参阅第 1.5.2 节, 版本控制。
地位
本文档已经过 Unicode 成员和其他相关方的审核,并已被 Unicode 联盟批准发布。这是一份稳定的文件,可用作参考资料或被其他规范引用为规范性参考。
Unicode 技术标准 (UTS)是一个独立的规范。符合 Unicode 标准并不意味着符合任何 UTS。
请使用在线报告表[反馈]提交勘误和其他意见。有助于理解本文档的相关信息可在参考资料中找到。有关 Unicode 标准的最新版本,请参阅 [ Unicode ]。有关当前 Unicode 技术报告的列表,请参阅 [报告]。有关 Unicode 标准版本的更多信息,请参阅 [版本]。
1简介
表:表情符号提案
表:主要来源
1.1表情符号和表情符号
1.2编码注意事项
1.3目标
1.4定义
1.4.1表情符号
1.4.2表情符号展示
1.4.3表情符号和文本呈现序列
1.4.4表情符号修饰符
1.4.5表情符号序列
1.4.6表情符号集
1.4.7符号
1.4.8 性能稳定性
1.4.9 EBNF 和正则表达式
1.5一致性
表:表情符号功能
1.5.1排序一致性
1.5.2版本控制
表:表情符号版本
2设计指南
2.1名称
2.2显示
2.3性别
表:Emoji 13.0+ 中的 Emoji 更改为 Gender-Neutral
2.3.1中性表情符号
2.3.2表情符号输入中的性别标记
2.4多样性
表:表情符号修饰符
2.4.1实现
2.4.2文字中的表情修饰符
表:迷你调色板
2.5 Emoji ZWJ 序列
表:ZWJ序列显示
2.6多人分组
表:多人分组
2.6.1多人性别
表:多人分组的性别
2.6.2多人肤色
2.7 Emoji 实现笔记
2.7.1表情符号和文本呈现选择器
2.7.2处理标签字符
2.8头发成分
2.9颜色
2.10表情符号字形朝向
2.11 Emoji ZWJ 序列的顺序
1简介
表情符号是象形文字(图形符号),通常以彩色卡通形式呈现并在文本中内嵌使用。它们代表诸如面孔、天气、车辆和建筑物、食物和饮料、动物和植物或代表情感、感觉或活动的图标等事物。
智能手机以及聊天和电子邮件应用程序中的表情符号已在全球范围内变得非常流行。例如,截至 2015 年 3 月,Instagram 报告称“[Instagram 上] 近一半的文字包含表情符号。” 如 SwiftKey 表情符号报告中所述,单个表情符号的受欢迎程度也有很大差异(甚至因国家/地区而异)。有关这些报告和其他报告的详细信息,请参阅表情符号新闻页面。
表情符号最常用于快速、简短的社交媒体消息中,它们与读者联系并增加风味、色彩和情感。表情符号没有替代书面语言的语法或词汇。在社交媒体中,表情符号弥补了语音中缺少的手势、面部表情和语调。它们还为消息添加了有用的歧义,允许作者同时传达许多不同的可能概念。许多人也被在表情符号中编写消息的挑战所吸引,以及对表情符号消息的困惑。
表情符号这个词来自日语:
表情符号可以在内部表示为图形,也可以通过像其他字符一样以字体编码的普通字形表示。为清楚起见,后者被称为表情符号字符。一些 Unicode 字符通常显示为表情符号;有些通常显示为普通文本,有些可以双向显示。
自从表情符号出现在 Unicode 标准中以来,媒体对它们的关注度很高,从 2013 年底开始关注度增加。例如,根据谷歌新闻的数据,在 Unicode 7.0 中出现了大约 6,000 篇关于表情符号的文章。有关此类文章的许多示例,请参阅emoji 新闻页面,以及第 38 届国际化和 Unicode 会议的主题演讲。
表情符号于 1999 年在日本手机上可用。早在 2000 年就提出了将 DoCoMo 表情符号编码为 Unicode 标准的提议。当时还不清楚这些字符是否会被广泛使用——而且日本手机运营商也不支持将它们添加到 Unicode 中——因此没有采取任何行动。
表情符号在日本非常流行,但每个手机运营商都开发了不同(但部分重叠)的集合,每个手机供应商都使用自己的文本编码扩展,这些扩展互不兼容。供应商开发了交叉映射表,以允许表情符号字符与其他供应商的手机(包括电子邮件)进行有限的交换。其他平台无法显示的字符用〓(U+3013 GETA MARK)表示,但字符很容易损坏或掉线。
当非日本电子邮件和手机供应商开始支持与日本运营商的电子邮件交换时,他们遇到了这些问题。此外,没有办法用 Unicode 来表示这些字符,而 Unicode 是所有现代程序中文本的基础。2006 年,Google 开始着手将日文表情符号转换为 Unicode 私人使用代码,从而在2007 年
开发了通过 Unicode 字符支持运营商表情符号的内部映射表。
然而,私有使用方法存在许多问题,因此向 Unicode 联盟提出了一项建议,以扩大符号的范围以包含表情符号。该提案于 2007 年 5 月获得批准,导致符号小组委员会的成立,2007 年 8 月,技术委员会同意根据小组委员会制定的一套原则支持 Unicode 中的表情符号编码。以下是一些跟踪 Unicode 表情符号字符进程的文档。
td {white-space:pre-wrap;border:1px solid #dee0e3;}日期文件号标题作者
2000/4/26L2/00-152NTT DoCoMo 象形文字格雷厄姆·阿舍(Symbian)
2006/11/1L2/06-369符号(范围扩展)马克戴维斯(谷歌)
2007/8/3L2/07-257编码表情符号的工作草案提案Kat Momoi、Mark Davis、Markus Scherer(谷歌)
2007/8/9L2/07-274R符号决议草案马克戴维斯(谷歌)
2007/9/18L2/07-391日本电视符号 (ARIB)米歇尔·苏格纳德(微软)
2009/1/30L2/09-026为新编码提出的表情符号Markus Scherer、Mark Davis、Kat Momoi、Darick Tong(谷歌);
Yasuo Kida, Peter Edberg (Apple)
2009/3/5L2/09-025R2对表情符号进行编码的建议
2010/4/27L2/10-132表情符号:背景数据
2011/2/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) 标记。
有关何时将各种表情符号源集添加到 Unicode 的详细视图,请参阅表情符号版本源[emoji-charts]。数据文件 [JSources] 显示了与原始日本运营商符号的对应关系。
人们经常问 Unicode 标准中有多少个表情符号。这个问题没有一个简单的答案,因为没有明确的界限来区分哪些象形字符应该以典型的表情符号样式显示。有关完整图片,请参阅哪些字符是表情符号。
本文档中使用的彩色图像和相关图表 [emoji-charts] 仅用于说明。它们没有出现在只有黑白图像的 Unicode 标准中。它们要么由各自的供应商提供以供在本文档中使用,要么被认为可用于非商业用途。使用供应商图像的许可查询应直接发送给这些供应商,而不是 Unicode 联盟。有关更多信息,请参阅表情符号图像的权利。
1.1表情符号和表情符号
表情符号一词是指一系列文本字符(通常是标点符号或符号),用于表示面部表情或手势(有时从侧面看),如下所示。
;-)
,但后来被改编为包含 Unicode 字符。以下示例不仅使用 ASCII 字符,还使用 U+203F ( ‿ )、U+FE35 ( ︵ )、U+25C9 ( ◉ ) 和 U+0CA0 ( ಠ )。
^‿^
◉︵◉
ಠ_ಠ
通常实现允许使用表情符号来输入表情符号。例如,表情符号 ;-) 可以映射到
聊天窗口中。表情符号一词有时在更广泛的意义上使用,还包括用于面部表情和手势的表情符号。这种广义的含义用于 Unicode 块名称Emoticons,涵盖从 U+1F600 到 U+1F64F 的代码点。
1.2编码注意事项
Unicode 是所有现代软件中文本的基础:它是所有手机、台式机和其他计算机表示每种语言文本的方式。人们每次在手机或台式计算机上键入密钥,以及每次查看网页或应用程序中的文本时,都在使用 Unicode。标准要稳定非常重要,并且要仔细审查其中的每个角色。这需要一个开发周期长的正式流程。例如,
深色太阳镜字符在 Unicode 7.0 发布前几年就首次提出。
考虑进行编码的字符通常必须作为文本元素广泛使用。表情符号和各种符号被添加到 Unicode 中,因为它们在许多日本制造商的公司标准和其他地方用作文本消息的字符,或者在 Wingdings 和 Webdings 等广泛分布的字体中长期使用。在许多情况下,添加字符是为了往返于源集的完整往返,而不是因为它们本质上比其他字符更重要。例如,
翻盖电话字符被包括在内,因为它在 Wingdings 和 Webdings 中,而不是因为它比“臭鼬”字符更重要。
在某些情况下,添加一个字符来完成一个集合:例如,在 Unicode 6.0 中添加了
橄榄球字符以补充
美式足球字符(在 Unicode 5.2 中重新添加了足球)
。同样,添加了一种机制,可用于表示所有国家标志(对应于两个字母的unicode_region_subtag的那些),例如加拿大的标志,即使日本运营商集只有 10 个国家标志。
数据不包括非象形文字,除了那些在 Unicode 中用于表示来自表情符号来源的字符以实现兼容性的数据,例如:
或者
除了 U+1F0CF ( ) PLAYING CARD BLACK JOKER 和 U+1F004 (
) MAHJONG TILE RED DRAGON 之外,游戏部件,例如多米诺骨牌 (🀰 🀱 🀲 ... 🂑 🂒) 目前不包含在表情符号中。这些被包括在内,因为它们对应于每个载体组中的一个表情符号字符。
用于权衡潜在候选人编码的选择因素可在提交 Unicode 表情符号提案指南中的选择因素中找到。该文件还提供了提交新表情符号提案的说明。
有关表情符号的常见问题列表,请参阅Unicode 表情符号常见问题解答。
1.3目标
本文件提供:
用于改进跨平台和实现的互操作性的设计指南
关于表情符号字符的背景信息和长期替代品
数据表明:
哪些字符通常可以被认为是表情符号
默认情况下,哪些表情符号字符应以文本样式与表情符号样式显示
可以使用各种肤色显示哪些表情符号字符,以及实现细节
指向 [CLDR]数据的 指针
更自然地对表情符号进行排序
用于搜索和分组表情符号字符的注释
它还提供了有关表情符号的背景信息,并讨论了表情符号的长期方法。
随着新的 Unicode 字符的添加或表情符号使用的“常见做法”发生变化,本文档提供的数据和建议可能会随之发生变化。因此,建议和数据将在本文档的各个版本中发生变化。
1.4定义
以下提供了本文档中使用的一些术语的更正式的定义。对文档的其他功能更感兴趣的读者可以选择从第 2 节,设计指南继续。
ED-1。emoji— 一种彩色象形文字,可以在文本中内联使用。在内部,表示是(a)图像,(b)编码字符或(c)编码字符序列。
对于 (a) ,本文档中使用了术语emoji 图像。也可以使用术语贴纸。
对于 (b)而言,为了清楚起见,在必要时使用了表情符号字符这一术语。
对于 (c),为了清楚起见,使用了术语emoji 序列。
ED-2。表情符号— (1) 一系列文本字符(通常是标点符号或符号),用于表示面部表情或手势,例如 ;-) 和 (2) 在更广泛的意义上,还包括用于面部表情和手势的表情符号。
1.4.1表情符号
ED-3。emoji character— 具有Emoji 属性的字符。
emoji_character := \p{Emoji}
建议将这些字符用作表情符号。
ED-4。扩展象形文字— 具有 Extended_Pictographic属性的字符。
这些字符是象形的,或者在其他方面与具有 Emoji 属性的字符相似。
Extended_Pictographic属性用于自定义分段(如 [UAX29] 和 [UAX14] 中所述),以便将来可能的 emoji zwj 序列不会破坏字素簇、单词或线条。在某些块中具有 Line_Break=ID 的未分配代码点也被分配了 Extended_Pictographic属性。这些块用于将来分配表情符号字符。
ED-5。表情符号组件— 具有Emoji_Component 属性的字符。
这些字符在表情符号序列中使用,但通常不会作为单独的选项出现在表情符号键盘上,例如键帽基本字符或区域指示符字符。
一些emoji 组件是emoji 字符,而其他(例如标签字符和ZWJ)不是。
有关详细信息,请参阅第 3 节,哪些字符是表情符号。有关定义表情符号属性的数据文件的信息,请参阅附件 A:表情符号属性和数据文件。
1.4.2表情符号展示
ED-6。默认表情符号演示字符- 默认情况下,应与表情符号演示而不是文本演示一起出现的字符。
default_emoji_presentation_character := \p{Emoji_Presentation}
这些字符具有Emoji_Presentation 属性。请参阅附件 A:表情符号属性和数据文件。
ED-7。默认文本演示字符— 默认情况下应与文本演示一起出现的字符,而不是表情符号演示。
default_text_presentation_character := \P{Emoji_Presentation}
这些字符没有Emoji_Presentation 属性;也就是说,它们的Emoji_Presentation 属性值为No。请参阅附件 A:表情符号属性和数据文件。
有关表情符号和文本演示的更多详细信息,请参阅第 2 节,设计指南和第 4 节,演示样式。
1.4.3表情符号和文本呈现序列
ED-8。文本呈现选择器- 字符 U+FE0E VARIATION SELECTOR-15 (VS15),用于请求表情符号字符的文本呈现。 (在本规范的先前版本中 也称为文本变体选择器
text_presentation_selector := \x{FE0E}
ED-8a。文本呈现序列- 由一个表情符号字符 和一个文本呈现选择器。
text_presentation_sequence := emoji_character text_presentation_selector
唯一有效的文本呈现序列是emoji-variation-sequences.txt [emoji-data] 中列出的那些。
ED-9。表情符号演示选择器- 字符 U+FE0F VARIATION SELECTOR-16 (VS16),用于请求表情符号字符的表情符号演示。 (在本规范的先前版本中 也称为表情符号变体选择器
emoji_presentation_selector := \x{FE0F}
ED-9a。emoji 表示序列— 由一个emoji 字符和一个emoji 表示选择器。
emoji_presentation_sequence := emoji_character emoji_presentation_selector
唯一有效的表情符号呈现序列是emoji-variation-sequences.txt [emoji-data]中列出的那些。
ED-10。(此定义已被删除。)
1.4.4表情符号修饰符
ED-11。emoji 修饰符— 可用于修改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 修饰符序列— 以下形式的序列:
emoji_modifier_sequence := emoji_modifier_base emoji_modifier
有关表情符号修饰符的更多详细信息,请参阅第 2.4 节,多样性。
1.4.5表情符号序列
ED-14。表情符号标志序列- 两个区域指示符字符的序列,其中对应的 ASCII 字符是[CLDRUnicode 区域子标签指定的有效区域序列 ,idStatus="regular" 或 "deprecated"。另请参阅附件 B:有效的表情符号标志序列。
emoji_flag_sequence := regional_indicator regional_indicator
regional_indicator := \p{Regional_Indicator}
单例区域指示符字符不是格式良好的表情符号标志序列。
ED-14a。表情符号标签序列 (ETS)— 以下形式的序列:
emoji_tag_sequence := tag_base tag_spec tag_endtag_base := emoji_character | emoji_modifier_sequence | emoji_presentation_sequencetag_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不是格式良好的表情符号标签序列。
表情符号标签序列的含义和有效性标准以及 a 的预期视觉变体tag_spec由附件 C:有效表情符号标签序列确定。
ED-14b。(此定义已被删除。)
ED-14c。emoji 键帽序列— 以下形式的序列:
emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
这些序列位于type_field Emoji_Keycap_Sequence下列出的emoji-sequences.txt文件中
ED-15。emoji 核心序列— 以下形式的序列:
emoji_core_sequence := emoji_character| emoji_presentation_sequence| emoji_keycap_sequence| emoji_modifier_sequence| emoji_flag_sequence
ED-15a。emoji zwj 元素— 可以在 emoji ZWJ 序列中使用的更有限的元素,如下所示:
emoji_zwj_element := emoji_character| emoji_presentation_sequence| emoji_modifier_sequence
ED-16。emoji zwj 序列— 具有至少一个连接符的 emoji 序列。
emoji_zwj_sequence := emoji_zwj_element ( ZWJ emoji_zwj_element )+
ZWJ := \x{200d}
ED-17。表情符号序列— 核心序列、标签序列或 ZWJ 序列,如下所示:
emoji_sequence := emoji_core_sequence| emoji_zwj_sequence| emoji_tag_sequence
ED-17a。限定的表情符号字符- 字符串中的表情符号字符 (a) 具有默认表情符号表示或 (b) 是表情符号修饰符序列中的第一个字符或 (c) 不是默认表情符号表示字符,但是第一个字符表情符号演示序列。
ED-18。完全限定的 emoji— 限定的 emoji 字符,或每个 emoji 字符都限定的 emoji 序列。
ED-18a。最低限度限定的 emoji— 一个 emoji 序列,其中第一个字符是限定的,但序列不是完全限定的。
ED-19。不合格的表情符号——既不是完全合格也不是最低限度合格的表情符号。
有关在表情符号序列中使用变体选择器的建议,请参阅第 2.7 节,表情符号实现说明。
1.4.6表情符号集
以下集合是根据附件 A 中描述的数据文件和属性定义的:表情符号属性和数据文件。这些集合的组成可能会从一个版本更改为下一个版本。
这些集合中的每一个都可以被认为是一个二元属性。它们是字符串的属性。有关更多讨论,请参阅UTS #18:Unicode 正则表达式[UTS18] 和UTR #23:Unicode 字符属性模型[UTR23]。
ED-20。基本表情符号集— 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 set—emoji-sequences.txt文件 [emoji-data] 中 type_fieldEmoji_Keycap_Sequence 下列。
这是所有有效表情符号键帽序列的集合。
注意:以下定义使用首字母缩略词“RGI”来表示“推荐用于一般交换”,指的是旨在跨多个平台广泛支持的某个较大集合的子集。
ED-22。RGI emoji 表情修饰符序列集—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-sequences.txt文件 [emoji-data] 中 type_fieldRGI_Emoji_Tag_Sequence 下列。
这是推荐用于一般交换的所有有效表情符号标签序列的子集。请参阅附件 C:有效的表情符号标签序列。
ED-25。RGI emoji ZWJ 序列集— 在RGI_Emoji_ZWJ_Sequenceemoji-zwj-sequences.txt文件 [emoji-data]。
这是推荐用于一般交换的所有有效表情符号 zwj 序列的子集。
ED-26。(此定义已被删除。)
ED-27。RGI 表情符号集— ED-20、ED-21、ED-22、ED-23、ED-24和ED-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
套管操作可能会产生无效的变化序列。虽然以下字符串形成了一个大小写对,但表情符号表示选择器没有为 ⓜ 定义,因此对其呈现没有影响:
td {white-space:pre-wrap;border:1px solid #dee0e3;}Ⓜ️ = <U+24C2 带圆圈的拉丁大写字母 M, U+FE0F VS16>有效变化序列
ⓜ = <U+24DC 带圆圈的拉丁小写字母 M, U+FE0F VS16>无效的变化序列
1.4.9 EBNF 和正则表达式
以下 EBNF 可用于快速扫描可能的表情符号。然后可以在必要时通过根据定义执行有效性测试或检查RGI 表情符号集来验证这些可能的表情符号。它比当前定义中的表达式要简单得多。它包括一个表情符号的超集,作为这种简单性的副产品,但可以通过有效性测试清除额外的表情符号。
td {white-space:pre-wrap;border:1px solid #dee0e3;}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?
表情符号修改:= \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 规则可以生成一个正则表达式,如下所示。虽然这个正则表达式可能看起来很复杂,但它比定义的结果要简单得多。直接使用定义会导致正则表达式复杂很多倍,但仍需要通过有效性测试进行验证。
td {white-space:pre-wrap;border:1px solid #dee0e3;}正则表达式
\p{RI} \p{RI} | \p{表情符号} ( \p{EMod} | \x{FE0F} \x{20E3}? | [\x{E0020}-\x{E007E}]+ \x{E007F})? (\x{200D} \p{表情符号} ( \p{EMod} | \x{FE0F} \x{20E3}? | [\x{E0020}-\x{E007E}]+ \x{E007F})? )*
1.5一致性
以下条款规定了与本规范的一致性。
C1。声明符合本规范的实现应标识声明符合本规范的版本。
本规范的每个版本都有 Unicode 标准的最低版本,其中包含Emoji=Yes的所有字符。例如,声称符合 Emoji 5.0 的实现还必须支持 Unicode 9.0 曲目。
C2。声称符合本规范的实现应识别下面指定的哪些功能支持哪个表情符号设置ED-20到ED-25。这必须至少包括set ED-20basic emoji set的C2a显示功能。例如,一个实现可以声明它支持基本表情符号集显示、 编辑和输入功能 表情符号修饰符序列集的显示和 编辑功能,并且不得声称任何其他集合的功能。
td {white-space:pre-wrap;border:1px solid #dee0e3;}C2a显示器该实现能够将指定集中的每个字符和序列显示为带有表情符号表示的单个字形。
C2b编辑该实现将指定集中的每个字符和序列视为一个不可分割的单元,用于编辑目的(光标移动、删除、换行等)。
C2c输入该实现提供了一种机制,用于将指定集中的每个字符和序列输入为带有表情符号表示的单个字形。
一个实现可以声明部分符合C2,指定它不支持的字符集。例如,一个实现可以声明除了 [⏏ {🇺🇳}] 集之外的所有表情符号集和功能都符合 C2,即:
U+23CF弹出按钮
U+1F1FA U+1F1F3联合国
C3。声称符合本规范的实现不得支持用于display或input的无效 emoji_flag_sequence 或无效或格式错误的 emoji_tag_sequence显示除外,例如
.
单个 emoji 表情区域指示器可以显示为带有特殊显示的大写 A..Z 字符
实现可以支持以下任何显示、编辑或输入:
基本表情符号集之外的单个代码点
一个表情符号序列,将在ED-20到ED-25表情符号集之一中,但它缺少一个或多个表情符号演示选择器
1.5.1排序一致性
实现可以通过符合特定版本的 CLDR 来声明表情符号排序规则或短名称的一致性。
1.5.2版本控制
从本规范 11.0 版开始,表情符号字符库与 Unicode 标准同步,并具有相同的版本编号系统。
从 13.0 版开始,数据文件注释使用标签约定“Ex.x”。此标签对应于表情符号字符或表情符号序列首次在关联数据文件中定义时的表情符号版本。例如,标签“E5.0”与Unicode Emoji,版本 5.0相关联。在 2015 年 Emoji 1.0 正式发布之前,主要用于 emoji 字符的三个特殊值:
td {white-space:pre-wrap;border:1px solid #dee0e3;}标签预期覆盖范围
E0.0此标签用于特殊字符,包括:大多数表情符号组件字符,无论它们何时首次编码。数据文件中的其他非表情符号字符。
E0.6添加到 Unicode 6.0 的表情符号字符。这包括源自日本运营商集的表情符号字符,以及来自 ARIB 日本电视标准的一些字符。
E0.7添加到 Unicode 7.0 的表情符号字符。这主要包括源自 Windows Wingding 和 Webdings 集的表情符号,但也包括来自 ARIB 日本电视标准的更多字符。
下表显示了对应的 Emoji 版本和 Unicode 标准版本,一直到版本 14.0,包括数据文件注释中使用的标签。
td {white-space:pre-wrap;border:1px solid #dee0e3;}表情符号版日期统一码版本数据文件注释
不适用各种各样的各种各样的E0.0
不适用2010/10/11统一码 6.0E0.6
不适用2014/6/16统一码 7.0E0.7
表情符号 1.02015/6/9统一码 8.0E1.0
表情符号 2.02015/11/12统一码 8.0E2.0
表情符号 3.02016/6/3统一码 9.0E3.0
表情符号 4.02016/11/22统一码 9.0E4.0
表情符号 5.02017/6/20统一码 10.0E5.0
表情符号 11.02018/5/21统一码 11.0E11.0
表情符号 12.02019/3/5统一码 12.0E12.0
表情符号 12.12019/10/21统一码 12.1E12.1
表情符号 13.02020/3/10统一码 13.0E13.0
表情符号 13.12020/9/15统一码 13.0E13.1
表情符号 14.02021/9/14统一码 14.0E14.0
2设计指南
Unicode 字符可以有许多不同的文本表示形式。例如,“a”可能会因字体而异。表情符号字符可以有两种主要的表现形式:
一个表情符号演示,具有色彩缤纷、也许是异想天开的形状,甚至是动画
文本演示,例如黑白
更准确地说,文本表示是一个简单的前景形状,其颜色由其他信息确定,例如在文本上设置颜色,而表情符号表示确定字符的颜色,并且通常是多色的。换句话说,当有人在文字处理器中更改文本颜色时,带有表情符号的字符不会改变颜色。
任何 Unicode 字符都可以以文本形式呈现,就像在 Unicode 图表中一样。对于表情符号表示,在设计表情符号的外观时,应同时考虑名称和 Unicode 图表中的代表字形,以及其他供应商使用的图像。角色的形状可以有很大的不同。例如,这里只是 U+1F36D LOLLIPOP、U+1F36E CUSTARD、U+1F36F HONEY POT 和 U+1F370 SHORTCAKE 的一些可能图像:
虽然角色的形状可能会有很大差异,但设计师应该根据行业实践中最常用的形状保持相同的“核心”形状。例如,一个 U+1F36F HONEY POT 编码一罐蜂蜜的图形表示,而不是像“甜”这样的语义。例如,将 U+1F36F HONEY POT 表示为方糖是出乎意料的。偏离该核心形状太远可能会导致互操作性问题:请参阅意外发送朋友一个毛茸茸的心脏表情符号
。方向(无论是人还是物体是朝右还是朝左,朝上还是朝下)也应尽可能保持,因为方向的改变会改变含义:发送时
“鳄鱼被警察击中”,人们希望任何接受者都能看到手枪指向的方向与他们创作时的方向相同。同样,U+1F6B6行人应面向左侧
,而不是右侧。请参阅第 2.10 节,表情符号字形朝向。
用于人和身体部位的通用表情符号也不应提供过于具体的图像:一般建议是在种族、民族和性别方面尽可能保持中立。因此,对于角色 U+1F777 CONSTRUCTION WORKER,建议使用中性图形
(橙色肤色)而不是过于具体的图像
(浅肤色)。这包括Sample Emoji Modifier Bases中列出 的emoji 修饰符基本字符。表情符号修饰符允许表达肤色的变化。
Unicode 9.0 添加了几个旨在完成性别对的字符,并且正在努力在未来提供更多的性别选择。有关详细信息,请参阅第 2.3 节,性别。
组合封闭标记可以应用于表情符号,就像它们可以应用于其他字符一样。完成后,组合应呈现表情符号。例如,a
表示为序列“1”加上表情符号表示选择器加上 U+20E3 组合封闭键帽。
U+20E3 COMBINING ENCLOSING KEYCAP 是目前 RGI 表情符号序列中唯一的此类符号。
标志 emoji 字符在附件 B: Valid Emoji Flag Sequences中讨论。
2.1名称
每个表情符号都有一个 CLDR 短名称,它可能会随着时间而改变。每个表情符号字符也有一个正式的 Unicode 名称,就像所有其他 Unicode 字符一样;这是一个无法更改的永久标识符。
Unicode 字符的正式 Unicode 名称并不能决定其外观。BLACK MEDIUM SQUARE 或 WHITE MEDIUM SQUARE 等符号的正式名称并不意味着相应的字符必须分别以黑色或白色呈现;相反,在名称中使用“黑色”和“白色”通常只是为了对比 填充与轮廓形状,或者较深的颜色填充与较浅的颜色填充。同样,在其他符号如U+261A BLACK LEFT POINTING INDEX 和U+261C WHITE LEFT POINTING INDEX 中,“白色”和“黑色”这两个词也指轮廓与填充,并不表示肤色。
但是,名称中的其他颜色词(例如黄色)通常会提供有关表情符号表示的建议,应遵循此建议以避免互操作性问题。
在许多情况下,自最初的正式名称标准化以来,最佳描述的共识已经发展,现在,CLDR 短名称更好地反映了首选描述。例如,U+1F483 DANCER 应该按照 CLDR 短名woman dance 来设计(为mandance添加了一个额外的字符)。此外,只有表情符号字符具有正式的 Unicode 名称;表情符号序列只有 CLDR 短名称。
每个字符的正式 Unicode 名称必须是唯一的,有时在名称中包含区分词以在添加两个对比字符时保持唯一性,例如:
🐶 U+1F436 狗脸
🐕 U+1F415 狗
🐮 U+1F42E 牛脸
🐄 U+1F404 牛
在这种情况下,图像也必须对比。但是,在某些情况下,在不需要唯一性时,会在名称中添加诸如 FACE 之类的附加术语。在没有对比表情符号的情况下,不需要保持图像对比度。考虑以下表情符号:
🦌 U+1F98C 鹿
🦓 U+1F993 斑马脸
因为没有其他对比鲜明的 DEER 或 ZEBRA 表情符号,所以这两个表情中的每一个都可以只用一张脸、脸和肩膀、全身或其他选择来描绘。
2.2显示
表情符号字符可能并不总是显示在白色背景上。通常最好给它们一个微弱、狭窄的对比边框,以使角色在视觉上与类似颜色的背景区分开来。因此,日本国旗有一个边框,以便在白色背景上可见,而瑞士国旗有一个边框,以便在红色背景上可见。
目前的做法是表情符号具有正方形的纵横比,源于它们在日语中的起源。为了互操作性,建议在当前和未来的表情符号中继续这种做法。它们通常具有与 CJK 表意文字大致相同的垂直位置和前进宽度。例如:
他们应该使用透明度来正确显示选择并使用彩色背景:
支持的表情符号序列集可能因平台而异。例如,采取以下 emoji zwj 序列:
在特定平台上,它可以显示为单个图像:
但是,如果该组合不支持作为单个单元,它可能会显示为如下所示的序列,并且用户看不到任何迹象表明它应该组合成单个图像:
实现可以在可能的情况下提供不受支持的表情符号序列的组合性质的指示。这为用户提供了该序列旨在具有组合形式的附加信息。它还解释了为什么序列不会作为单独的元素表现:箭头键不会在旗帜和骷髅和交叉骨之间移动,并且明显单独的表情符号之间不会出现换行符。
以下是实现可以使用的方法的示例。还有其他方法可以具有更直观的外观,但使用当前的文本显示机制可能难以实现。
将 ZWJ 显示为可见的“胶水”字符,宽度为零或非常窄。
2.3性别
以下人形表情符号目前被认为具有基于名称和/或实践的明确性别外观。他们故意与其他角色形成对比。如果添加了新的显式性别字符,或者其中一些被更改为不分性别,则此列表可能会在未来发生变化。下面的名称是 CLDR 短名称,如果不同,后面是大写字母的正式 Unicode 名称。
td {white-space:pre-wrap;border:1px solid #dee0e3;}女性男性
U+1F467女孩U+1F466男生
U+1F469女士U+1F468男人
U+1F475老妇
人 OLDER WOMAN
U+1F474老人
老人
U+1F46D手牵手的女人 手牵手
的两个女人
U+1F46C手牵手的男人 手牵手
的两个男人
U+1F936克劳斯夫人 圣诞
妈妈
U+1F385圣诞老人
父亲圣诞节
U+1F478公主U+1F934王子
U+1F483跳舞
的女人
U+1F57A跳舞的男人
U+1F930怀孕的女人
U+1F931哺乳
U+1F9D5戴头巾的女人 戴头巾
的人
明确的性别组合
U+1F46B手牵手的女人和男人 手牵手的
男人和女人
下表Emoji Changed to Gender-Neutral in Emoji 13.0+中的表中的 emoji 已从表Emoji With Explicit Gender Appearance中删除,大多数的 CLDR 名称已更改为使用person(以及其他一些更改)。戴面纱的人和穿着燕尾服表情符号的人也有 RGI 男性和女性的性别变体。其他人没有;对于穿着西装的人和戴着头盖骨的人,表情符号大小的视觉区别会不清楚。
td {white-space:pre-wrap;border:1px solid #dee0e3;}性别中立
E13.0U+1F470带面纱的人 带面纱的
新娘
U+1F935
穿燕尾服的人 穿燕尾服的人
U+1F574西装革履的人 西装革履的
人
U+1F472戴黄盖帽的人
MAN WITH GUA PI MAO
E13.1U+1F9D4人: 胡子
有胡子的人
2.3.1中性表情符号
通常情况下,性别是未知的或不相关的,例如“飞机上有医生吗?”的用法,或者可能不希望出现性别化的外观。这种情况被称为“性别中立”、“性别包容”、“未指定性别”或许多其他术语。除了表格Emoji With Explicit Gender Appearance中显示的表情符号外,人形表情符号通常应以中性方式描绘,除非 以下表中所示的方式之一使用表情符号 ZWJ 序列明确指定性别外观。
td {white-space:pre-wrap;border:1px solid #dee0e3;}类型描述例子
签名格式可以使用 ZWJ 序列为人形表情符号赋予明确的性别。该序列包含基本表情符号,后跟 ZWJ 和女性符号或男性符号。单独的人形表情符号在形式上应该是中性的。男跑者 = RUNNER + ZWJ + MALE SIGN
女跑者 = RUNNER + ZWJ + FEMALE SIGN
跑者 = RUNNER
对象格式可以使用 ZWJ 序列形成职业或角色表情符号。该序列以 MAN 或 WOMAN 开始,然后是 ZWJ,并以对象结束。ADULT 字符可用于中性版本。男宇航员 = MAN + ZWJ + ROCKET SHIP
女宇航员 = WOMAN + ZWJ + ROCKET SHIP
宇航员 = 成人 + ZWJ + ROCKET SHIP
尽管符号格式类型 ZWJ 序列中使用的人形表情符号本身应该具有中性外观(当不用于符号格式类型 ZWJ 序列时),但许多供应商之前将这些人形表情符号描述为男人或女人. 结果,它们具有与符号格式类型 ZWJ 序列之一相同的外观。例如,大多数供应商将侦探描述为男性侦探,将理发的人描述 为女性理发,但一些供应商将警察描述为男性警察,而其他供应商将其描述为女性警察。
使用对象格式类型 ZWJ 序列的职业或角色表情符号的性别中立版本通过将它们添加到RGI 表情符号标签序列集来发布。
2.3.2表情符号输入中的性别标记
表情符号输入系统(如键盘或调色板)通常提供一些表情符号的输入,这些表情符号的外观明确区分性别 - 例如,专门以女性或男性的形式出现的表情符号。当此类表情符号未包含在Emoji With Explicit Gender Appearance表中时,输入系统应为它们生成一个明确指示性别外观的序列,而不是依赖特定系统的默认外观。下面的例子展示了这个原理:
假设在某些系统上,侦探的默认外观是mandetective。在该系统上,当输入man detective时,输入系统仍应使用显式序列
U+1F575 U+FE0F U+200D U+2642 U+FE0F(男侦探)
而不仅仅是
U+1F575 U+FE0F(侦探)
2.4多样性
世界各地的人们都希望拥有反映更多人类多样性的表情符号,尤其是肤色。用于人和身体部位的 Unicode 表情符号字符旨在具有通用性,并以通用(非人类)外观显示,例如类似于用于笑脸的黄色/橙色。
在 Unicode 版本 8.0(2015 年中)中发布了五个符号修饰符字符,它们为人类表情符号提供了一系列肤色。这些字符基于 Fitzpatrick 量表的六种音调,这是公认的皮肤病学标准(网上有很多这种量表的示例,例如FitzpatrickSkinType.pdf
)。确切的阴影可能因实现而异。
td {white-space:pre-wrap;border:1px solid #dee0e3;}代码CLDR 短名称Unicode 字符名称样品
U+1F3FB浅肤色表情修饰符 FITZPATRICK TYPE-1-2
U+1F3FC中浅肤色表情修饰符 FITZPATRICK TYPE-3
U+1F3FD中等肤色表情修饰符 FITZPATRICK TYPE-4
U+1F3FE中深肤色表情修饰符 FITZPATRICK TYPE-5
U+1F3FF深色肤色表情修饰符 FITZPATRICK TYPE-6
这些字符的设计使得即使没有人类表情符号的各种彩色图像,读者也可以看到预期的含义。
单独使用时,这些修饰符字符的默认表示是色样。每当这些字符之一紧跟某些字符(例如 WOMAN)时,字体应将序列显示为与具有指定肤色的人或身体部位的图像相对应的单个字形,例如:
+
→
但是,即使字体没有显示组合字符,用户仍然可以看到预期的肤色:
这可能会退回到黑白点画或阴影图像,例如不支持彩色表情符号时。
+
→
当一个人类表情符号没有紧跟一个表情符号修饰符字符时,它应该使用通用的、非真实的肤色,例如
RGB #FFCC22(通常用于笑脸的颜色之一)。
不需要特定的头发颜色,但是,黑色头发通常被认为更中性,因为黑色或深棕色头发在各种肤色的人中都很普遍。这不适用于已经具有明确头发颜色的表情符号,例如 PERSON WITH BLOND HAIR(最初是为了与日本手机表情符号兼容而添加的),无论肤色如何,都需要有金色头发。
要对 emoji 产生影响,emoji 修饰符必须紧跟该基本 emoji 字符。当 emoji 字符后面跟着 emoji 修饰符时,既不需要也不推荐使用 Emoji 表示选择器,并且不应在新生成的 emoji 修饰符序列中使用;表情符号修饰符自动暗示表情符号呈现风格。见ED-13。表情符号修饰符序列。但是,一些较旧的数据可能包括有缺陷的表情符号修饰符序列,其中表情符号表示选择器确实出现在基本表情符号字符和表情符号修饰符之间;这是 emoji 修饰符必须紧跟在它修饰的字符之后的规则的唯一例外。在这种情况下,表情符号表示选择器应该被忽略。要按顺序处理文本表示选择器,请参阅第 4 节,表示样式。
<U+270C 胜利之手 FE0F TYPE-3>
任何其他中间字符都会导致表情符号修饰符显示为独立字符。因此
+
+
→
2.4.1 实现
实现可以将表情符号修饰符作为输入调色板中的单独字符呈现,或使用长按等机制呈现组合字符。
表情符号修饰符不适用于与任意表情符号字符组合。相反,它们仅限于表情符号修饰符基本字符:其他字符不得与表情符号修饰符组合。随着本文档的后续版本,该集合可能会随着时间而改变。要查找每个版本的表情符号修饰符库的确切列表,请使用 Emoji_Modifier_Base 字符属性,如附件 A:表情符号属性和数据文件中所述。
td {white-space:pre-wrap;border:1px solid #dee0e3;}
下图显示了带有表情符号修饰符的预期显示,具体取决于前面的字符和对表情符号修饰符的支持级别。“不支持”行显示字符通常如何出现在没有包含该字符的字体的系统上:缺少字形指示符。在某些情况下,应禁止在 Emoji_Modifier_Base 字符之后显示表情符号修饰符:
如果 emoji 修饰符基础在特定系统上没有可见的皮肤,则应禁止任何后续 emoji 修饰符。
在其他情况下,可能会抑制在 Emoji_Modifier_Base 字符之后显示表情符号修饰符:
如果特定 emoji 修饰符基使用与用于其他 Emoji_Modifier_Base 字符的默认肤色不同的非真实肤色,则可能会抑制任何后续 emoji 修饰符。例如,假设吸血鬼在特定实现中显示为灰色皮肤,而其他 Emoji_Modifier_Base 字符在没有表情符号修饰符的情况下显示为霓虹黄色皮肤;吸血鬼之后的任何表情符号修饰符都可能被抑制。
td {white-space:pre-wrap;border:1px solid #dee0e3;}支持水平表情符号修饰符基础序列展示
完全支持是的+
是的+
是的,但看不到皮肤+
是,但不寻常的默认肤色+
不+
倒退是的+
不+
不支持是的+
不+
如上所述,在第 2.4 节的末尾,多样性,表情符号表示选择器既不需要也不推荐用于表情符号修饰符序列。见ED-13。表情符号修饰符序列。但是,较旧的数据可能包含有缺陷的表情符号修饰符序列,其中确实包含表情符号表示选择器。
2.4.2文字中的表情修饰符
支持的表情修饰符序列应被视为单个字素簇以进行编辑(光标时刻、删除等);分词、换行等。对于输入,该集群的组成不需要对用户很明显:它在屏幕上显示为单个图像。例如,在手机上,长按人物可以调出不同肤色的小调色板,而用户无需分别找到人物和修饰符。以下显示了一些可能的外观:
td {white-space:pre-wrap;border:1px solid #dee0e3;} 或者
当然,除了肤色不同之外,人的外貌还有很多其他类型的多样性:不同的发型和颜色、眼镜的使用、各种面部毛发、不同的体型、不同的头饰等等。提供基于编码的机制来表示表情符号用户可能想要表示的人类外观多样性的各个方面超出了 Unicode 的范围。传达非常具体的人类图像(或任何类型的图像,其中保留特定外观非常重要)的最佳方法是使用嵌入式图形,如长期解决方案中所述。
2.5 Emoji ZWJ 序列
U+200D ZERO WIDTH JOINER (ZWJ) 可用于字符序列的元素之间,以指示应显示单个字形(如果可用)。实现可以使用这种机制来处理这样的 emoji zwj 序列作为单个字形,使用调色板或键盘为所示字形生成适当的序列。对于这样一个系统的用户来说,这些行为就像单个表情符号字符,即使它们在内部是序列。
当 emoji zwj 序列被发送到没有对应的单个字形的系统时,ZWJ 字符将被忽略并显示单独的 emoji 的后备序列。因此,一个 emoji zwj 序列只应由回退序列对接收者也有意义的实现来定义和支持。
例如,以下是可能的显示:
td {white-space:pre-wrap;border:1px solid #dee0e3;}序列展示组合字形?
是的
不
另请参阅Emoji ZWJ 序列[emoji-charts]。
在某些实现中使用 ZWJ 序列可能很困难,因此在添加新序列之前应谨慎。
有关在 ZWJ 序列中使用变体选择器的建议,请参阅下面的第 2.7 节,表情符号实现说明。
2.6多人分组
有几种表情符号描绘了不止一个人的互动。如果这些要通过选择或性别或肤色来实施,则可能需要根据具体情况进行特殊处理。下面列出了这些表情符号:
td {white-space:pre-wrap;border:1px solid #dee0e3;}十六进制字符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 版本,如下所示:
td {white-space:pre-wrap;border:1px solid #dee0e3;}U+1F469 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F468吻:女人,男人
使用 ZWJ 序列将性别应用于具有兔耳朵的人和摔跤的人,如下所示。
td {white-space:pre-wrap;border:1px solid #dee0e3;}描述内部代表
有兔耳朵的人
兔耳朵的男人
兔耳朵的女人
人们摔跤
男子摔跤
女子摔跤
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 序列: 1F468 1F3FD 200D 1F91D 200D 1F468 1F3FB;手拉手的男士:中等肤色,浅肤色
表情符号 12.1 新增:1F468 1F3FB 200D 1F91D 200D 1F468 1F3FD;手牵手的男士:浅肤色,中等肤色
上述序列之间的唯一区别是,中等肤色男人和浅肤色男人的推断位置是左右互换的。
实现可以为两个序列使用相同的图像。对于多人表情符号,实现不需要仅根据位置为相同性别的人提供不同的图像。是否这样做的选择可能取决于特定于特定供应商图像的设计考虑。
其他不同肤色组合的多人组可以表示为有效序列,但还不是RGI;例如,为家庭添加混合肤色会添加 4,225 个表情符号序列。
td {white-space:pre-wrap;border:1px solid #dee0e3;}描述内部代表
手牵手的女性:
中等、深色的肤色
手牵手的人:
中等、深色的肤色
家庭:女人,女人,女孩,女孩:
中等,黑暗。浅色,中等肤色
肤色修饰符可以应用于多人分组表中列出的九个角色中的每一个;下表说明了其中一些字符的示例。这使组中的所有人都具有相同的肤色,这类似于性别标记的工作方式。
但是,在 Emoji 14.0 中,此类 emoji 修饰符序列仅对 9 个字符中的 6 个具有 RGI 状态:亲吻、带心的情侣、牵手的男女、牵手的男人、牵手的女人和握手。
td {white-space:pre-wrap;border:1px solid #dee0e3;}描述内部代表
握手:
中等肤色
兔耳朵的人:
中等肤色
兔耳女性:
中等肤色
手牵手的男女:
中等肤色
家庭:
中等肤色
2.7 Emoji 实现笔记
本节介绍 emoji 的重要实现特性,包括 emoji 和文本表示选择器的使用、如何进行分割以及标签字符的处理。
2.7.1 表情符号和文本呈现选择器
本节介绍可以使用表情符号表示选择器的位置。文本呈现选择器仅出现在文本呈现序列中,不会显示为表情符号。
td {white-space:pre-wrap;border:1px solid #dee0e3;}人物变化/行为
表情符号如果结果是有效的表情符号呈现序列或文本呈现序列,则可能会添加表情符号或文本呈现选择器
如果 Emoji_Presentation=No 需要表情符号演示,则应添加表情符号演示选择器
表情符号标志序列不包含表情符号或文本演示选择器
默认情况下应与表情符号一起显示
表情符号修饰符序列不包含表情符号或文本演示选择器
默认情况下应该与表情符号一起显示,无论修饰符基础是否有 Emoji_Presentation=Yes实现可以选择支持包含 有缺陷的 emoji_modifier_sequences 的旧数据,即具有 emoji 表示选择器。
emoji zwj 序列可能有一个表情符号表示选择器
推荐的行为是:
用户输入:只有完全合格的表情符号zwj 序列才能由键盘和其他用户输入设备生成。处理和显示:完全合格的 emojizwj 序列在处理中应适当处理,例如显示、编辑、分割等。最低限度合格或不合格的 emoji zwj 序列可以以与其完全合格形式相同的方式处理;选择取决于实施。文本呈现选择器会破坏 emoji zwj 序列,从而防止任一侧的字符显示为单个图像。这两个部分序列应显示为单独的图像,每个图像都具有由存在的任何演示选择器指定的演示样式,或者默认样式用于那些没有任何变体选择器的表情符号。
2.7.2处理标签字符
标记字符 U+E0020..U+E007F (TAG SPACE..CANCEL TAG) 的属性已被修改,用于指示表情符号字符的变体或扩展。有关正确处理标签序列的详细信息,请参阅附件 C:有效的表情符号标签序列。
2.8头发成分
Emoji 版本 11.0 引入了头发组件,可以在 ZWJ 序列中使用来指示头发颜色或样式。推荐用于通用交换 (RGI) 的序列列在数据文件中。组件包括:
红发(姜)
卷发
白发
秃
头发颜色和发型有数百种可能的区别,但为了限制组合的数量——而且因为表情符号是用“卡通”风格呈现的——头发成分的数量很少。请注意,金发男子/女人/人物表情符号已经提供了金色的头发颜色。棕色/黑色头发已经是人形表情符号中头发颜色的典型默认设置。
2.9颜色
ZWJ 序列中可以使用九个大的彩色方形表情符号,以指示如果可能的话,应该以该颜色显示基本表情符号。结果图像的颜色可能与颜色方块不完全相同。用于此目的的颜色方块是:
U+2B1B黑色大方
U+2B1C 白色大方
U+1F7E5 大红色正方形 ... U+1F7EB 大棕色正方形
如果实现不提供该颜色的单个表情符号图像,用户应该看到显示所需颜色指示的后备外观。如果支持颜色 ZWJ 序列并且基本表情符号已经具有该颜色,则应忽略颜色方块。
td {white-space:pre-wrap;border:1px solid #dee0e3;}内部代表样品
展示
后备
外观
黑猫
U+1F408U+200DU+2B1B
橘猫
U+1F408U+200DU+1F7E7
方格需要 ZWJ;它们的行为不像Emoji Modifiers中列出的五个肤色修饰符。
白色方形表情符号通常呈现为浅灰色,以将其与白色背景区分开来。
在 Emoji 版本 14.0 中,只有一个这种形式的 RGI emoji ZWJ 序列。
2.10表情符号字形朝向
根据供应商的做法,带有面向右侧或左侧的字形的表情符号可能面向任一方向。但是,在跨平台交换文本时,这种不一致可能会导致含义发生变化。以下 ZWJ 机制可用于明确指示方向。如果没有面向该方向的基本表情符号图像,用户应该会看到显示所需方向指示的后备外观。如果支持方向 ZWJ 序列并且基本表情符号已经面向该方向,则应忽略方向表情符号。
td {white-space:pre-wrap;border:1px solid #dee0e3;}内部代表预期
显示
后备
外观
U+1F3C3U+200DU+2B05 U+FE0F
U+1F3C3U+200DU+27A1 U+FE0F
在 Emoji 版本 14.0 中没有这种形式的 RGI emoji ZWJ 序列。
2.11 Emoji ZWJ 序列的顺序
为个人表示 emoji ZWJ 序列时,应使用以下顺序:
td {white-space:pre-wrap;border:1px solid #dee0e3;}命令类别部分
1根据第 1.4.1 节表情符号字符
2表情符号修饰符或表情符号演示选择器第 2.4 节多样性
3头发成分第 2.8 节头发组件
4颜色第 2.9 节,颜色
5性别标志或对象第 2.3.1 节,中性表情符号
6方向指示器第 2.10 节,表情符号字形朝向