2017-03-11 42 views
0

我正在做一些字體的工作,現在使用TTF(True Type字體)文件格式。我知道該字形有一個筆點位置和一個advance width參數,該參數指定在繪製下一個字形之前我們應該向右移動的距離(假設從左到右的字體在這裏和水平方向)。我的問題:True Type字體格式:筆位置,提前寬度和字距

  • 在哪裏可以找到FFT文件中高級寬度的數據。是在hhea表中嗎?那是advanceWidthMax
  • 我無法找到文件中定義的筆位置在哪裏?您能否指出我將存放這張桌子的桌子? (或者我應該從字形xmin,ymin,基線和左軸承數據計算出它,然後使用字距進行額外的小調整?)

  • 是字體的高級寬度全局嗎?

  • 是否有每個字形的筆位置?

  • 我理解爲了調整字形之間的位置,您應該使用字距數據來指定字形之間的偏移量,即相對於advanced width。那是對的嗎?

編輯

我找到了部分答案我的問題:

  • hhea包含了整個字體
  • 信息雖然這個信息是不是真的適用。您需要從htmx表中讀取包含字體中每個字形的數據(左側方向和前進寬度)的數據。

我仍然對筆的位置感興趣)以及如何正確使用字距數據。

回答

0

希望這可以幫助在future.What的人,我發現:

  • hhea包含了整個字體
  • 信息雖然這個信息是不是真的適用。您需要從html表中讀取包含字體中每個字形數據(左側方位和前進寬度)的數據。通常這個表格包含的字體包含字形的條目數量。每個條目指定字形左側的軸承和前進寬度。

我沒有找到關於筆位置的任何信息,但我認爲字形的xmin值是相對於EM正方形的原點。因此,要找到筆位置(X),你需要做的是這樣的:一旦字形繪製然後需要通過glyph->advanceWidth移動,並重復繪製字形這一過程

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

。我不知道這100%是否準確,但至少這是我迄今爲止已經完成的逆向工程。