透過指令合併2個字體檔案

為什麼要學這個?

如果透過指令來做會更有效率的話,當然要使用指令來做。這個指令還滿常使用到的,因為字體常常在補字,一定會用到合併的功能。

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