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