【问题标题】:What the character codes are in the cmap table in TrueType fontsTrueType 字体的 cmap 表中的字符代码是什么
【发布时间】:2018-09-18 08:54:58
【问题描述】:

想知道 TrueType 字体中 cmap table 的“字符代码”是什么。微软谈到了Character to Glyph Index Mapping Table,但我不明白字符或字形索引是什么意思。

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

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

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

【问题讨论】:

  • 这基本上是对您其他问题的改写吗?简短的回答是“阅读 OpenType 规范。它需要一段时间”,稍长但更简单但不太详细的答案是 pomax.github.io/CFF-glyphlet-fonts
  • 好的,非常感谢,我将不得不阅读那篇文章,它看起来真的很有帮助。是的,这几乎是相同的问题,只是角度不同。我想你已经回答得差不多了。
  • 它不包括 TTF,因为它不那么有趣,所以我添加了一个答案,具体涵盖了 CMAP 步骤之后 TTF 中的工作方式。

标签: unicode fonts character-codes


【解决方案1】:

简短但可能不希望得到的答案当然是“阅读 OpenType 规范。这需要一段时间”,所以稍微长一点但更简单但不那么详细的答案是 http://pomax.github.io/CFF-glyphlet-fonts,尽管它跳过了 TTF 所以让我们在这里看看:

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

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 2021-08-28
    • 2020-02-29
    • 1970-01-01
    • 2020-05-01
    • 2011-09-25
    • 2014-12-31
    • 2019-12-10
    • 2012-03-18
    相关资源
    最近更新 更多