Unicode标准中的颜色?

49

Unicode 6.0 新增了几个字符,并提供了相应的描述,表明这些字符应该以特定颜色呈现:

  • 红色苹果 U+1F34E
  • 绿色苹果 U+1F34F

  • 蓝色心形 U+1F499

  • 绿色心形 U+1F49A
  • 黄色心形 U+1F49B
  • 紫色心形 U+1F49C

  • 绿色书本 U+1F4D7

  • 蓝色书本 U+1F4D8
  • 橙色书本 U+1F4D9

  • 大红圆圈 U+1F534

  • 大蓝圆圈 U+1F535

  • 大橙色菱形 U+1F536

  • 大蓝色菱形 U+1F537
  • 小橙色菱形 U+1F538
  • 小蓝色菱形 U+1F539

  • 向上红三角形 U+1F53A

  • 向下红三角形 U+1F53B
  • 向上小红三角形 U+1F53C
  • 向下小红三角形 U+1F53D

我曾认为字体符号始终是灰度的。

Unicode 的作者是否预见到这些字符可能会以不同的颜色呈现?
在官方的 Unicode.org PDF 文件中(http://www.unicode.org/charts/PDF/U1F300.pdf),这些字符仅被描绘为具有不同类型的网格填充。

目前是否存在一种机制,只基于字符的代码点而不考虑其他富文本格式,在特定颜色下呈现特定字符?(例如,TrueType 或 OpenType 字体文件中的颜色属性)

4个回答

38

来自Unicode FAQ:Emoji和Dingbats,我突出了重点:

问:那么名称指定颜色的字符呢?

答:一些核心表情符号集中的字符名称包括颜色术语,例如BLUE HEART或ORANGE BOOK。 这些名称中的颜色术语不意味着必须以特定方式呈现字符;它们只是为了帮助识别核心表情符号集中相应的字符。即使是BLACK MEDIUM SQUARE或WHITE MEDIUM SQUARE等符号的名称也并不意味着相应的字符必须分别以黑色或白色呈现;相反,使用黑色和白色通常只是为了区分实填充形状和轮廓形状,或较深颜色填充与较浅颜色填充之间的对比。[PE]

当时在邮件列表上有很多关于是否应该用颜色命名它们或者使用不涉及颜色的通用名称以及这是否会树立一个不好的先例的争议。 表情符号:背景数据包括“旧名称”,例如使用APPLE-1代替RED APPLE和BOOK-3代替ORANGE BOOK。

最终的名称遵循以下原则:

  

具有固有颜色的符号应在其名称中带有此颜色,除非名称所表示的实体已经确定了颜色(例如,香蕉是唯一的黄色,因此不需要称为YELLOW BANANA,而红苹果必须被命名为如此,因为还有绿色苹果)。


6
这个问题的提出让我觉得在名字中加入颜色的决定是错误的。 - Daniel Sokolowski

7
Unicode 6.1有一项功能,可以通过指定变量选择器(U+FE0x)来改变相同Unicode代码点的字形。
例如,左指向三角形(“\ U000025C0”,◀)可以通过添加“\ U0000FE0F” ◀️ *作为后缀进行着色,或者通过添加“\ U0000FE0E”作为后缀而不着色(“\ U000025C0 \ U0000FE0E”,◀︎**)。 *在Mac OS X 10.8上看起来是默认值
**这是Linux上的默认设置。

5
你的答案有误导性。你提到的变体选择器是用于“文本样式”(U+FE0E)和“表情符号样式”(U+FE0F)。它们只能用于标准化变体,而不能应用于一般的任何码点。表情符号样式通常是有颜色的,但在码点级别上无法产生进一步的影响。 - Robert Siemer
这并不允许选择特定的颜色。 - Geremia

5
https://learn.microsoft.com/en-us/typography/opentype/spec/otff#tables-related-to-color-fonts 可以得知:

与彩色字体相关的表格

  • COLR:颜色表格
  • CPAL:颜色调色板表格
  • CBDT:颜色位图数据
  • CBLC:颜色位图位置数据
  • sbix:标准位图图形
  • SVG:可缩放矢量图形表格

简言之:

  • CBDT/CBLC 包含彩色位图(PNG格式)。这是Google提出的。

  • sbix 包含彩色位图(JPG、PNG或TIFF格式),这是Apple提出的。

  • COLR 为每个字形定义一个或多个伴随的彩色字形(矢量格式),当它们重叠时,创建最终的彩色字形。CPAL 定义了几种颜色主题(暗底亮字,明底暗字等),因为 COLR 仅是带有调色板的图像。COLR/CPAL 是由Microsoft提出的。

  • SVG 是由Mozilla和Adobe提出的。它可以与CPAL一起使用。

FreeType(Android、iOS和macOS的一部分)自2.5和2.5.1 (2013年发布)开始支持CBDT/CBLC和sbix,自2.10.0 (2018年发布)开始支持COLR/CPAL。DirectWrite(Windows的一部分)从8.1(2013年发布)开始支持COLR/CPSL,并在10 1607之后(2016年发布)支持上述四种格式。

Noto Color Emoji(Android默认字体)使用CBDT/CBLC。Segoe UI Emoji(Windows默认字体)使用COLR/CPAL。Apple Color Emoji(iOS和macOS默认字体)使用sbix。

另请参见https://en.wikipedia.org/wiki/OpenType#Color


这个答案可以通过实际解释这些颜色编码是如何应用的来改进。我希望大部分内容都在顶部的链接中提供了,但是SE上的答案应该是自包含的。 - Canned Man

4
我不知道是否有任何标准机制可以使用彩色字体,但显然有彩色字体。例如,在iOS和OS X中的表情符号字体。在OS X上的任何文本视图中使用表情符号字符将导致出现彩色符号,并且它们不会受到选择文本颜色的影响。这些表情符号甚至出现在Terminal.app中。

enter image description here

(来自this页面。)


4
非常有趣。文件“Apple Color Emoji.ttf”似乎使用专有扩展来嵌入彩色位图图像。 - Dee Newcum

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