藏文輸入法開發筆記

本文也發表在#osxchat blog上。

這兩天繼續在毫無藏文基礎的狀況下,研究在電腦上的藏文輸入,而繼續工作下去,則愈來愈發現問題遠比我原本所想像的複雜。

首先講一個比較簡單的問題,那就是在Unicode中除了造了基本字母之外,也造了幾個組合音的字碼,例如由ག(ga)以及ཧ(ha)所組成的གྷ(gha)等,這些字碼分別位在 Unicode 的 0x0F43、0x0f4D、0x0f52,、0x0f57、0x0f5C 位置上,所以,在遇到這樣的字碼的時候,應該要再重新組合一次,而不是直接送出⁄,而在這樣處理之後,因為可以縮短上方字母的一些較長的筆劃,使整個字看起來比較緊密,也比較美觀一些。除了這些因為ཧ所組成的字之外,還有就是由ཀ(ka)以及ཥ(ssa)所組成的ཀྵ(kssa)等。

字體的轉寫

從上圖中,應該就可以看到直接重疊原本的字母,與實際使用 Unicode 中已經將字母組合起來的字碼的差別。這個部份還不算太複雜,我已經寫進了 OV 藏文輸入法的程式碼中。

藏文字體沒有正確顯示

另外,就目前使用Unicode輸入藏文,最後呈現出的藏文文字似乎還是有問題。例如所有以ར(ra)開頭的組合字,ར最後的那一筆其實是不寫的,而是直接與另外一個字母最上面的筆劃重疊,但是在Unicode中並沒有省略ར最後一筆的字符,所以直接使用 Unicode 輸入藏文的時候,最後組合出的藏文,其實並不符合實際藏文的寫法(請參見上圖的第一個字)。我覺得很奇怪,在 Unicode 中有 གྷ ,怎麼會沒有省略最後一筆的ར呢?是我沒有找到嗎?可是我也花了一段時間在找啊。

在組合ར以及ཡ(ya)等字母的時候,雖然會組合在原本字母的下方,但是其實也不是位在正確的位置。這應該是屬於字體或作業系統文字引擎的問題,就目前的狀況來看,及使用 Tibetan Machine Uni 等支援藏文組合字的字體,也無法正確處理。

在 jsked 這些專屬的藏文編輯系統中的作法是,在遇到這些組合字的狀況時,另外⁄使用已經組好的字形(glyph)顯示,但是就 Tibetan Machine Uni 等字體來看,這些字形都不在 Unicode 中,所以這些組合好的字就算在 jsked 裡頭打了出來,卻沒有辦法剪貼到其他的應用程式中,而且在轉換成 Unicode 之後,字體的顯示效果,也與直接在 TextEdit.app 中,與用 OV 藏文輸入法輸入的效果差不多。而 jsked 這個用 Java 寫成的編輯器在平常使用上最大的缺陷,就是不能夠列印,如果能夠列印的話,至少可以使用 PDF 文件交換電腦藏文資訊。

我還有一個疑問是,在 Tibetan Machine Uni 當中的許多組合字,按照字母的組合,在 jsked 裡頭卻怎麼也打不出來。例如以下這張圖片出現的字,都是我打不出來的,用 ov 是可以打出來,但是遇到這樣的狀況,我不太能夠判斷在輸入藏文時,怎樣才是正確的行為。

這些字用 jsked 的藏文鍵盤都打不出來

而我目前想到,能夠使用所有在 Tibetan Machine Uni 所包含的字形,然後又能夠輸出、列印的解決方案,就是使用 Adobe InDesign,然後從glyph選單中一一點選輸入,然後因為 InDesign 本身就是專業排版軟體,所以可以進一步處理各種後續的操作。而在 TextEdit.app 裡頭使用 ov 藏文,只能說是一個有比沒有好的工具。可是…可是藏文的文書處理,總覺得實在不應該是這個樣子啊。