我正在做一些字体工作,现在使用TTF(True Type Font)文件格式 . 我知道字形有一个笔尖位置和一个 advance width
参数,它指定在绘制下一个字形之前我们应该向右移动的距离(在这里假设从左到右的字体和水平) . 我的问题:
-
在哪里可以找到FFT文件中高级宽度的数据 . 那是在hhea表中吗?是
advanceWidthMax
? -
我找不到文件中定义的笔位置在哪里?你能告诉我这个存放的表吗? (或者我应该从字形xmin,ymin,基线和左方轴承数据计算出来?然后可能使用字距调整进行额外的小调整?)
-
是字体的高级宽度全局?
-
每个字形都有笔位吗?
-
我理解为了调整字形之间的位置,你应该使用指定字形之间相对于
advanced width
的字距的字距调整数据 . 那是对的吗?
编辑
我找到了一些问题的部分答案:
-
hhea
包含整个字体的信息 -
虽然这个信息不太适用 . 您需要从
htmx
表中读取包含字体中每个字形数据的数据(左侧轴承和前进宽度) .
我仍然对笔位置感兴趣)以及如何正确使用字距调整数据 .
1 回答
希望这可以帮助将来的人们 . 我找到了什么:
hhea
包含整个字体的信息虽然这个信息不太适用 . 您需要从
html
表中读取包含字体中每个字形数据的数据(左侧轴承和前进宽度) . 通常,此表包含字体包含字形的条目数 . 每个条目指定字形左侧方位和前进宽度 .我没有找到关于笔位置的任何信息,但我假设字形的xmin值是相对于EM方格的原点 . 因此,要找到笔位置(在x中),您需要执行以下操作:
一旦绘制了字形,您需要移动
glyph->advanceWidth
并对绘制的字形重复该过程 . 我不知道这是否100%准确,但至少这是我迄今为止所做的逆转工程 .