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

Unicode cmap表格中TrueType字体的字符代码是什么,unicode,fonts,character-codes,Unicode,Fonts,Character Codes,想知道TrueType字体中的“字符代码”是什么。微软谈到了这个问题,但我不明白字符或字形索引是什么意思 想知道您是否在字体文件中的某个地方指定了编码,例如Unicode 11.0,然后字符代码等于Unicode代码点,例如U+0061对于a。或者,如果字符代码是“浏览器”字符代码(我猜是十进制代码),例如97的a 基本上想知道如何将键盘字符映射到字体字形,以及这到底意味着什么。我想你不是很想把键盘代码映射到字体符号,而是像U+0061这样的unicode代码映射到字体符号,所以如果在JavaS

想知道TrueType字体中的“字符代码”是什么。微软谈到了这个问题,但我不明白字符或字形索引是什么意思

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

基本上想知道如何将键盘字符映射到字体字形,以及这到底意味着什么。我想你不是很想把键盘代码映射到字体符号,而是像
U+0061
这样的unicode代码映射到字体符号,所以如果在JavaScript()中,你可以做
\u03A9
,如果你的字体支持的话,它会给你
Ω


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

简短但可能不理想的答案当然是“阅读OpenType规范。这需要一段时间”,因此答案可能略长,但更简单,更不详细,虽然这跳过了TTF,但让我们看看这里:


您的输入代码将通过任何适用的CMAP(给定您应用字体的上下文)运行,该CMAP将计算机代码(ascii代码、unicode代码点、ISO-2022-jp、您拥有的内容)映射到字形id。具体而言,对于TTF,该id随后用作中的数组偏移量,即“数据位置的字形索引”并在“glyf”表中为字体包含的每个图示符指定字节偏移量。然后在该字节偏移量处查阅glyf表,并按照

的规定开始解析字节。这基本上是对另一个问题的重新表述吗?简短的回答是“阅读OpenType规范。这需要一段时间”,稍微长一点,但更简单和不太详细的回答是可以的,非常感谢你,我将不得不阅读那篇文章,它看起来真的很有用。是的,这几乎是同一个问题,只是角度不同。我想你回答得差不多了。它不包括TTF,因为它不太有趣,所以我添加了一个答案,专门涵盖CMAP步骤后TTF中的工作方式。