在上週末ICOS2004上,#osxchat的朋友們一同釋出OpenVanilla這套在MacOS X上的中文輸入法框架的0.61版之後,在網路上就有篤信藏傳佛教的朋友,因為有輸入藏文的需要,詢問是否可能使用OpenVanilla輸入在麥金塔電腦上輸入藏文。這個問題現在有了肯定的答案,因為我在聖誕夜裡,已經寫好了一套在OpenVanilla環境下的藏文輸入法—雖然說完全不會藏文的人寫出來的藏文輸入法,到底堪不堪用是個大問題,雖然已經有「還在學藏文」的朋友做,了大概簡短的測試,不過,這需要會藏文而且使用麥金塔電腦的朋友們,多多測試。
在Unicode的規格中,從U+0F00開始的位置就是藏文,MacOS X對於Unicode的支援算是相當完整,在藏文字體方面也沒有什麼問題,MacOS X內建的簡體中文字體中,就包含了藏文,另外在網路上也可以下載如Tibetan Machine Uni等字體。這篇blog中用了一些Unicode當中的藏文字元,如果您沒有藏文字體的話,就看不到這些字,您或許可以去下載一下藏文字體。總之,在MacOS X中顯示Unicode藏文沒有問題,問題就在怎麼輸入。
在The Tibetan & Himalayan Digital Library網站介紹藏文輸入的頁面上,介紹了相當多的輸入方式,不過都是以Windows平台為主,包括供Keyman使用的藏文鍵盤,Keyman只有Windows平台的版本(而且要錢),能夠在MacOS X上用的,有Tibetan!,不過只能夠在Microsoft Word裡頭用,Wylie Word應該也可以在Mac的Word裡頭使用,不過下載下來,卻是一個Windows的自動解壓縮格式。
另外就是Jskad這個用Java寫成的編輯器,在這個編輯器當中,支援四種藏文輸入方式。雖然比較堪用,但問題同樣很大:Jskad裡頭的藏文,如果沒有在打完之後,用Convert All→Convert to Unicode轉換的話,不是Unicode,而是在編輯器中用某些ASCII code組成藏文文字,雖然是除存成RTF格式,但是RTF當中的藏文,只能在Jskad裡頭看的到,需要在轉換之後才能夠剪貼到其他應用程式;另外,Jskad居然沒有列印功能,顯然用起來不怎麼方便。
雖然不會藏文,不過大概看了一下Sambhota Keyboard One(Jskad提供的四套鍵盤配置之一)的說明,大概整理出了一套邏輯;另,為什麼選Sambhota Keyboard One開始研究呢?因為在網路上的朋友想要的是這個鍵盤,就先了解這個鍵盤了。
一、在藏文中分成母音與子音,母音似乎無法單獨存在,而是必須黏靠在子音的字母上,如果只有單獨的子音,就是念做「阿」音,例如「ཀ」是「ka」,而加上了「e」的音,「ke」就會成為「ཀེ」,在這邊「k」與「e」是個別的字碼,蘋果的文字處理引擎,在TextEdit等程式中可以很流暢的把個別的部份組合在一起,不過如Microsoft Work就會有問題,可能Sarafi也會怪怪。所以要先整理出母音與子音的Unicode與鍵盤位置。如果打了子音,就進入中文輸入法的組字狀態,把子音放進buffer中;在組字狀態下,如果又按了一個子音,就把前一個子音送出,如果打母音,就把母音加上,一起送出。
二、另外就是藏文中有一些幾個字母組成的組合字,英文叫做Stacking,我不清楚用組合字稱呼正不正確、或精不精確,不過,在漢字的中文輸入法中做藏文的組字,在這裡「組字」會有兩種意思,一種是像無蝦米用「OAO」打「哈」這種用按鍵組合成一個對應的字碼的意思,上一段用的就是這個「組字」的意思,一種是藏文中用多個字碼合成一個字,也就是接下來要講的意思。
在Unicode處理組合字也沒有什麼問題,從0x0F40開始的字母是組合的基礎,然後其他會自動放在原來字母下的字母,是設計在0x0F90的位置。Sambhota的設計是在按下「f」按鍵之後開始組合文字,所以假如在鍵盤按鍵的陣列中,第一個按鍵是f的話,那第二個按鍵送出原本的字碼,從第三個按鍵開始,每個字碼加上0x50,然後,超過四個按鍵、或按下母音的話就把buffer送出,因為看起來最多組合字也是以三個字母組成。
三、藏文中的數字是單獨存在的,對應到鍵盤的一到九,另外也有一些如分隔號、空白、括弧的符號,有這些符號的話,就把buffer與符號一起送出。
四、另外在藏文字母上,會出現一些奇怪的圈圈。比方說「ཀཽ」上面可以在加上一個圈,變成「ཀཽཾ」,在Sambhota中是用&以及%做這件事情,而這個圈圈需要放在字母上,而不是放在符號上,所以很髒的用了一個變數,架設最後送出的一個按鍵是字母,按下&與%才有作用。這麼做有一個問題,就是你可能打出一個字之後,會用左右鍵到前面的字上面加圈圈,但是按鍵是無效的;可是在Jskad中,也有同樣的狀況,所以,這個問題,可能不是問題—吧?
所以按照這幾個原則,用了一堆if與then,就先弄出了一個在OpenVanilla當中的藏文輸入環境,另外看了一下,Jskad裡頭另外兩個鍵盤TCC Keyboard 1與TCC Keyboard 2的原則,與Sambhota差不多,只是鍵盤的位置不太一樣,所以等到目前OV的Sambhota弄得更好一點,應該只要改一下,就可以變成TCC Keyboard了。
Wylie鍵盤會比較麻煩一點,因為之前的鍵盤都是每個母音或子音都是一鍵一字,但是Wylie會使用到兩個按鍵打一個藏文字母,比方說,在Sambhota鍵盤中打「x」就可以打出「」,但是Wylie鍵盤是用「ts」,Sambhota是用鍵盤上的大小寫判斷是長短音,而Wylie則是用加上一個「h」表示長音,大概要重新想要怎麼做。反正現在也沒有人說要用,就先不管了,不過如果什麼蒙藏委員會、西藏流亡政府或西藏獨立人士有興趣贊助OpenVanilla這個輸入法計畫的話,我想這些東西要弄出來應該都很快,呵。
༄༅།ༀ་ཧྰ་རེ་ཧུཧྷྰ་རེ་ཧུ་རེ་སྰ་ཧྰ།
這段藏文是在SubEthaEdit裡頭,照著某個網頁直接照打的。完全不懂是什麼意思。
藏文輸入法應該會放在下一版的OpenVanilla當中一同釋出。
布達拉宮應該請你去七日遊…貢獻良多。
那藏語你好的”扎西ㄉㄟ勒”怎麼打
我之前在印度大吉嶺學的
༄༅།ༀ་ཧྰ་རེ་ཧུཧྷྰ་རེ་ཧུ་རེ་སྰ་ཧྰ། 錯了吧..
༄༅། ཨོཾ་ཏཱ་རེ་ཏུཏྟཱ་རེ་ཏུ་རེ་སྭཱ་ཧཱ། 應該是這樣地吧..綠度母心咒
བཀྲ་ཤིས་བདེ་ལེགས། 爬網找資料.到此一遊.不好意思.. 881 札西德勒
Tavultesoft Keyman 6.0 is free, but with limited support, for personal use (or personal educational use).
那個Tavultesoft Keyman Developer 才是要錢地吧..
要設計鍵盤才要用Tavultesoft Keyman Developer
似乎是這樣地..嗯…