FontForge 使用心得

前言

 

FontForge 是一支功能很強的字型處理程式,會接觸這支程式,主要是在學習由某些字型檔,取出部份字型,打造出一個 Web 開放字型 woff/woff2(Web Open Font Format),讓讀者在線上閱讀佛典時,可以在沒有安裝較新的 unicode 字型的情況下,也能看到這些字型,就是利用 Web 開放字型。

 

下載與安裝

 

FontForge 官網:https://fontforge.org/

 

下載後請依官網指示安裝及執行,重點提示:

 

  • 在安裝程式按右鍵,選擇「以系統管理員身分執行」。

 

image


 

  • 安裝後,開啟 FontForge 也是按右鍵,選擇「以系統管理員身分執行」,或是直接在捷徑按右鍵,選內容 -> 相容性,勾選「以系統管理員的身分執行此程式」。

 

image

 

如果要處理的字型很大,就需要 64 位元版的程式,可在這裡下載最新的版本:

 

https://sourceforge.net/projects/fontforgebuilds/files/x86_64/Portable/

 

不過作者有交待,64 位元不常更新,可能問題較多,請儘量少用。

 

界面基本操作

 

中文化

 

程式預設是安裝在此目錄

 

C:\Program Files (x86)\FontForgeBuilds

 

在此目錄下,找到 fontforge.bat 檔案,找到這一行

 

::set LANGUAGE=en

 

改成如下

 

set LANGUAGE=zh_TW

 

再儲存起來即可。如果無法儲存,可以先複製至其它目錄修改後,再想辦法用管理員權限覆蓋過去。

 

執行畫面

 

程式一執行,會要求開啟一個字型檔。在此以微軟正黑體為例:

 

image

image

 

選第一個之後,可以看到如下界面。

 

image

 

前往指定文字

 

在主功能表按下檢視 -> 前往

 

image

 

輸入文字

 

image

 

就可以到指定的文字了。

 

image

 

編修字型

 

文字連點二下,就可以進入編輯系統。

 

image

 

基本操作功能很好猜,可以區域選擇、複製、刪除,拉動定位點。

 

如此一來,就可以複製不同字的不同部件,用以組成一個新字了。

 

底下是測試在左邊複製一個點,並且加粗、移動,在文字上可以直接看到效果。測試時請不要儲存,以免破壞字型檔。

 

image

 

壓縮視圖

 

如果是內容不多的字型檔,可以在主功能表中選擇「編碼 -> Compact」

 

image

 

就可以看到只呈現有字型的文字。

 

image

 

上面是刻意設計的字型,位置是錯置的,可以看到 a 的位置呈現 b,這樣才能測試有沒有正確呈現指定的字型。

 

旋轉

 

這裡介紹一點基本功能。

 

先用右圖左上角的箭頭,選擇要旋轉的範圍,底下我是全選,再按下「旋轉所選」的功能,就可以拖動文字,旋轉到想要的角度。

 

同時也可以看到左圖的文字也同時旋轉了。

 

image

 

伸縮

 

可以上下左右伸縮。

 

image

 

翻轉

 

可以上下左右翻轉。

 

image

 

傾斜

 

可以左右傾斜。

 

image

 

3D 旋轉

 

image

 

翻到天邊去了

 

旋轉很大,要自己試才知道了。

 

image

 

産生字型

 

我想「儲存」是存成同樣格式,而「産生字型」就是可以産生其它格式的字型。

 

image

 

儲存成自己想要的格式,網路上多人建議,底下的「儲存之前進行驗證」不要勾選,不然會花不少時間。

 

image

 

OTF 要轉成 TTF 字型時,有一些注意事項,請見最底下「問題排解」之「OTF 轉 TTF 注意事項」。

由程式産生字型檔

 

這個程式的目的是要將 input.txt 之中的文字由 test.ttf 取出,另外放在 testFont.ttf(以及 .woff, woff2),woff2 壓縮較好,但 IE 只支援 woff 格式。

 

input.txt 格式是一字一行,底下是主要的程式。

 

d:/font/testfont.py

 

 

import fontforge

 

# 來源字型

origin_font = fontforge.open("d:/font/test.ttf")

# 新建字型

new_font = fontforge.font()

