
為什麼要學這個?
如果透過指令來做會更有效率的話,當然要使用指令來做。這個指令還滿常使用到的,因為字體常常在補字,一定會用到合併的功能。
GUI 的操作參考使用下面的這篇分享:合併字型較安全的方法
https://codereview.max-everyday.com/a-safer-way-to-merge-fonts/
這篇教學示範2個解法:
- 解法1: 透過 fontforge + .pe 檔.
- 解法2: python + fonttool
解法1: 透過 fontforge + .pe 檔.
使用前,需要先安裝FontForge,透過執行FontForge的腳本(Script)可以在指令行的模式下,合併2個字體檔案。
FontForge執行檔下載:
https://fontforge.org/en-US/
Max腳本檔案下載:
https://github.com/max32002/MaxFontScripts/blob/master/merge_font.pe

MaxCodeReview 影片:
https://youtu.be/SFCf50iiQbs
解法1使用範例
merge_font.pe main.ttf added.ttf outout.sfdir
說明:前二個參數,由於是使用 FontForge 去開啟,不限於 .ttf 或 .sfdir 格式,都可以被順利開啟。
第三個參數,目前的腳本固定要使用 .sfdir 格式,因為是使用 Save() 指令,如果是要產生成 .ttf 要改用 Generate().
解法2: python + fonttool
Max腳本檔案下載:
https://github.com/max32002/MaxFontScripts/blob/master/merge_font.py
使用範例:
python merge_font.py --font1 font1.ttf --font2 font2.ttf --output font3.ttf
執行畫面:

使用這個解法, 比較方便與安全, 缺點就是合併完的檔案, 在作業系統雖然可以使用, 但無法被 fontforge 開啟.
當 font1 與 font2 同時都有的字元, 會以 font2 被保留下來, 理論上應該是, 但實際上, 有時候會以 font2 為主, 有時候並不會被取代.
相關網頁
FontForge Scripting Tutorial
https://fontforge.org/docs/tutorial/scripting-tutorial.html