你的念頭和想法,就是你的資糧;差別在於自己累積的是善或惡的資糧?!

2013年11月5日 星期二

OpenVanilla 藏文輸入法 ─2


文章摘自 http://zonble.twbbs.org/archives/2004_12/669.php



在上週末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處理組合字也沒有什麼問題,從0×0F40開始的字母是組合的基礎,然後其他會自動放在原來字母下的字母,是設計在0×0F90的位置。Sambhota的設計是在按下「f」按鍵之後開始組合文字,所以假如在鍵盤按鍵的陣列中,第一個按鍵是f的話,那第二個按鍵送出原本的字碼,從第三個按鍵開始,每個字碼加上0×50,然後,超過四個按鍵、或按下母音的話就把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當中一同釋出。
文章分類: — zonble @ 4:24 pm #

4 項留言回應 »

  1. 布達拉宮應該請你去七日遊…貢獻良多。
    來自 tomex_ou 的 迴響留言 — 2004 年 12 月 26 日 @ 6:52 pm
  2. 那藏語你好的”扎西ㄉㄟ勒”怎麼打
    我之前在印度大吉嶺學的
    來自 林小妞 的 迴響留言 — 2004 年 12 月 30 日 @ 9:56 am
  3. ༄༅།ༀ་ཧྰ་རེ་ཧུཧྷྰ་རེ་ཧུ་རེ་སྰ་ཧྰ། 錯了吧..
    ༄༅། ཨོཾ་ཏཱ་རེ་ཏུཏྟཱ་རེ་ཏུ་རེ་སྭཱ་ཧཱ། 應該是這樣地吧..綠度母心咒
    བཀྲ་ཤིས་བདེ་ལེགས། 爬網找資料.到此一遊.不好意思.. 881 札西德勒
    來自 過水的人 的 迴響留言 — 2004 年 12 月 30 日 @ 11:32 am
  4. Tavultesoft Keyman 6.0 is free, but with limited support, for personal use (or personal educational use).
    那個Tavultesoft Keyman Developer 才是要錢地吧..
    要設計鍵盤才要用Tavultesoft Keyman Developer
    似乎是這樣地..嗯…
    來自 過水的人 的 迴響留言 — 2004 年 12 月 30 日 @ 11:38 am

沒有留言:

張貼留言