就我所知道,一般應用軟體中,影響 TTF/OTF 字高(行距)的因素有(這不含一些專業排版系統):
- hhea table:ascent/descent/linegap 等資訊,這一般是 Apple 系統在使用。
- os/2 table: usWinAscent/usWinDescent 等資訊,這一般是 Windows 系統在使用。
- os/2 table:TypoAscender/TypoDescender/Typolinegap 等資訊,一般的計算方式為:
行距 = TA - TD +TL
以一般字型 em size 1000,TA 800,TD -200 而言,一般英文字行距設 em size 的 120%,所以:
1200 = 800 - (-200) + TL, TL = 200
- glyph 實際在 em 框裡頭的上下位置,一般應用軟體取字是以 em 框為準來取字及調整,但實際上,如果 glyph 位於 em 框較高或較低,就會影響顯示時這一排字的高低。
- TTF instructions 也可以影響字高低,所以,有開 TTF bytecode interpreter 的 FreeType2,和沒有開的效果,對帶有 TTF instructions 的字型,所表現的高低會不一樣。
- 其它:指我不知道的因素,例如據說可以定義 VDMX(Vertical Device Metrics)來調整,這個 FreeType2 有支援(FT_Load_Sfnt_Table),但也要你的應用軟體有去使用這個功能才會有效。
像一般我們使用英文字型來顯示英文,配合中文字型來顯示中文,這個時候最容易發生,字高低不一樣,目前據我所知,桌面應用環境裡頭沒有辦法微調,只能自行選個相配的字型,或自行去修改字型本身。
當然,如果某特定的應用軟體去實作特殊功能的話(例如一些專業排版軟體),那還是可以調整的。