使用冬青黑體簡體中文作 Mac OS X 的默認字體時,為什麼在部分軟體的某些顯示狀態下,字體下方出現了較大的空白?
請問這是什麼原因?如何解決?
大概是 Line Gap 的原因.
字體中有一項 Line Gap 值, 字面意思是行間距, 因為高級排版軟體通常會用自己的演算法確定行高及行間距等, 所以字體中的這些值大部分時候都被無視了, 這也就導致了它的定義混亂 (以下全部針對的都是 OTF 格式字體):
有人將它作為行高來看待, 比如 Adobe 及 Morisawa 的 CJK 字體中該值多為 1000;有人將它作為行間距來看待, 比如 OTF 格式的西文字體該值多為 200;也有完全搞不清楚狀況的如 Hiragino 家族將該值設為了 500 —— 雖然我很想吐槽這個值但還是算了...
所以提問者的情況, 是由於這些 "非高級排版軟體" 調用了字體內的 Line Gap 值來作為行間距, 而 Hiragino 字體中的 Line Gap 值設置的很匪夷所思, 導致呈現出來的行間距也很匪夷所思.
另外說明一下, 我並沒有實際測試, 只是通過提問者的截圖, 看到它呈現出的行間距與 Hiragino 字體中的 Line Gap 值很接近, 所以猜是 Line Gap 的原因.
修改字體方法的分割線~~~~~~~~~~~~~~~~~~~~
不建議一般意義上的 "編輯字體", 因為任何字體編輯軟體都是將字體文件中的數據讀出來, 再按照自己的風格重寫出來, 所以你雖然以為她還是那個她, 但她已經不是了. 那麼針對這種小規模的修改, 就要祭出神器 —— ttx, 鏘鏘鏘鏘!
ttx 是個命令行工具, 通過以下命令將字體 dump 成 .ttx 文件:
ttx "Hiragino Sans GB W3.otf"
.ttx 文件實際上是個 XML 文本, 可以用一個高級點的文本編輯器打開它 (因為體積會很大), 比如 Sublime Text. 然後搜索關鍵詞 "gap", 能找出三處, 分別在 OS/2 表下, hhea 表下, 以及 vhea 表下, 都改成 200 好了 (根據 @梁海 的測試, OS X 只對後兩者敏感). 然後保存並通過以下命令將 .ttx 轉回 .otf:
然後試用一下新生成的字體文件吧, 如果行間距還是那麼匪夷所思, 說明我從一開始的假設就錯了...ttx "Hiragino Sans GB W3.ttx"
OS X 的文本排版 API 設定文本行高時會受字體自身的參數影響。具體受哪些參數影響我不太清楚。
但結果就是,冬青黑體簡體中文的默認行高比 Lucida Grande 和華文黑體都大。
對個人來說,這個可以通過字體編輯器來修改。具體的事情,@厲向晨 和 @Belleve 可能會比較了解。但如果你想要根本的解決方案,只能請求這些軟體的開發者主動指定行高。這裡有一組 @Chen Luo 之前用 NSFontAttributeExplorer 做的字體參數對比:

- - -
如果是 Pages 這樣的軟體,你可以在「檢查器」的「文本」面板中明確指定「行距」的「固定值」,這樣來指定絕對行高,而非使用默認的「單倍」之類的相對行高。這樣就不會受字體自身行高參數的影響了。
修改OS X UI默認字體不要用第三方軟體, 而要用plist替換的方法, 醬紫做才不會出現字體下方空間較大的問題
推薦閱讀:
※為什麼電腦在處理西文長單詞換行時會出現如下圖示的現象?
※有哪些較為符合漢字「舊字形」的電腦字體?
※中文排版中有必要使用「首字下沉」嗎?使用時需要注意什麼問題?
※中英文文本混排時,圓括弧該用中文括弧還是西文括弧?


