在某些情況下一個(gè)字體可能缺少一個(gè)在你的應(yīng)用程序中使用時(shí)必要的字形。阿拉伯字體在這里展示了特殊的問題,由于字形的形狀不僅依賴于它在詞中的位置,也依賴于字母本身的屬性。因此(使用無意義的序列 babab),字母 beh 有三種不同的形狀,依賴于是否處于開頭、中間還是結(jié)尾。然而(使用無意義的序列 dadad),字母 dal 只有一個(gè)形狀,而無論其處于詞中的什么位置。
在開源協(xié)議(例如 GPL 或 OFL 下的字體允許用戶做出修改。如果你修改了一個(gè)基于一個(gè)開源協(xié)議的字體然后分發(fā)它,那么你必須保持原作者的版權(quán)條款和許可信息,盡管你可以在你的分發(fā)版本的版權(quán)條款后添加你的條款。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/beh_dal.png" alt="beh_dal.png" />
本章介紹為一個(gè)阿拉伯字體添加一個(gè)字形。我們將使用的字體是 Graph,我們將添加的字形是 peh(U+067E),它在阿拉伯字體中并不出現(xiàn),但是在使用阿拉伯書寫字母的一些語言中指定 p(阿拉伯書寫字母的字形全列表參見 Unicode 圖表)。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh.png" alt="peh.png" />
從網(wǎng)頁下載并字體并解壓。運(yùn)行 FontForge 并加載字體。將其保存為 sfd,在保存前編輯建議的名字來讀取 GraphNew.sfd。
如果你不重命名字體,你修改的字體將不會與原始的區(qū)分開安裝——你將不得不首先卸載原始字體。如果你準(zhǔn)備分發(fā)你的修改版的時(shí)候重命名字體也是明智的——如果字體原作者使用 Reserved Font Name(RFN)機(jī)制保留了字體名,那么原始名字只能用于原作者的字體版本。
選擇Element->Font Info,在 PS Names 面板下將 Fontname,F(xiàn)amily Name 和 Name For Humans 修改為 GraphNew。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/font_rename.png" alt="font_rename.png" />
如果有必要,你可以在 Copyright 一項(xiàng)的文本后添加一條信息“Additional glyphs added by”。
在 TTF Names 面板下的,tFamily 和 Fullname 的名稱取自 PS Names 一項(xiàng),應(yīng)該顯示的是 GraphNew(你不能直接編輯他們)。將 Preferred Family 和 Compatible Full 兩項(xiàng)修改為 GraphNew?,F(xiàn)在如你所希望的那樣,這些名稱的修改將會允許你將字體與原始字體安裝在一起。
如果有必要,你可以在 Designer 一項(xiàng)的文本后添加一條信息“Additional glyphs added by”。
點(diǎn)擊 OK 來保存修改。你將會看到一條關(guān)于為字體生成一個(gè)新的 UniqueID(XUID)的消息——點(diǎn)擊 Change。
打開字體圖表的阿拉伯區(qū)域:選擇 View->Go to,點(diǎn)擊下拉框并選擇 Arabic,然后點(diǎn)擊 OK。
點(diǎn)擊字體圖表中的一個(gè)單元格將會在面板頂部用藍(lán)色顯示其 Unicode 數(shù)字和名稱。轉(zhuǎn)到位置 1662,將會顯示藍(lán)色的 1662 (0x67e) U+067E "uni067E" ARABIC LETTER PEH。引用的字形下面的單元格包含一個(gè)灰色的 X,意味著字體并不包含這個(gè)字形。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_blank.png" alt="peh_blank.png" />
我們將通過復(fù)制 beh(U+0628)并將其一個(gè)點(diǎn)替換為三個(gè)點(diǎn)來制作 peh。
點(diǎn)擊 beh 單元格(位置 1576),然后右擊并選擇 Copy。然后右擊 peh 單元格并選擇 Paste。現(xiàn)在 beh 被復(fù)制進(jìn) peh 單元格,接下來要修改的是點(diǎn)。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_with_beh.png" alt="peh_with_beh.png" />
找到一個(gè)包含三個(gè)點(diǎn)的字形——sheen(位置 1588,U+0634)符合。雙擊這個(gè)單元格——將會打開一個(gè)字形設(shè)計(jì)面板。按 V 來確保工具箱的指針工具(剪頭)選中,按 Z 擴(kuò)大面板來給你一個(gè)字形的好的視圖。
點(diǎn)擊拖動 sheen 上的三個(gè)點(diǎn)的節(jié)點(diǎn),顏色從粉色變?yōu)槊咨?。如果你意外地包含或者忽略了一個(gè)節(jié)點(diǎn),那么取消選擇或者通過按 Shift 并點(diǎn)擊來選擇。按 Alt+C 來復(fù)制。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/sheen_dots.png" alt="sheen_dots.png" />
返回字體表格并雙擊 peh 單元格——這會將 peh 加載到字形設(shè)計(jì)面板 sheen 選項(xiàng)卡旁邊的另一個(gè)選項(xiàng)卡。
點(diǎn)擊拖動來高亮 peh 下面的點(diǎn),然后按 Delete。按 Alt+V 來粘貼三個(gè)點(diǎn),很可能出現(xiàn)在 peh 主體的上面。留下高亮的點(diǎn)的節(jié)點(diǎn),這樣你可以很容易地翻轉(zhuǎn)或者移動它們。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_dots1.png" alt="peh_dots1.png" />
翻轉(zhuǎn)點(diǎn):從工具箱選擇翻轉(zhuǎn)工具(兩個(gè)三角形中間有一條紅色虛線)。(也可以右擊點(diǎn)的中間,從彈出菜單中選擇 Flip the selection。)點(diǎn)擊點(diǎn)的節(jié)點(diǎn)中的一個(gè),輕微向左或右拖動鼠標(biāo)。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_dots2.png" alt="peh_dots2.png" />
移動翻轉(zhuǎn)的點(diǎn):按 V 來再次選擇指針工具,點(diǎn)擊點(diǎn)的節(jié)點(diǎn)中的一個(gè),然后將其拖動到字形主體的下面。將他們放在 ArabicBelow 標(biāo)記上的中間位置。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_dots3.png" alt="peh_dots3.png" />
關(guān)閉字形設(shè)計(jì)面板?,F(xiàn)在字體表格中的 peh 應(yīng)該有一個(gè)新的字形。保存修改的字體(File ->Save)。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_new.png" alt="peh_new.png" />
但是這只是字形的孤立(獨(dú)立)形式。如果你嘗試使用你修改過的字體,你將會發(fā)現(xiàn)開頭、中間和結(jié)尾形式并不可用。它們必須被分開制造。“這些形式作為未編碼字符(FontForge 約定編碼是 -1 的字形)來構(gòu)建。它們沒有預(yù)定義的位置?!保↘haled Hosny)
選擇 Encoding->Add Encoding Slots 并輸入你想要的字形的數(shù)量——在這種情況下是 3。FontForge 將會在字體的后部添加同樣數(shù)量的位置,你將會被移動到字體表格中那個(gè)位置。最后三個(gè)單元格(位置 65537,65538,65539)的引用字形處有一個(gè)問號,在這些單元格中你將會通過重復(fù)上面的流程添加未編碼字形。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_slots.png" alt="peh_slots.png" />
需要注意的是如果你在字體表格仍然擁有叫點(diǎn)的時(shí)候錯(cuò)誤地開始輸入,你會移動到頂部的 European 區(qū)域。要回到底部,選擇 View->Go to,點(diǎn)擊下拉框并選擇 Not a Unicode Character,然后點(diǎn)擊 OK。
向上滾動一點(diǎn)字體表格直到你向前到達(dá)位置 65152(U+FE80)的一系列阿拉伯字形。在 U+FE90(位置 65168)你講看到一個(gè) behfinal 字形——點(diǎn)擊它并按 Ctrl+C 來復(fù)制它。向下滾動到表格的倒數(shù)第三個(gè)單元格(位置65537),點(diǎn)擊它,并按 Ctrl-V 來粘貼 behfinal 字形。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/beh_forms.png" alt="beh_forms.png" />
右擊單元格并選擇 Glyph Info。命名規(guī)范是使用孤立字形的數(shù)字 + 一個(gè)形式的后綴,因此將 Glyph Name 修改為 uni067E.fina,然后點(diǎn)擊 OK。引用單元格的問號將會修改為 peh。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_final.png" alt="peh_final.png" />
得到三個(gè)點(diǎn):雙擊 sheen(U+FEB5)來將它加載到字形設(shè)計(jì)面板,選擇三個(gè)點(diǎn)并按 Ctrl+C。
雙擊新的 pehfinal 來將它加載到字形設(shè)計(jì)面板,點(diǎn)擊拖動來高亮點(diǎn)的節(jié)點(diǎn)并按 Delete。
Ctrl+V 來插入來自 sheen 的三個(gè)點(diǎn),翻轉(zhuǎn)它們,將它們移動到字形主體以下的位置。按來保存修改過的字體表格。
復(fù)制初始形式 U+FE91(位置 65169)到倒數(shù)第二個(gè)單元格(位置 65538),刪除單個(gè)點(diǎn)并粘貼三個(gè)點(diǎn)。
右擊單元格,選擇 Glyph Info,將 Glyph Name 修改為 uni067E.init,并點(diǎn)擊 OK。
復(fù)制中間形式 U+FE92(位置 65170)到最后一個(gè)單元格(位置 65539),刪除單個(gè)點(diǎn)并粘貼三個(gè)點(diǎn)。
右擊單元格選擇 Glyph Info,將 Glyph Name 修改為 uni067E.medi,并點(diǎn)擊 OK。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_forms.png" alt="peh_forms.png" />
選擇 File->Save 來保存修改過的字體表格。
孤立的形式必須被映射(連接)到它的開頭、中間和結(jié)尾形式。
選擇 Element->Font Info->Lookups。
點(diǎn)擊'init' Initial Forms in Arabic lookup 2 旁邊的+。這將會打開同名的子菜單。點(diǎn)擊這個(gè)子菜單。
右邊的 Edit Data 按鈕現(xiàn)在將會變成可用——點(diǎn)擊它。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_lookups1.png" alt="peh_lookups1.png" />
在彈出的 Lookup Subtable 面板中,確保 Unicode 按鈕勾選。將字符列表向下滾動知道最后。
在 Default Using Suffix 旁邊的輸入框里,輸入相關(guān)的后綴(在這種情況下是 init),然后點(diǎn)擊 Default Using Suffix。
一個(gè)新的映射將會被添加到字符列表,從 uni067E(peh 的孤立形式)到 uni067E.init(初始形式)。點(diǎn)擊 OK。
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/peh_lookups2.png" alt="peh_lookups2.png" />
對'medi' Medial Forms in Arabic lookup 2 和'fina' Terminal Forms in Arabic lookup 2 下的子菜單做同樣的操作,選擇 medi 和 fina 作為相關(guān)的后綴。
再次點(diǎn)擊 OK 來關(guān)閉面板,并保存字體表格(Ctrl+S)。
需要注意的是 Default Using Suffix 看起來只能工作在 Unicode 06(Arabic)塊——在 Unicode 07(Arabic Supplement),比如帶兩個(gè)點(diǎn)的 ain,可能必須通過點(diǎn)擊帶行標(biāo)記的 New 并輸入名稱來手動添加。
選擇 File->Generate Fonts。
在 PS Type 1 (Binary)的下拉框中選擇 TrueType,并檢查文件名是 GraphNew.ttf。
跳轉(zhuǎn)到你想要保存字體的地方,然后點(diǎn)擊 Generate。在彈出的兩個(gè)信息消息中點(diǎn)擊Yes 和 Generate。
然后你可以使用一般字體安裝步驟來安裝修改的字體。然后新的字形 peh 可以與已有的字形在相同的本章開始提到的無意義的例子中一起使用:
http://wiki.jikexueyuan.com/project/fontforge-and-font-design/images/beh_dal_peh.png" alt="beh_dal_peh.png" />
注意:如果你在 LibreOffice 中使用一個(gè)字體并修改了這個(gè)字體,那么你需要重啟 LibreOffice 來看到任何改變——否則它將使用之前的字體而不是改變了的。
感謝 Khaled Hosny 對使用 FontForge 編輯阿拉伯字形的建議。