美文网首页
Unicode 字符编码模型_抽象字符库(ACR)

Unicode 字符编码模型_抽象字符库(ACR)

作者: import_hello | 来源:发表于2018-09-03 00:19 被阅读0次

转载须注明出处:简书@Orca_J35
本文参考资料的列表位于 Unicode 字符编码模型_简介

字符库是包含抽象字符的无序集合,字符库有封闭(fixed )和开放(open)之分:

  • 封闭字符库一旦确定,就再也不会改变,如 ASCII。如果想要在封闭字符库中添加新的抽象字符,就需要创建一个新标准,不能在原有标准中直接添加。
  • Unicode 标准采用开放字符库,允许向其中添加新的抽象字符。

Tips:在 Unicode 文档的大多数语境中,将抽象字符库与字符库(character repertoire)视为同义词,本文也如此。

由于字符库存是包含抽象字符的无序集合,所以我们可以把它想象为一个集合类型。这里以 Python 的集合类型为例:

Character_Repertoire = {"6", "$","ü", "L", "鲸", "あ", "Д", "α", "å", "😯", ...}

字符 vs. 字形

为了避免歧义,我们需要先明确术语的定义:(参考 Unicode 术语表)

  • 字符 (Character) (1)在书面语言中具备语义价值的最小组成部分,泛指抽象的意义和[或]形状(shape),而非特定的形状 (see also glyph);然而在编码表(code tables)中,为了便于读者理解,呈现某种形式的视觉表示是必不可少的。(2)抽象字符的同义词。

  • 抽象字符 (Abstract Character):用于组织、控制或表示文本数据的信息单元。

依据"字符"的第一种定义,我们应将"字符"视作"抽象字符"的一个子集。因为,它只包含了书面语言中具备语义价值的部分(即,用于表示文本数据的信息单元),但并不包含用于组织和控制文本数据的信息单元。但在 Unicode 术语表中,很多时候会将"字符"与"抽象字符"视作同义词,也就是采用字符的第二种定义。在本文的大多数语境下也会将"字符"与"抽象字符"视作同义词

如何理解字符和字形

单从定义上来看,我们很难对"抽象字符"的概念有一个清晰的认识,那么到底什么是"抽象字符"喃?
在阅读文字时,我们通过视觉观察到的其实是字形(glyph)——字形是表示某个字符的特定图像,有时也可能是表示某个字符的某一部分的特定图像。我们可以将"抽象字符"想象为"字形"的父类,虽然这样理解并不正确,但足够清晰。抽象字符规定了字形的"形式",但并没有给出具体的实现方式。字形作为抽象字符的子类,对各种抽象"形式"给出了具体实现。由于具体实现方式的差异,抽象字符便会产生不同的子类,从而形成不同的字形。

以 Emoji 中的飞机(Airplane)为例:用于描述飞机的抽象字符给出了飞机的抽象"形式",如有流线型的机身、有机翼、有引擎等;但抽象字符并没有给出这些"形式"的具体实现方式,比如引擎的数量、飞机的颜色、飞机的比例等。飞机的字形为各种抽象"形式"给出了具体实现,比如给定了引擎的数量;明确了飞机的颜色及比例;是卡通风格还是写实风格等。因此,我们可以通过视觉观察到飞机的字形。由于实现方式的差异,便会在视觉上形成不同的飞机,这些不同的飞机代便是同一个抽象字符的不同字形。

emoji_airplane.jpg

再比如说大写字母 O,其抽象字符给出该字母的"形式":一个类似于圆的形状;但没有给出具体的实现方式,如圆的大小、长宽比、字重、字宽等。字母 O 的字形为各种抽象"形式"给定了具体实现(比如给定了字重、字宽等),以便我们可通过视觉观察到字母 O。同样,由于实现方式的差异,我们便会在视觉上观察到不同的字母 O,如下:

不同字体的字母O.jpg

注意,抽象字符和字形并非继承关系,上述内容只是为了便于理解,才采用了继承关系。从技术上来说,当需要可视化某个抽象字符时,会在合成(composition)和布局(layout)处理期间,通过渲染引擎来选择相应字形。

字体(Font)是字形的集合,用于字符数据的可视化描述。字体通常会关联一组参数[例如,size, posture, weight, serifness],在为参数设置特定值后,便会生成一个图像化(imagable)的字形集合。不过这都属于渲染引擎的工作,这又是另一个复杂的问题了。

字符和字形的对应关系

