周 俊,李永忠,楊立華
(江蘇科技大學 計算機科學與工程學院,江蘇 鎮(zhèn)江 212003)
我國藏族人口大約640萬[1],藏文的存在已經(jīng)有1400多年的歷史。新世紀信息技術(shù)飛速發(fā)展,藏文的信息化有助于藏族人民跟上時代的潮流,而藏文輸入法的實現(xiàn)對藏文的信息化具有重要意義。到目前為止藏文輸入法在PC端的實現(xiàn)已經(jīng)比較成熟,如微軟藏文輸入法是現(xiàn)在使用最廣泛的藏文輸入法,并被定為國家標準藏文輸入法。在移動智能終端藏文輸入法的研究相對比較空白,文中主要研究了android平臺下藏文輸入法實現(xiàn)的關(guān)鍵技術(shù),并在此基礎(chǔ)上實現(xiàn)了在手機終端的藏文輸入。論文的主要內(nèi)容為藏文的特征與編碼、Android輸入法框架和藏文輸入法的實現(xiàn)過程。
傳統(tǒng)的藏文文法一般認為藏文有30個輔音字母和4個元音符號構(gòu)成[2]。一個藏文音節(jié)最多有7個符號構(gòu)成,這些符號依據(jù)藏文的結(jié)構(gòu)特點分別出現(xiàn)在音節(jié)字的不同位置 (圖1)。每一個方框表示可以出現(xiàn)一個輔音字母,圓圈表示可以出現(xiàn)一個元音符號(一般不同時出現(xiàn)兩個元音符號)。
最早的藏文國際標準編碼提案是1988年由西方學者P.Lofling提出的,而編碼的起步是從國際統(tǒng)一編碼聯(lián)盟發(fā)布Unicode1.0(1991年10月)開始的,最初只收錄了71個藏文字符[3]。經(jīng)過版本的不斷完善到Unicode6.0已經(jīng)收錄了213個藏文字符,包括篇首符、標點符號、數(shù)字符號、輔音和元音字符、宗教符號等,編碼范圍為0F00-0FFF,這些構(gòu)成了藏文編碼的基本集[4]。
圖1 藏文基本結(jié)構(gòu)圖Fig.1 The basic structure of Tibetan
中國的藏文編碼受到漢字編碼方案的影響,編碼采用了垂直預組合的編碼結(jié)構(gòu),即由基字和疊加字形成的字丁結(jié)構(gòu)。國家標準《藏文編碼字符擴充集A》共收錄了1536個藏文和常用梵文的垂直預組合字符,編碼范圍為F300-F8FF,基本上滿足了現(xiàn)代藏文文獻的需求[5]?!恫匚木幋a字符擴充集B》則收錄了5702個藏文字符,主要為梵源藏文字符,所有字符在GB13000.1-1993的專用平面OF上編碼,編碼范圍為F0000-F1645[6]。
藏文字體的實現(xiàn)采用了OPEN-TYPE技術(shù),傳統(tǒng)的字體技術(shù)無法實現(xiàn)對Unicode編碼的支持,目前能夠支持Unicode編碼的藏文字庫較多,比如DDC Uchen字庫、Jomolhari字庫、Lobsang Monlam 字庫、Qomolangma字庫等[7]。
Android是一個以Linux為基礎(chǔ)的開放源代碼移動設(shè)備操作系統(tǒng),主要用于智能手機和平板電腦,由Google成立的Open Handset Alliance(OHA,開放手持設(shè)備聯(lián)盟)持續(xù)領(lǐng)導與開發(fā)中,吸引著無數(shù)的開發(fā)愛好者投入其中,Android憑借其平臺的優(yōu)勢在手機市場上占據(jù)巨大份額[8]。Android已發(fā)布的最新版本為Android 5.0(Lollipop),Android系統(tǒng)架構(gòu)主要分成五個部分:linux 內(nèi)核,Android Runtime,Libraries,Application Framework和 Applications。
Android IMF(輸入法框架)是 Android1.5新添的重要模塊,能夠很好的支持軟鍵盤的輸入,開發(fā)者可以根據(jù)此框架開發(fā)各種輸入法。該框架主要由3個部分組成:Input method manager、Input method(IME)、Client application。他們之間的關(guān)系如圖2所示。
圖2 Android IMF框架結(jié)構(gòu)Fig.2 Android IMF
Input method manager主要管理各個部分的交互,它是一個客戶端API,存在于各個應用程序的context中,用來溝通管理所有進程間交互的全局系統(tǒng)服務。通過
來獲取一個InputMethodManager實例。
Input method(IME)實現(xiàn)一個生成文本的獨立交互模塊,通過綁定一個當前的輸入法,使輸入法創(chuàng)建和生成、何時隱藏或者顯示UI,且同一時間只能運行一個IME。一個輸入法是service(服務)的實現(xiàn),通過繼承 InputMethodService來實現(xiàn),它是輸入法框架的核心部分。
輸入法實現(xiàn)主要流程為:調(diào)用onCreate()方法完成輸入法的初始化;通過onCreateInputView()方法在輸入創(chuàng)建和返回一個視圖層次結(jié)構(gòu),比如軟鍵盤;onCreateCandidatesView(),創(chuàng)建候選詞區(qū)域;onStartInputView(EditorInfo, boolean),通過此函數(shù)的調(diào)用開始輸入內(nèi)容;onFinishInput()該方法用于結(jié)束當前輸入;最后可以通過onDestroy()方法關(guān)閉輸入法。整個輸入法的生命周期圖如圖3所示。
client application:通過輸入法管理器控制輸入焦點和IME的狀態(tài)。一次只能有一個客戶端使用IME。
藏文的輸入法的開發(fā)也是按照android輸入法框架來設(shè)計與實現(xiàn)的,主要不同點在于開發(fā)藏文輸入法要實現(xiàn)對藏文字符的支持,文中主要研究了android平臺下藏文字庫的支持、藏文的字符的預組合處理和藏文輸入法鍵盤的設(shè)置,從而實現(xiàn)藏文的輸入。
圖3 輸入法生命周期圖Fig.3 The input method Life cycle
Android API為我們提供了Typeface類[10],我們可以通過該類實現(xiàn)指定的字體和字體的樣式,其實現(xiàn)方法如下:
即通過創(chuàng)建一個新的typeface類通過實現(xiàn)create From Asset方法從指定的字體數(shù)據(jù)中創(chuàng)建新的字樣[11]。本文采用的字體庫為DDC_Uchen.ttf(把字體庫放在assets目錄下)該字體庫兼容了中國國家標準Unicode擴展集A,基本上能夠支持對現(xiàn)代藏文的支持。
輸入法的采用的字符集是unicode基本字符集,也就是實現(xiàn)對藏文基本輔音字符,元音字符,常用符號,數(shù)字符號等的輸入,根據(jù)藏文字符的特性要實現(xiàn)藏文字體的完美輸入需要對藏文字符的垂直預組合處理,也即實現(xiàn)藏文編碼擴充集中垂直疊加而成的藏文字符和常用梵音轉(zhuǎn)寫字符的集合,如(UF300)我們通過輸入兩個基本字符集(U0F68)和(U0F72)完成對該字丁的輸入。其實現(xiàn)方法為:
該方法主要完成了擴充集A中的垂直預組合字符和基本字符的轉(zhuǎn)換,從而完成字符的預組合處理。
Android Keyboard.Key類為我們提供了軟鍵盤的設(shè)置,我們可以通過此類設(shè)置我們的軟鍵盤。我們可以在XML文件定義我們的鍵盤,例如:
如<Key android:codes="0x0F4F"/>在鍵盤中顯示的藏文字符為 。由藏文的Unicode編碼和軟鍵盤的輸入法特性,我們可以把常用的藏文符號,基本藏文元音、輔音字符,組合用輔音字母以及數(shù)字符號設(shè)置在鍵盤中,根據(jù)字符的種類,我們輸入鍵盤分成4個,兩個基本輔音字符和元音符號界面,另外兩個分別為數(shù)字符號和組合用輔音字符界面。最終的藏文鍵盤效果如圖4所示,在真機中的效果圖如圖5所示。
圖4 鍵盤效果圖Fig.4 Keyboard renderings
圖5 輸入法效果圖Fig.5 Input method renderings
文中主要研究了藏文字符的特點,Android輸入法框架,以及Android平臺下實現(xiàn)藏文輸入的關(guān)鍵技術(shù),設(shè)計并實現(xiàn)了一個Android平臺下的藏文輸入法,通過真機驗證能有效的進行藏文的輸入。
[1]百度百科.藏族[EB/OL].[2014-10-1]http://baike.baidu.com/view/2700.htm.
[2]江荻.藏文識別原理與應用[M].北京.商務印書館,2012.
[3]The Unicode Consortium.The Unicode Standard.Version 1.0[S].Volume 1,Reading, MA, Addison-Wesley Developers Press,1991.
[4]The Unicode Consortium.The Unicode Standard.Version 6.0[S].Mountain View,CA.2011
[5]國家技術(shù)監(jiān)督局.信息技術(shù) 藏文編碼字符集 擴充集A[S].(GB/T 20542-2006).北京:中國標準出版社,2007.
[6]國家技術(shù)監(jiān)督局.信息技術(shù) 藏文編碼字符集 擴充集 B.[S].(GB/T22238-2008).北京:中國標準出版社,2009年。
[7]Digital Tibetan.Tibetan Fonts[EB/OL].[2014-05-01].http://digitaltibetan.org/index.php/Tibetan_Fonts.
[8]wikipedia.Android[EB/OL].[2014-10-07].http://zh.wikipedia.org/zh/Android.
[9]Android APIs.InputMethodManager[EB/OL].[2014-08-05].http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html.
[10]Android APIs.Typeface [EB/OL].[2014 -08 -05].http://developer.android.com/reference/android/graphics/Typeface.html.
[11]周藝環(huán),任偉,張旭,等.電子式互感器異常報文數(shù)據(jù)庫設(shè)計[J].陜西電力,2014(5):65-68.ZHOU Yi-huan,REN Wei,ZHANG Xu,et al.Electronic transformer exception message database design[J].Shaanxi Electric Power,2014(5):65-68.