我正在研究代码页,并且遇到了许多相互冲突的术语用法,即使在不同的维基百科条目中也是如此。我只是找不到从头到尾说明整个字符处理过程的信息来源。精通该领域的人能否提出以下信息不准确或不正确的方式:
据我了解的字符表示过程:
我们从与任何特定平台无关的符号集(不确定此处的正确术语,可能是“脚本”)开始。例如,“西里尔字母”被理解为在 Windows 环境中指代与 Linux 中相同的实体。
这些集合的成员通常由供应商选择成束,以形成特定于平台的字符集。平台可能会分配这些不同的代码,例如 Windows 上的 GDI 值(例如,ANSI_CHARSET 为 0,此处提到的其他代码:http ://asa.diac24.net/wiki/index.php?title=ASS:fe&printable=yes ) . 我找不到关于这些集合的太多信息,例如它们是否实际上是编码字符集,或者它们是否只是无序和抽象的。
从这些集合中,开发出的各个代码页似乎与 GDI 值具有一对一的映射关系。由于这些 GDI 值似乎代表依赖于平台的集合,这是否意味着 Windows 代码页本质上是每个单独集合的编码版本?
我一直无法将这个想法与之前显示给我的链接(我已经丢失)协调起来,该链接显示了这些 GDI 字符集和跨不同平台的代码页之间的一对多映射。这是否准确,这些 GDI 值是否指向可以开发跨不同平台的不同代码页的集合?
每个代码页将抽象字符集的一个成员映射到一个整数上,以表示它在集合中的位置。在上述网页上提到的“更简单”代码页的情况下,可以使用更精确的“字符映射”术语来引用这些代码页。这个术语值得考虑还是区别太微妙和不重要?
如果字体包含用于该代码点的代码点,则字体将代码点解析为字形,否则报告失败。我还读到字体可能会为那些它不支持的代码点返回自己的空白字形。应用程序能否区分此空白字形和成功解析,即。字体是否会返回带有此空白字形的各种错误代码?
我相信这就是我困惑的程度。在这方面的任何澄清都是非常宝贵的。提前致谢。