王 震,劉匯丹,吳 健
(1. 中國(guó)科學(xué)院 軟件研究所,北京 100190;2. 中國(guó)科學(xué)院大學(xué),北京 100049)
世界上現(xiàn)存的語言文字有幾千種,統(tǒng)一的國(guó)際標(biāo)準(zhǔn)使得這些文字可以在計(jì)算機(jī)中兼容共現(xiàn)。但許多文字在顯示輸出的過程中,往往表現(xiàn)出比拉丁文字或漢字復(fù)雜得多的特征,其字符與字形并不是一一對(duì)應(yīng)而且變形規(guī)則相對(duì)復(fù)雜,這樣的文字統(tǒng)稱為“復(fù)雜文字”(complex script),其中包括阿拉伯文、印度文、蒙古文、維吾爾文、藏文等。在這些復(fù)雜文字中蒙古文是唯一從上到下豎寫、各列從左到右排列的拼音文字,并且在一個(gè)詞里各個(gè)字符是連寫的。蒙古文的名義字符和變形顯現(xiàn)字符之間是一對(duì)多關(guān)系[1]。蒙古文的編碼模型在一定程度上不同于Unicode中的任何一種其他文字,其在很多方面是最復(fù)雜的[2]。正因?yàn)槊晒盼脑谟?jì)算機(jī)處理中復(fù)雜的變形顯現(xiàn)特性,到目前為止Windows操作系統(tǒng)本身對(duì)蒙古文顯形的支持并不完善,現(xiàn)有的主流Linux發(fā)行版自身都不能支持蒙古文的正確顯形。
2000年國(guó)際標(biāo)準(zhǔn)化組織ISO通過了國(guó)際標(biāo)準(zhǔn)ISO 10646(等同Unicode標(biāo)準(zhǔn))的蒙古文編碼[3],為蒙古文字字符集和編碼的統(tǒng)一制定了標(biāo)準(zhǔn)。但是蒙古文變形顯現(xiàn)字符集和控制字符使用規(guī)則尚無已經(jīng)實(shí)施的統(tǒng)一標(biāo)準(zhǔn),各個(gè)版本的字庫和蒙古文變形引擎名義字符到控制字符的變形規(guī)則和處理并不統(tǒng)一。國(guó)家標(biāo)準(zhǔn)《GB 25914-2010信息技術(shù) 傳統(tǒng)蒙古文名義字符、變形顯現(xiàn)字符和控制字符使用規(guī)則》(以下簡(jiǎn)稱《規(guī)則》)從2011年11月起開始實(shí)施,《規(guī)則》能解決蒙古文變形規(guī)則不統(tǒng)一的問題。這就需要按照該標(biāo)準(zhǔn)中的規(guī)則實(shí)現(xiàn)新的OpenType字庫和蒙古文變形引擎。
本文按照《規(guī)則》中蒙古文變形規(guī)則,提出了一種通用高效的蒙古文變形顯現(xiàn)模型,并分別在Linux兩個(gè)主流的桌面環(huán)境KDE和GNOME的復(fù)雜文本布局引擎中實(shí)現(xiàn)了該模型。
由于復(fù)雜文字的字符與字形對(duì)應(yīng)關(guān)系復(fù)雜,在處理時(shí)需要用到一些特殊的機(jī)制。復(fù)雜文本布局引擎就是操作系統(tǒng)中專門用來處理復(fù)雜文本布局和顯示的部件。
復(fù)雜文本布局引擎的主要任務(wù)就是將Unicode文本字符串轉(zhuǎn)變成用于顯現(xiàn)的字形串[4],其對(duì)復(fù)雜文本的顯示支持主要通過OpenType技術(shù)實(shí)現(xiàn)。目前常見的復(fù)雜文本布局引擎中包括Uniscribe、ICU、Pango、Qt、Harfbuzz等。
? Uniscribe是微軟開發(fā)的在Windows下的文本布局引擎,它主要包括以下的部件: 把文字從輸入次序重排成為顯示次序、把文字按前后文做出適當(dāng)?shù)淖儞Q、按文字顯示的方向做出字符的替換。
? ICU是IBM公司開發(fā)的用于正確顯示Unicode編碼對(duì)應(yīng)的字形的文本布局引擎。它能夠提供對(duì)復(fù)雜文本的處理,并能夠加入新的代碼來支持對(duì)新的復(fù)雜文本的處理[5]。
? Pango是一個(gè)開源的自由函數(shù)庫,用于高質(zhì)量的渲染國(guó)際化的文字。Pango被整合到多數(shù)Linux發(fā)行版中,Pango是模塊化設(shè)計(jì)的,核心的Pango布局引擎能夠用于處理不同的后端字體。同樣,對(duì)于阿拉伯文、蒙古文等構(gòu)成的復(fù)雜文本有相應(yīng)的模塊分別做處理。
? Qt庫是Linux KDE的基礎(chǔ),在Qt3.3.2及Qt之前的版本中將復(fù)雜文本布局支持融入在其文本顯示模塊中,在Qt4中使用Harfbuzz布局引擎來對(duì)復(fù)雜文本布局做單獨(dú)處理。
? Harfbuzz是一個(gè)新的OpenType布局引擎,已經(jīng)在Pango和最新版本的Qt4和Firefox4中使用。按照其作者的說法,Harfbuzz將來可能完全取代Pango,成為KDE和GNOME的底層文本布局庫。
不同平臺(tái)上的復(fù)雜文本布局引擎不盡相同,但是這些引擎卻有很多共同特點(diǎn)。這些引擎在處理一個(gè)復(fù)雜文本字符串的時(shí)候一般都要經(jīng)過以下三個(gè)步驟。
(1) 字符串分條目
依據(jù)ISO標(biāo)準(zhǔn)化組織定義的雙向算法將字符串分成多個(gè)條目(item),要求每個(gè)條目中的字符具有同樣的文字和方向?qū)傩訹5]。
(2) 條目?jī)?nèi)字符標(biāo)注
對(duì)于條目?jī)?nèi)的字符按照字符屬性、上下文關(guān)系對(duì)每個(gè)字符進(jìn)行標(biāo)注,主要是對(duì)每一個(gè)字符貼上對(duì)應(yīng)的特征標(biāo)簽(features),便于在后面的操作中進(jìn)行字形替換。
(3) 字形替換
先將字符映射成對(duì)應(yīng)的字形,得到字形串與綁定在其上的標(biāo)簽值[5],然后通過查找OpenType的字形替換表(GSUB表),按照標(biāo)簽順序進(jìn)行字形替換,得到最終顯示字形。
目前蒙古文變形引擎的實(shí)現(xiàn)一般是基于OpenType字庫技術(shù),在復(fù)雜文本布局引擎的基礎(chǔ)之上增加一個(gè)蒙古文變形模塊,以實(shí)現(xiàn)其對(duì)蒙古文的支持。自2000年蒙古文國(guó)際標(biāo)準(zhǔn)ISO 10646制定后[3],人們按照國(guó)際標(biāo)準(zhǔn)先后在不同的復(fù)雜文本布局引擎上研究、實(shí)現(xiàn)了多個(gè)蒙古文變形引擎。
董治江等對(duì)ICU的文字處理體系結(jié)構(gòu)進(jìn)行了研究,闡述了ICU支持國(guó)際標(biāo)準(zhǔn)的蒙古文、維文、藏文等少數(shù)民族文字的實(shí)現(xiàn)方法[6]。周揚(yáng)榮等通過分析ICU的源碼闡述了對(duì)復(fù)雜文本支持的設(shè)計(jì)思路和方法[5]。周揚(yáng)榮等通過在OpenType字庫中定義蒙古文對(duì)應(yīng)特征標(biāo)簽(features),在蒙古文變形引擎中分析蒙古文字符串、給每個(gè)字符貼相應(yīng)標(biāo)簽的標(biāo)簽算法得到正確字形[7]。OpenType字庫解決了用TrueType字庫對(duì)變形顯現(xiàn)字符沒有確定的碼位的問題,并在此基礎(chǔ)上實(shí)現(xiàn)了ICU對(duì)蒙古文的支持。姚延棟等在Qt3.3.2中實(shí)現(xiàn)了蒙古文變形引擎[8],依然是基于OpenType字庫技術(shù)和標(biāo)簽算法實(shí)現(xiàn)。田寄遠(yuǎn)等在Pango中實(shí)現(xiàn)了蒙古文變形引擎,實(shí)現(xiàn)了GNOME平臺(tái)編輯器中蒙古文的正確顯形[9]。斯·勞格勞分析了Uniscribe對(duì)蒙古文等復(fù)雜文本做變形的處理流程[10],Uniscribe對(duì)復(fù)雜文本變形的實(shí)現(xiàn)機(jī)制也是基于OpenType技術(shù)。蒙古文變形的復(fù)雜性也是蒙古文操作系統(tǒng)實(shí)現(xiàn)中的一個(gè)難題,芮建武通過OpenType字庫技術(shù)和Qt庫等實(shí)現(xiàn)了基于KDE桌面環(huán)境的蒙古文操作系統(tǒng)[11]。
之前的蒙古文變形引擎通過相應(yīng)的OpenType字庫能對(duì)蒙古文選形正確,但是因?yàn)楫?dāng)時(shí)沒有統(tǒng)一的可實(shí)施的標(biāo)準(zhǔn),之前的引擎中蒙古文控制字符使用并不完全符合《規(guī)則》中的規(guī)定。另外,由于當(dāng)時(shí)的蒙古文OpenType字庫中定義的標(biāo)簽數(shù)量較多,周揚(yáng)榮在ICU中實(shí)現(xiàn)的蒙古文變形引擎[8]和姚延棟在Qt3中實(shí)現(xiàn)的蒙古文變形引擎[6]都要將標(biāo)簽分三層分別處理。這使得蒙古文變形顯現(xiàn)效率極低,Qt3中的蒙古文測(cè)試文本在拖動(dòng)滾動(dòng)條時(shí)能明顯感受到屏幕刷新。本文按照《規(guī)則》中字符變形標(biāo)準(zhǔn),利用簡(jiǎn)化特征標(biāo)簽數(shù)量的OpenType字庫設(shè)計(jì)了一種通用高效的蒙古文變形模型。
蒙古文是一種拼音文字,在ISO 10646國(guó)際標(biāo)準(zhǔn)編碼字符集中收錄了傳統(tǒng)蒙古文的7個(gè)元音、27個(gè)輔音、11個(gè)標(biāo)點(diǎn)符號(hào)、10個(gè)數(shù)字和4個(gè)控制字符。但是由于ISO/IEC 10646標(biāo)準(zhǔn)制定規(guī)則的限制,該標(biāo)準(zhǔn)中只按蒙古文語音收入了抽象的蒙古文字符(稱為名義字符)。蒙古文是復(fù)雜文字,同一個(gè)蒙古文字符的書寫(顯現(xiàn)形式)會(huì)根據(jù)其在詞語中的位置不同、單詞的詞性等屬性不同而發(fā)生變化,即呈現(xiàn)在人們面前的是該字符變化后的形式(稱為顯現(xiàn)字形)。由于ISO/IEC 10646標(biāo)準(zhǔn)中沒有收入蒙古文顯現(xiàn)字符,因此,在顯示蒙古文時(shí)需要將蒙古文的名義字符根據(jù)上下文映射到其相應(yīng)的顯現(xiàn)字形。
蒙古文的正確顯示大致會(huì)受到以下規(guī)則的制約[12]。
(1) 字符在詞里的位置。很多蒙古文字符在詞首、詞中、詞尾或者獨(dú)立時(shí)各有不同的字形,主要通過單詞的結(jié)構(gòu)來確定;
(2) 自由變體選擇符FVSn和元音間隔符MVS。在單詞中配合FSVn和MVS可以正確指示蒙古文字符應(yīng)該顯示哪一個(gè)字形,或者在單獨(dú)使用某個(gè)字符的一個(gè)字形時(shí),可以通過在該字符前后加入相應(yīng)的FSVn和控制字符得到字形;
(3) 音節(jié)、詞性引起的變形。蒙古文的一個(gè)詞語分為若干個(gè)音節(jié),由元音和輔音組成的音節(jié)以及詞性(陰性、中性、陽性)都會(huì)影響字形的變形。音節(jié)與音節(jié)之間的相互關(guān)系也有可能導(dǎo)致變形;
(4) NNBSP、ZWJ、ZWNJ等控制字符。這些控制字符雖然不是蒙古文字符,但是對(duì)于蒙古文變形卻起著至關(guān)重要的作用,其對(duì)蒙古文字形顯現(xiàn)的控制規(guī)則在《規(guī)則》中規(guī)定。
在ISO 10646國(guó)際標(biāo)準(zhǔn)中并沒有包含蒙古文名義字符控制字符到變形顯現(xiàn)字符的使用細(xì)則,也沒有對(duì)蒙古文的合體字的使用做出詳細(xì)說明。在新的國(guó)家標(biāo)準(zhǔn)GB 25914-2010中對(duì)這些都給出了詳細(xì)說明。新標(biāo)準(zhǔn)中主要規(guī)定了以下兩點(diǎn)。
(1) 蒙古文的變形顯現(xiàn)字符如何通過控制字符和名義字符組合得到,標(biāo)準(zhǔn)中將所有的蒙古文變形顯現(xiàn)字符出現(xiàn)一一做出規(guī)定;
(2) 強(qiáng)制性合體字和非強(qiáng)制性合體字列表
通過定義這些規(guī)則,明確了從名義字符和控制字符到蒙古文變形顯現(xiàn)字符的映射。本文的蒙古文OpenType字庫和蒙古文變形模型的設(shè)計(jì)以此為準(zhǔn)。
OpenType字體是對(duì)TureType字體的升級(jí),能夠?yàn)椤皬?fù)雜文字”提供更好的支持。OpenType字庫對(duì)復(fù)雜文本的支持主要是通過布局表來實(shí)現(xiàn)的,這些表包括字形定義表(GDEF)、字形替換表(GSUB)、字形定位表(GPOS)、基線調(diào)整表(BASE)、對(duì)齊表(JSRF)。在蒙古文變形中主要用到GSUB字形替換表,新的OpenType蒙古文字庫按照《規(guī)則》中的規(guī)定將蒙古文字形的替換規(guī)則寫入GSUB表,經(jīng)過蒙古文變形引擎對(duì)字符貼標(biāo)簽后依次替換得到正確字形。
在符合新標(biāo)準(zhǔn)的OpenType字庫中定義了如表1所示的特征標(biāo)簽(features),從中可以看到特征標(biāo)簽一共有7個(gè),比之前實(shí)現(xiàn)的ICU和Qt3中蒙古文變形引擎時(shí)的標(biāo)簽數(shù)量大大減少。通過這7個(gè)標(biāo)簽就能夠?qū)λ械拿晒盼淖址来芜M(jìn)行特征標(biāo)注,然后在GSUB表中查找替換就能夠得到最終顯現(xiàn)字形。
表1 蒙古文OpenType字庫特征
4.2.1 基于OpenType的蒙古文變形引擎工作原理
正確的蒙古文變形顯現(xiàn)結(jié)果是由蒙古文變形引擎與蒙古文OpenType字庫相配合得到。蒙古文變形引擎是復(fù)雜文本布局引擎的一個(gè)模塊,其主要工作是通過對(duì)蒙古文字符串分析并進(jìn)行標(biāo)注。
復(fù)雜文本布局引擎先對(duì)字符串條目化處理,然后對(duì)該條目所屬的文字、語言進(jìn)行判斷,如果判斷出該條目是蒙古文則調(diào)用蒙古文變形引擎。蒙古文變形模塊對(duì)蒙古文字符串分析之后貼上特征標(biāo)簽(features)。復(fù)雜文本布局引擎在已經(jīng)讀入內(nèi)存的OpenType字庫的字形替換表(GSUB表)中查找替換規(guī)則,按照特征順序依次應(yīng)用替換規(guī)則,最終得到字形串。該流程大致如圖1所示。
圖1 復(fù)雜文本布局引擎通過OpenType字庫得到字形流程
4.2.2 設(shè)計(jì)通用的蒙古文變形模型
由于復(fù)雜文本布局引擎在實(shí)現(xiàn)上有很多共同之處,都要經(jīng)過字符串分條目、條目?jī)?nèi)字符標(biāo)注、字形替換等操作。這些共性使得可以設(shè)計(jì)一種通用的蒙古文變形模型,可以有效地作用于不同的復(fù)雜文本布局引擎中。
蒙古文變形模型的核心工作是對(duì)蒙古文字符串進(jìn)行標(biāo)注,給每個(gè)蒙古文字符貼正確的特征標(biāo)簽,通過標(biāo)簽算法實(shí)現(xiàn)蒙古文字形選擇。標(biāo)簽算法通過分析每一個(gè)蒙古文條目中的字符和其對(duì)應(yīng)的上下文確定給其分配的特征標(biāo)簽[5-6],特征作用范圍如表2所示。由于在OpenType字庫的標(biāo)簽中只有詞首(Init)、詞中(Medi)、詞尾(Fina)和獨(dú)立(Isol)這4個(gè)標(biāo)簽是對(duì)單個(gè)字符標(biāo)注,其他標(biāo)簽均作用于所有字符,這樣就可以對(duì)條目化之后的蒙古文字符串只貼這4個(gè)標(biāo)簽,其他標(biāo)簽只需要對(duì)所有字符均應(yīng)用就可以得到正確結(jié)果。
表2 特征標(biāo)簽作用范圍
詞首(Init)、詞中(Medi)、詞尾(Fina)和獨(dú)立(Isol)這4類標(biāo)簽所表示的意義在表1中已經(jīng)提及,一般來說在一個(gè)完整的蒙古文單詞中如果不考慮控制字符的影響,通過單詞邊界就能很容易判斷出字符在單詞中的位置。這個(gè)過程可以類比英文單詞,例如, “China”,“C”是詞首,“a”是詞尾,“h”,“i”,“n”是詞中。
根據(jù)變形顯現(xiàn)字符集和控制字符使用規(guī)則中的規(guī)定,蒙古文字符特征除了受字符在單詞中的位置影響外,還受窄寬度無間斷空格(NNBSP)、零寬度禁連接符(ZWNJ)、零寬度連接符(ZWJ)和元音間隔符(MVS)等控制字符的影響,它們的作用如表3所示。
表3 蒙古文控制字符對(duì)字符特征標(biāo)簽影響
可見,蒙古文字符的標(biāo)注結(jié)果由其在詞語中的位置和表3中的控制字符共同決定。在設(shè)計(jì)蒙古文變形模型的標(biāo)簽算法時(shí),采用啟發(fā)式的策略對(duì)蒙古文字符進(jìn)行標(biāo)注。根據(jù)上文分析,我們?cè)O(shè)計(jì)的蒙古文變形模型工作流程如圖2所示。由于除了init, medi, fina, isol這4個(gè)標(biāo)簽外其他標(biāo)簽都要對(duì)所有字符標(biāo)注,該模型中的標(biāo)簽算法只需要對(duì)條目化的蒙古文字符串做一次遍歷就能夠完成字符串的特征標(biāo)注。該模型的標(biāo)簽算法時(shí)間效率很高,算法的時(shí)間復(fù)雜度為O(n),n為蒙古文字符串長(zhǎng)度。
圖2 蒙古文變形模型工作流程
KDE和GNOME是Linux操作系統(tǒng)的兩大主流桌面環(huán)境,我們分別在這兩個(gè)桌面平臺(tái)下的文本布局引擎中測(cè)試蒙古文變形模型。
Qt庫是Linux KDE桌面系統(tǒng)的核心庫,Qt4是其現(xiàn)行版本。為了測(cè)試蒙古文變形模型的效果,我們?cè)赒t4的底層文本布局引擎Harfbuzz中加入一個(gè)對(duì)蒙古文進(jìn)行處理的模塊。該模塊中實(shí)現(xiàn)了HB_Mongolian_Shape函數(shù),這個(gè)函數(shù)是蒙古文變形模塊的接口,其職責(zé)是通過一個(gè)蒙古文字符串條目得到對(duì)應(yīng)的OpenType字庫中的字形索引。HB_Mongolian_Shape函數(shù)中調(diào)用了蒙古文變形模塊中核心的getMongolianProperties函數(shù),后者負(fù)責(zé)對(duì)蒙古文字符串進(jìn)行標(biāo)注。按照蒙古文變形模型中的規(guī)則,我們?cè)趃etMongolianProperties函數(shù)中實(shí)現(xiàn)了標(biāo)簽算法,從而得到蒙古文的變形結(jié)果。
圖3,4為Qt4.5.0中自帶的文本編輯器使用蒙古文變形模型前后的顯示對(duì)比。實(shí)驗(yàn)結(jié)果說明,我們的模型有效地作用于Qt4的底層文本布局引擎Harfbuzz。
圖3 使用蒙古文變形模型前,Qt4中測(cè)試文本顯示
圖4 使用蒙古文變形模型后,Qt4中測(cè)試文本顯示結(jié)果
Pango是Linux GNOME平臺(tái)提供的文本布局引擎,為GNOME平臺(tái)下的應(yīng)用程序提供底層文本布局顯示支持。Pango1.22.0復(fù)雜文本變形模塊中包含了對(duì)阿拉伯文、藏文等復(fù)雜文本的單獨(dú)處理,但并不包括蒙古文。我們?cè)赑ango1.22.0的module文件夾中加入單獨(dú)對(duì)蒙古文進(jìn)行處理的模塊。其中函數(shù)mongolian_engine_shape提供蒙古文變形模塊接口,并調(diào)用核心函數(shù)Mongolian_Assign_Properties。后者通過分析蒙古文字符串,獲得字符串對(duì)應(yīng)的標(biāo)簽,再遍歷字符串通過每個(gè)字符的標(biāo)簽依次應(yīng)用字形替換規(guī)則,得到對(duì)應(yīng)的OpenType字庫中對(duì)應(yīng)的字形索引,最終得到字形串。
我們?cè)贚inux GNOME平臺(tái)下使用pango-view測(cè)試Pango對(duì)蒙古文的顯示結(jié)果的支持,前后對(duì)比結(jié)果如圖5,6所示。實(shí)驗(yàn)結(jié)果表明,通過在Pango中加入蒙古文變形模型實(shí)現(xiàn)的蒙古文變形模塊有效地實(shí)現(xiàn)了蒙古文的正確選形。
圖5 使用蒙古文變形模型前,測(cè)試文本顯示結(jié)果
圖6 使用蒙古文變形模型后pango-view測(cè)試文本顯示結(jié)果
在Linux GNOME平臺(tái)上的很多應(yīng)用程序(如Firefox,Gedit等)的文本布局顯示都依賴于Pango。我們?cè)贔edera12下的Firefox-3.5.15中測(cè)試蒙古文網(wǎng)頁顯示情況,使用蒙古文變形模型前后的結(jié)果如圖7,8所示。實(shí)驗(yàn)結(jié)果表明,蒙古文變形顯現(xiàn)結(jié)果正確,進(jìn)一步驗(yàn)證了該模型能有效地實(shí)現(xiàn)蒙古文變形顯現(xiàn)。
圖7 應(yīng)用蒙古文變形模型前,GNOME平臺(tái)上Firefox對(duì)蒙古文測(cè)試頁面顯示結(jié)果
圖8 應(yīng)用蒙古文變形模型后,GNOME平臺(tái)上Firefox對(duì)蒙古文測(cè)試頁面顯示結(jié)果
本文以國(guó)家標(biāo)準(zhǔn)GB 25914-2010為依據(jù),結(jié)合OpenType技術(shù),提出了一種高效通用的蒙古文變形顯現(xiàn)模型。該模型建立在對(duì)多種復(fù)雜文本布局引擎實(shí)現(xiàn)共性分析的基礎(chǔ)上,對(duì)不同復(fù)雜文本布局引擎具有很好的通用性。在KDE平臺(tái)下的Qt庫和GNOME平臺(tái)下的Pango庫進(jìn)行的實(shí)驗(yàn)均證明,該模型能對(duì)蒙古文文本實(shí)現(xiàn)正確顯形。該模型的實(shí)現(xiàn),為研制符合新標(biāo)準(zhǔn)的以GNOME或者KDE為桌面環(huán)境的蒙古文操作系統(tǒng)奠定了基礎(chǔ)。目前GNOME平臺(tái)下Pango庫對(duì)蒙古文豎向顯示尚不支持,這也是我們下一步的工作。
[1] 烏達(dá)巴拉,鞏政.蒙古文OpenType字體制作技術(shù)[J].內(nèi)蒙古大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,37(5): 570-573.
[2] The Unicode Consortium. The Unicode Standard, Version 6.0.0, (Mountain View, CA: The Unicode Consortium,2011.ISBN 978-1-936213-01-6)[EB/OL]. http://www.unicode.org/versions/Unicode6.0.0/,2011:427-432.
[3] International Standard ISO/IEC10646-1 Second Edition.Information technology-Universal Multiple-Octet Coded Character Set(UCS)[S],2000.
[4] 董治江,吳健,鐘義信.基于OpenType的復(fù)雜文本語言處理的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2004(10):158-161.
[5] 周揚(yáng)榮,賈彥民.復(fù)雜文本布局引擎機(jī)制及應(yīng)用研究[J]. 中國(guó)科學(xué)院研究生院學(xué)報(bào),2006,23(3): 390-395.
[6] 董治江,吳健,鐘義信.在ICU中實(shí)現(xiàn)少數(shù)民族文字處理[J].中文信息學(xué)報(bào),2004,18(2):66-72.
[7] 周揚(yáng)榮,賈彥民,吳健.基于ICU的復(fù)雜文本布局引擎設(shè)計(jì)與跨平臺(tái)應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用研究,2007,2: 29-224.
[8] 姚延棟,吳健,孫玉芳,等.傳統(tǒng)蒙古文變形顯示機(jī)制研究與實(shí)現(xiàn)[J].中文信息學(xué)報(bào),2005,18(5):84-89.
[9] 田寄遠(yuǎn),趙小兵. Linux—GNOME平臺(tái)下基于OpenType的蒙古文自動(dòng)選形引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].內(nèi)蒙古大學(xué)學(xué)報(bào),2009,40(3):320-325.
[10] 斯·勞格勞,敖其爾.Windows環(huán)境下蒙古文復(fù)雜文本處理的研究[J].內(nèi)蒙古大學(xué)學(xué)報(bào),2007,38(5):582-585.
[11] 芮建武,吳健,孫玉芳.國(guó)際化標(biāo)準(zhǔn)框架下蒙文操作系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)研究與發(fā)展,2006,43(4):716-721.
[12] 確精扎布.蒙古文編碼[M].呼和浩特: 內(nèi)蒙古大學(xué)出版社.2000.