« Firefly 新宋 1.3.0 | Main | 關於 East Asian Ambiguous Characters 的問題 »
我們使用的工具是 FontForge。這個工具是自由軟體,功能相當不錯,應該可以應付一般的字型處理。這裡不多說明 FontForge 的使用細節,並且假設你都已經安裝好 FontForge。我們就以一個實際的例子來做中學,這樣應該會比較容易進入狀況,也有趣多了,大家都可以試著替自己的字型加上所需要的字。
使用原字型的筆畫及部首,這樣比較可以維持原字型的字的風格(style),只要置放的位置拿捏好,和原有的其他字排列在一起時比較不容易有突兀的情形。使用參考的方式,一方面可以節省所佔空間,另一方面這些抽取出來的部首、筆畫可以重複利用,當然,這些部首元件的置放位置就會比較傷腦筋,要有一個好的事先規畫,否則到後來字一多起來,會佔用真正有字的位置,而此時一更動部首元件的位置,那將會天下大亂,因為所造的字就會找不到參考位置。
我們就以『酶』這個字為例,他的 Unicode(UCS-2) 碼是 U+9176。我們可以從『醋』(U+918B)取出『酉」部,然後從『脢』(U+8122)取出『每』部,兩個就可以合成為『酶』了。那,為什麼不直接使用『酉』和『每』來合成呢?因為,這樣一來合成時必需要去縮小,這樣筆畫會變細,和原來的其他的字會有不一致的情形。
在這之前,我們先來看一下 FontForge 常要用到的簡捷鍵,以方便往後的操作:
| 按鍵 | 作用 |
|---|---|
| Ctrl-c | Copy 拷貝 |
| Ctrl-v | Paste 貼上 |
| Ctrl-x | Cut 剪下 |
| Ctrl-g | Copy Reference 拷貝參考位置 |
| Ctrl-Shift-> | 前往所輸入的 Unicode 碼位置 |
| Ctrl-3 | 將螢幕顯示放大為 36 pixel |
| Ctrl-k | 顯示所選取字的 metrics window |
| Ctrl-s | 存檔(sfd) |
| Ctrl-Shift-g | 產生新字型(TTF,pfb) |
準備好了嗎?那麼我們就開始載入字型,且存檔成 sfd 的格式,這是純文字檔,是 FontForge 的字型原始檔,所有的作業就在這個 sfd 檔來進行,以免更改了原 TTF。在修改滿意後,我們再來輸出 TTF 的格式出來。這裡有一個供練習用的 sfd 檔,以下的說明將會以這個 sfd 檔來做解說:
http://edt1023.sayya.org/fonts/FontDIY.sfd
載入字型後,按 Ctrl-3 放大成 36 pixel,不然原來的字太小了(如果是使用這裡提供的 sfd,那麼他已經放大好了,無需再放大),這不會影響製作出來的 TTF,這只會影響 sfd 檔在螢幕的顯示。由於我們需要額外的位置來置放分離出來的部首及筆畫,所以要增加字型的字的容量。按 [Elements] => [Font Info] => [Encoding],Encoding 我們選取 ISO 10646-1(Unicode, BMP),然後 Numbers of Glyphs 修改成 68000,這樣就可以把我們的部首、筆畫,存在 65536 以後的位置。
現在按 Ctrl-Shift-> 然後會彈出一個視窗,在視窗中輸入 uni918b 按 Enter 就會跑到 U+918B(醋)的地方,double click 這個字,就會彈出這個字的視窗出來。我們要取的是『醋』的左半邊,可以按滑鼠左鍵來選取範圍,這時會有反白(黃)的區域出現,如下圖:
其中會有一些不要的部份,這個等 copy 到新位置後再來處理。現在按 Ctrl-c 就會把反白的部份 copy 到記憶體中,關閉目前這個視窗,按 Ctrl-Shift->,輸入 67393,會跑到新的位置,然後按 Ctrl-v 就會把記憶體中的內容貼上。重複同樣的動作,也把『脢』(U+8122)的『每』,分割出來,copy 至 67399 的位置備用。這裡輸入數字前沒有加上 uni,所以是指字的實際位置,而不是他的 Unicode 碼。
Copy 到新位置後,利用滑鼠左鍵來選取不需要的範圍,然後按 Ctrl-x(cut) 來把他消除掉,完成後應如下圖:
現在『酉』是在 67393 的位置,而『每』我們以同樣的方法把他置放在 67399 的位置。現在我們就開始來合成『酶』字了。
把位置移到 67393(酉),然後按 Ctrl-g,這是只 copy 他的參考位置,Ctrl-Shit-> 移到 uni9176,然後按 Ctrl-v 貼上,此時只貼上參考位置的數據,並沒有把真正的 glyph copy 過去。再把位置移到 67399(每),按 Ctrl-g,再移到 uni9176,double click uni9176 會彈出視窗,此時按 Ctrl-v 貼上『每』的參考位置。但是,會有重疊的地方,如下圖:
這沒有關係,我們可以利用滑鼠去調整他的位置及大小,鼠標置於字框本身可以拉動他至適當的位置,鼠標置於字的外方框則可以調字的長寬,例如以下是完成後情形:
這裡可以看得出來,FontForge 並沒有像其他的實體字一樣顯示,而是只顯示字框及其參考位置而已,表示這並不是一個實體字,而是參考某個參考位置的虛擬字。
這樣就已經完成八、九分了,接下來是調整和其他字排列時的一致性,先將前景視窗 close 後,把主視窗的一排的字反白,如下圖:
然後再按 Ctrl-k 會有 metrics 視窗彈出來:
這時就可以去移動字的左右位置,並把字寬調整成和其他字一樣,在這個例子是 920,但一般的中文字型可能會是 1024。如果看起來上下高低不一致,那麼還是要回到主視窗,double click 那個字來重做調整。
好了,調整滿意時,就可以存檔(Ctrl-s),存檔後再按 Ctrl-Shift-g 來產生新字型,此時當然我們要選用 TrueType 來產生我們所需要的 TTF。這樣新字型就誕生啦!
找到一個日文的介紹,也可以看看^^
http://wiki.fdiary.net/font/?unixuser200403-3
| « | 八月 2010 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 | |||||