蘋方移植

Toby Tso
汚音屋 × UJAM
4 min readMay 29, 2017

--

請注意,修改字體是侵犯版權的行爲。

解開 TTC 檔

使用 Adobe Font Development Kit for OpenType (AFDKO) 的 Python 腳本 otc2otf.py(你也可以僅下載這個腳本,需要事先安裝 Python 2)將 PingFang.ttc(位於 macOS 的 /System/Library/Fonts/ 內,需要 OS X 10.11 El Capitan 或更高版本的系統。請先將其拷貝至使用者目錄)這個 OpenType Collection 解開成一個個單字重的 OpenType 字型檔。

python otc2otf.py -w PingFang.ttc

這個過程也會一併將 PingFang.ttc 內包含的 18 個「用戶無法單獨使用」、「專門由系統拿來用以顯示介面文字用的」(.PingFang 字型其中的一個解出來。解出來的 .PingFang 字型檔名是 PSNameUndefined.otf。因爲派不上用場,所以直接把 PSNameUndefined.otf 刪掉即可。

刪掉之後,得到 18 個 OpenType 字型檔,分別爲「蘋方-簡/繁/港」的六個字重。

修改 CMap

如果你是 Linux 用家,你會發現:由上一步解出來的 18 個 OpenType 字型檔是得以被裝進系統裏面的。然而若是在 Windows 或是 Android 上使用,便會被系統認定爲「無效的字型檔」。

這是由於蘋方的 CMap 表僅有兩個 platformID="0" 的子表(Unicode 平台的 CMap),卻缺少 platformID="3" 的子表(Windows 平台的 CMap)而造成的。因而無法被 Windows 與 Android 識別。

不過由於「這兩組對應的編碼方式與順序完全相同」,所以有一個偷懶的辦法。我將其寫成腳本,僅需要在剛解開的 18 個字型檔的目錄下執行即可。

sh PingFang-CMap.sh

以下即是腳本。適用於 Linux/macOS,Windows 用家請直接複製腳本內容來執行(需事先安裝 FontTools,參閱詳情):

本文不詳細介紹腳本的工作流程。若有興趣瞭解,請參閱

這個過程會產生 18 個 ttx 檔(已完成此過程,可以刪掉)和 18 個檔名帶有「#1」的新生成的蘋方字型檔。

腳本並不會改動原先的檔案,因此衹有檔名帶有「#1」的蘋方字型檔,才是與 Windows 和 Android 相容的字型檔。

原始檔案與 Windows 不相容
處理過的檔名帶「#1」的字型檔得以在 Windows 上使用

--

--