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

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


看到这些术语如何在诸如Matthias Bynens的JavaScript之类的文档中使用unicode或Wikipedia关于汉统一的文章时,我收集到这些概念不是一回事,将它们混淆是很危险的,但是我有点努力掌握每个术语的含义。


Unicode联合会提供了一个词汇表来解释这些内容,但是它充满了这样的“定义”:


抽象人物。信息单位,用于组织,控制或表示文本数据。...


...


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


...


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


...


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


这些定义中的大多数具有听起来很学术和形式化的质量,但是缺乏任何含义的质量,否则将定义问题推迟到标准的另一个词汇表条目或部分。


因此,我寻求那些比我更博学的人的奥秘智慧。这些概念中的每一个究竟有何不同?在什么情况下它们之间不会存在一对一的关系?


函数式编程
浏览 809回答 3
3回答

qq_笑_17

字符是一个重载的术语,其含义不胜枚举。甲码点是信息的原子单位。文本是代码点的序列。每个代码点都是一个数字,该数字由Unicode标准指定。甲代码单元是一个存储的单元部分的编码码点。在UTF-8中,这意味着8位,在UTF-16中,这意味着16位。单个代码单元可以代表完整的代码点或部分代码点。例如,雪人字形(☃)是单个代码点,但是3个UTF-8代码单元和1个UTF-16代码单元。甲字形是被显示为一个阅读器识别为书写系统的一个单一的元素的单一的图形单元中的一个或多个码点的序列。例如,a和和ä都是字素,但它们可能由多个代码点组成(例如,ä可能是两个代码点,一个是基字符,a然后是一个diaresis;但是还有一个替代的,遗留的,单个代码点表示这个字素)。某些代码点绝不是任何字形的一部分(例如零宽度非连接符或方向替代)。甲字形是一个图像,通常是存储在字体(这是字形的集合),用于表示字形或其部分。字体可以将多个字形组合成一个单一的表示形式,例如,如果以上ä是单个代码点,则字体可以选择将其呈现为两个单独的空间重叠字形。对于OTF,字体的GSUB和GPOS表包含替换和位置信息以使其起作用。字体也可能包含同一字形的多个替代字形。
打开App,查看更多内容
随时随地看视频慕课网APP