True Type字体格式:笔位置,高级宽度和字距

时间:2017-03-11 16:44:29

标签: fonts true-type-fonts

我正在使用字体进行一些工作,现在使用TTF(True Type Font)文件格式。我知道字形有一个笔尖位置和一个advance width参数,它指定在绘制下一个字形之前我们应该向右移动的距离(在这里假设从左到右的字体和水平)。我的问题:

  • 在哪里可以找到FFT文件中高级宽度的数据。那是在https://jsfiddle.net/9m7doq1m/表吗?那是advanceWidthMax吗?
  • 我无法找到文件中定义笔位置的位置?你能告诉我这个存放的表吗? (或者我应该从字形xmin,ymin,基线和左方轴承数据计算出来?然后可能使用字距调整进行额外的小调整?)

  • 是字体的高级宽度全局?

  • 每个字形是否有笔位?

  • 我理解为了调整字形之间的位置,您应该使用指定字形与advanced width之间的偏移量的字距调整数据。这是对的吗?

修改

我找到了对我的问题的部分答案:

  • hhea包含整个字体的信息
  • 虽然此信息不适用。您需要从htmx表中读取包含字体中每个字形数据的数据(左侧方位和前进宽度)。

我仍然对笔位置感兴趣)以及如何正确使用字距调整数据。

1 个答案:

答案 0 :(得分:0)

希望这可以帮助将来的人们。我找到了什么:

  • hhea包含整个字体的信息
  • 虽然此信息不适用。您需要从html表中读取数据,该表包含字体中每个字形的数据(左侧方位和前进宽度)。通常,此表包含字体包含字形的条目数。每个条目指定字形左侧方位和前进宽度。

我没有找到关于笔位置的任何信息,但我假设字形的xmin值是相对于EM方格的原点。因此,要找到笔位置(在x中),您需要执行以下操作:

pos_pos_x = glyph->leftSideBearing - glyph->min.x

绘制字形后,您需要移动glyph->advanceWidth并对绘制的字形重复此过程。我不知道这是否100%准确,但至少这是我迄今为止所做的逆转工程。