TrueType 字体的 cmap 表中的字符代码是什么

Lan*_*ard 4 unicode fonts character-codes

想知道TrueType 字体中cmap 表的“字符代码”是什么。Microsoft 谈到了Character to Glyph Index Mapping Table,但我看不到字符或字形索引的含义。

想知道您是否在字体文件中的某处指定了编码,例如 Unicode 11.0,然后字符代码等于 Unicode 代码点,例如U+0061for a. 或者,如果字符代码是“浏览器”字符代码(我猜是十进制代码),例如97for a.

基本上想知道如何将键盘字符映射到字体字形,以及这真正意味着什么。我认为您不太想将键盘代码映射到字体字形,而是将 unicode 代码映射U+0061到字体字形,所以如果在 JavaScript 中(例如),您可以这样做,\u03A9并且?如果您的字体支持它,它将为您提供。

试图根据字体文件如何将数学字形映射为向量/路径、字符或某种代码来理解字体文件的解剖结构。

Mik*_*ans 6

简短但可能不受欢迎的答案当然是“阅读 OpenType 规范。这需要一段时间”,所以一个稍长但更简单且不太详细的答案是http://pomax.github.io/CFF-glyphlet -fonts,虽然它跳过了 TTF,所以让我们看看这里:

考虑到您将字体应用到的上下文,您的输入代码会通过任何适用的 CMAP 运行,它将计算机代码(ASCII 代码、unicode 代码点、ISO-2022-jp,您有什么)映射到字形 ID。对于 TTF,该 id 然后用作“loca”表中的数组偏移量,该是“数据位置的字形索引”表,并为字体包含的每个字形指定“glyf”表中的字节偏移量。然后在该字节偏移处查阅 glyf 表,并开始解析https://docs.microsoft.com/en-us/typography/opentype/spec/glyf指定的字节