在显示同一字符时,可选择不同的字形,并且这些字形的形状(shape)可能会有较大的差异。下图展示了小写字母 a 的字符和部分字形样式:

字符和字形_a.jpg

Note: 字符 a 是为了便于读者理解,而呈现的视觉表示。[图片上传中...(fi ligature_n2n.jpg-9c5d16-1535885771154-0)]

字形和字符并非总是一一对应关系:

  • 单个字形可能会对应多个字符。例如,由 'f' 和 'i' 构成的字符序列,可能被显示为单个字符(该字符名为 fi ligature)。
    Note: 在合并后的形状中,字符 'i' 少了一个点。
fi ligature.jpg
  • 极端情况下甚至可能存在多对多的情况。比如上列中 fi ligature 的字形也可能是由一个字形序列组合而成的。
    Note: 在显示某一字符时,是使用单个字形还是使用字形序列,是由字体和渲染软件决定的。
fi ligature_n2n.jpg
  • 单个字符可对应单个字形,也可对应一个字形序列。例如,重音(accented)字符可以由单个字形表示,也可以由一个字形序列来表示。另外,所要表示的内容本身也可能是由一个字符序列组成的,如下图中的第二行。
重音字符.jpg

non-Latin script 中,字形和字符之间的对应关系甚至会让人觉得意外。因为,在绘制字形的具体形状时,还需要考虑其周围的字形,这种字形被称作 contextual forms 。例如,阿拉伯字符 heh 就具有四中上下文字形。

Arabic character heh.jpg

另外,字形的排序也不一定对应于字符的排序,特别是阿拉伯语和希伯来语等从右到左的 scripts 中,会存在复杂的重排序过程。特定字符序列能否显示为特定字符串,取决于操作系统和字体的复杂程度。

其它术语

  • 字形 (glyph):(1)表示一个或多个"字形图形"的抽象形式。(2)与字形图像(glyph image)同义。在显示 Unicode 字符数据时,可以选择一个至多个字形来描绘特定字符。在合成(composition )和布局(layout)处理期间,会通过渲染引擎选择这些字形。(See also character.)

  • 字形图像 (Glyph Image):已经点阵化(rasterized)或以其它方式成像到某些显示表面的字形表示的具体图像。The actual, concrete image of a glyph representation having been rasterized or otherwise imaged onto some display surface.

  • 字体 (Font):字形的集合,用于字符数据的可视化描述。字体通常会关联一组参数[例如,size, posture, weight, serifness],在为参数设置特定值后,便会生成一个图像化(imagable)的字形集合。

  • 渲染 (Rendering). (1) 为了描绘字符,而选择并布局字形的过程。(2) 在显示设备上显示字形的过程。

相关文章

  • Unicode 字符编码模型_抽象字符库(ACR)

    转载须注明出处:简书@Orca_J35本文参考资料的列表位于 Unicode 字符编码模型_简介 字符库是包含抽象...

  • Unicode 字符编码模型_简介

    转载须注明出处:简书@Orca_J35 Unicode 字符编码模型分为四个层级(level),概况如下: ACR...

  • 抽象字符表ACR

    抽象字符表ACR 抽象字符表(ACR)也称为抽象字符集,或字符集。表示由若干字符组成的集合,该集合是无序的。这些字...

  • 字符与编码(五)

    (九)Unicode字符集的字符编码方式 一、字符编码方式CEF的选择 由于Unicode字符集非常大,有些字符的...

  • 笔记-encode与decode

    字节串-->decode('原来的字符编码')-->Unicode字符串-->encode('新的字符编码')--...

  • Unicode 字符编码模型_字符编码模式(CEF)

    转载须注明出处:简书@Pythonista_Zen本文参考资料的列表位于 Unicode 字符编码模型_简介 为了...

  • day3总结

    1.什么是字符串 2.转义字符 3.Unicode编码 1).将Unicode码转换成字符: chr(编码) 2)...

  • 大端字节序和小端字节序的理解

    参考编码字符集和字符编码介绍unicode和字节介绍

  • ucs

    unicode编码方式 统一码(unicode)的编码方式使用的是通用字符集UCS unicode字符的平面映射本...

  • ASCII,Unicode,UTF-8,Base-64

    字符编码笔记:ASCII,Unicode和UTF-8字符编码笔记:ASCII、Unicode、UTF-8 和 Ba...

网友评论

      本文标题:Unicode 字符编码模型_抽象字符库(ACR)

      本文链接:https://www.haomeiwen.com/subject/yngmwftx.html