小编典典

字符、代码点、字形和字形之间有什么区别?

all

试图理解现代 Unicode 的微妙之处让我头疼。特别是,代码点、字符、字形和字形之间的区别——在 最简单 的情况下,当使用 ASCII
字符处理英文文本时,它们之间都存在一对一的关系——这给我带来了麻烦。

看到这些术语是如何在像 Matthias Bynens’ JavaScript has a unicode
problem
或 Wikipedia’s piece
on Han
unification
这样的文档中使用的,我发现这些概念不是一回事,将它们混为一谈很危险,但我有点努力掌握每个术语的
含义

Unicode 联盟提供了一个词汇表来解释这些东西,但它充满了这样的“定义”:

抽象字符 。用于组织、控制或表示文本数据的信息单元。…

字符 。… (2) 抽象字符的同义词。(3) Unicode 字符编码的基本编码单位。…

字形 。(1) 代表一个或多个字形图像的抽象形式。(2) 字形图像的同义词。在显示 Unicode
字符数据时,可以选择一个或多个字形来描绘特定字符。

字形 。(1) 在特定书写系统的上下文中,最小的独特书写单元。…

这些定义中的大多数具有听起来非常学术和正式的质量,但缺乏 任何意义 的质量,或者将定义问题推迟到另一个词汇表条目或标准部分。

所以我寻求那些比我更有学问的人的神秘智慧。这些概念中的每一个到底有什么不同,在什么情况下它们之间不会形成一对一的关系?


阅读 111

收藏
2022-06-02

共1个答案

小编典典

  • 字符 是一个重载的术语,可以表示很多东西。

  • 代码点 是信息的原子单位。 文本 是一系列代码点。每个代码点都是一个由 Unicode 标准赋予含义的数字。

  • 代码单元 是编码代码点的一部分的存储 单元 。在 UTF-8 中这意味着 8 位,在 UTF-16 中这意味着 16 位。单个代码单元可以表示完整的代码点或代码点的一部分。例如,雪人字形 ( 鈽�) 是一个代码点,但有 3 个 UTF-8 代码单元和 1 个 UTF-16 代码单元。

  • 字素 是一个或多个代码点的序列,它们显示为单个图形单元,读者将其识别为书写系统的单个元素。例如,两者a都是字素,但它们可能由多个代码点组成(例如,可能是两个代码点,一个用于基本字符a,一个用于分音符号;但还有一个替代的、遗留的单个代码点表示此字素)。某些代码点绝不是任何字形的一部分(例如,零宽度非连接符或方向覆盖)。

  • 字形 是图像,通常存储在字体 字形的集合)中,用于表示字素或其部分。字体可以将多个字形组合成单个表示,例如,如果上面是单个代码点,则字体可以选择将其呈现为两个独立的、空间重叠的字形。对于 OTF,字体的 GSUB 和 GPOS 表包含替换和定位信息以使其工作。一个字体也可能包含同一个字素的多个替代字形。

2022-06-02