什么是Unicode变量选择器?

16

我想知道,Unicode 变异选择器 U-FE00 至 U-FE0F 有什么用途。

例如: ︀︁︂︂ 


你的示例在哪里? - hippietrail
4个回答

8
Unicode标准涉及到这个问题。以下是第3.2.0版附录28中相关部分的摘录(我确定有更近期的版本;这是我找到的第一个版本):

Unicode字符可以用各种字形表示,如Unicode标准第3.0版中的“一般结构”章节中所讨论的那样。在文本处理中,有时需要限制或更改用于表示字符的字形集。通常,在富文本文档中,这些变化通过选择字体或样式来指示。在特殊情况下,这种与正常外观范围的差异需要在同一文档中以纯文本上下文的方式并排表达,而在交换格式化文本不可能或不方便时,使用变体选择器。例如,在使用蒙古文时,有时需要为特定的文本目的需要使用特定的变体字形范围,因为“通用”字形范围被认为不适合。当字符基本语义相同时,使用变体选择器。

变体选择器提供了一种机制,用于指定用于表示特定字符的字形集的限制。它们还提供了一种机制,用于指定具有基本相同语义但具有实质上不同的字形范围的变体,例如CJK表意文字和蒙古文。变体序列始终由基字符后跟变体选择器组成,可以作为Unicode标准的一部分指定。该序列称为基字符的变体。变体选择器仅影响基字符的外观*,而且仅在本标准中定义的变体序列中。变体选择器不用作通用代码扩展机制。

(它还有更多内容...)

您可能还对标准化变体感兴趣(这次是来自6.0.0版)。


@MikeKeskinov:抱歉,我不知道。 - Jon Skeet
@MikeKeskinov 在2016年,它们被广泛使用。当我处理从社交媒体收集的数据时,总是遇到这些麻烦的东西。 - sudo
我不得不在❤后面添加️,以获取红色心形表情符号,而不是黑色的。 - shirha

7

这不是对问题的完整回答,但与表情符号和变体选择器相关:

❤字符(U+2764代码点)是来自1993年的Unicode字符。
但❤️表情符号实际上是❤(U+2764)字符后跟Variant Selector-16(U+FE0F)。


为什么?

仅讨论表情符号(文档):

VS15和VS16被保留用于确定字符是否应显示为表情符号。[...]
表情符号变体序列包含带颜色的表情符号风格(使用VS16,U+FE0F)或文本风格(单色,使用VS15,U+FE0E)

如果有一个既是字符(或符号、字形等),同时也是表情符号的意图,那么变体选择器-16将指定渲染器将其呈现为表情符号。但是,如果相同的字符后跟变体选择器-15,则它将指定渲染器将其呈现为纯文本。如果没有附加变体选择器,则默认表示取决于Unicode规范。对于表情符号,默认为表情符号。对于其他字符,如❤,默认为文本...

表情符号(Unicode块)的文档中的另一个例子:

每个表情符号有两种变体: U+FE0E(变量选择器-15)选择文本显示(例如 ︎ ︎ ☹︎) U+FE0F(变量选择器-16)选择表情样式(例如 ️ ️ ☹️)。 如果没有添加变量选择器,则默认为表情样式。 例如: U+1F610(中性脸) U+1F610(中性脸),U+FE0E(变量选择器-15)︎ U+1F610(中性脸),U+FE0F(变量选择器-16)️
注:VS15和VS16对于有效的表情符号并不是必需的。 有很多没有变量选择器的表情符号。

3
你的猜测和我的一样好,但根据这个来源的说法...

enter image description here

已经得到了...

表情符号编码数据提示:1 在iOS 5 / OSX 10.7中,苹果操作系统生成此表情的基础代码已更改。2 为了更容易地识别和显示此表情符号,iOS 7 / OSX 10.9中生成此表情符号的代码略有更改(添加了一个变体选择器)。我们不介意苹果,谢谢!我们只是喜欢我们的表情符号!

他们的图表继续指出这个“新的”,10.9版本

与以前的1相比,UTF-8字符计数2...如果这有帮助的话。


该网站更改了有关变量选择器的消息:“[添加了变量选择器]建议操作系统在可用时显示字符表情风格而不是黑白文本。” - im3r3k
他们还添加了两个链接:http://www.unicode.org/L2/L2011/11438-emoji-var.pdf 和 http://unicode.org/reports/tr28/tr28-3.html#13_7_variation_selectors。 - im3r3k

1
变量选择器范围是在Unicode标准的版本3.2中引入的,位于平面0,即基本多语言平面。更多的选择器可以在变量选择器补充范围中找到。
大多数Unicode字符可以用各种字形表示,在富文本中,特定的字形可以通过选择特定的字体或样式来指示。这种机制在纯文本中不可用,因此引入了变量选择器作为一种指示适用于特定字符的字形应该被更改或限制的方式。基本字符后跟变量选择器,组合称为变量序列。这不是通用机制,唯一允许的变量序列是在Unicode字符数据库的标准化变体文件中定义的。
来自http://www.alanwood.net/unicode/variation_selectors.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接