# 設定編碼為 ISO-10646-1 (Unicode, Full) *重要*

new_font.encoding = "UnicodeFull"

# 複製原字型的比例設定

new_font.ascent = origin_font.ascent

new_font.descent = origin_font.descent

new_font.em = origin_font.em

 

# 開啟文字清單

with open('d:/font/input.txt' ,'r', encoding='UTF-8') as fp:

    for c in fp.readlines():

        # 取得文字字碼 16進位

        uc = ord(c.strip())

        # copy對應字碼的字圖 paste至新字型裡

        try:

            origin_font.selection.select(uc)

            origin_font.copy()

            new_font.selection.select(uc)

            new_font.paste()

        except TypeError:

            pass

 

# 設定新字型 metadata

filename = 'testFont'

new_font.fontname = filename

new_font.familyname = filename

new_font.weight = 'Regular'

new_font.copyright = ''

new_font.version = '1.0'

new_font.fullname = 'test font maker'

 

# 存檔 fontforge 軟體編輯用的 .sfd 檔案 以及 .ttf 檔案

new_font.save("d:/font/{}.sfd".format(filename))

new_font.generate("d:/font/{}.ttf".format(filename), flags='opentype')

new_font.generate("d:/font/{}.woff".format(filename))

new_font.generate("d:/font/{}.woff2".format(filename))

 


 

執行方法

 

  1. 系統管理員身分開啟 DOS 視窗。
  2. 切換到程式安裝目錄。
  3. 執行 fontforge -script d:/font/testfont.py
  4. 完成後就可以在目的目錄看到産生的字型檔了。

 

 

C:\>cd "Program Files (x86)\FontForgeBuilds"

C:\Program Files (x86)\FontForgeBuilds>fontforge -script d:/font/testfont.py

 

 

問題排解

 

這裡記錄一些遇到的問題與解決方法。

 

無法開啟大檔,請安裝 64 位元版

 

花園明朝體 HanaMinB.otf 是很大的檔案,有 30.7M,在測試的過程中,不論是使用界面開啟,或是用程式處理,都會發生閃退現象。

 

估計是檔案太大,記憶體不足,因此 Windows 系統要下載 64 位元版,下載點在此:

 

https://sourceforge.net/projects/fontforgebuilds/files/x86_64/Portable/

 

不過作者有交待,64 位元不常更新,可能問題較多,請儘量少用。

 

使用這個版本後,HanaMinB.otf 就可以順利開啟了。

 

無法用程式由 OTF 檔産生其它字型檔

 

在使用上面産生字型檔的程式中,如果來源檔是 OTF 的字型,就會有如下的錯誤訊息,原因不明。

 

File "d:/font/testfont.py", line 26, in <module>

    origin_font.selection.select(uc)

ValueError: Encoding is out of range

 

解決方法就是先將 OTF 轉成 TTF,就可由 TTF 去産生 woff 等檔案了。

 

OTF 轉 TTF 注意事項

 

這是 OTF 要轉成 TTF 的過程。

 

image

 

按下 Generate,首先會看到底下這個畫面,我也不懂,就不理它了。

 

image

 

接著出現底下這個畫面,原本我也不理它,結果産生出來的 TTF 有問題,在 Windows 下無法直接開啟。

 

image

 

所以就依上面的教導,至主選單選「元件->字型資訊」

 

image

 

再選「一般」找到 Em 尺寸,這個 OTF 的 Em 是 1000,上面說 TrueType 的 Em-Size 應該是 2 的乘冪,所以我就改成 1024。

 

image

 

按下確定後,就會開始調整。調整完後,再次轉成 TTF,就沒有先前看到的警告,轉出來的 TTF 也可以順利用程式轉成 woff2 等格式了。


 

重要度:
文章分類:

回應

otf 轉 ttf 的部份,也可以直接用 script 處理:

origin_font.generate("filename.ttf", flags='opentype')

就可以不用開啟GUI 囉

WB 說的也對,這部份應該也可以用 script 處理,謝謝提醒!laugh

因為在實務上,産生 woff2 的機會較多,otf 轉 ttf 只要做一次,除非 otf 有新的版本。

所以可以寫成二支 script 來處理。

發表新回應