http://www-900.ibm.com/developerWorks/c ... ndex.shtml
XIM 伺服器和國際化客戶程式
於明儉
自由撰稿人
2000/11/01
對XIM的支持是目前各中文Linux版本面臨的一個主要問題,由於採用的漢化機制
不一樣,所以輸入的機制也各不相同。 這就為應用軟體發展商 帶來了極大的不
便。 所以對雙位元組語言的國際化輸入標準的支持是中文 Linux 發佈版本面臨
的問題之一。通過該文章可以使讀者瞭解XIM標準 的重要性和軟體商在應用開發
中應注意的問題。
1.XIM 輸入伺服器簡介
XIM(X Input Method)是X視窗系統上為多位元組語言定義的輸入協定. 它主要
是針對中文、日文和韓文建立的協定. 該協議採用了Client/Server的架 構聯
繫輸入伺服器和應用軟體. XIM伺服器接收從客戶程式來的請求, 並從 輸入方
法(Input Method)碼表中查找出需要的漢字, 在回送字串到客戶程式.
對於絕大多數輸入方法, 需要幾個西文字母或數位才能組成所需要的漢字索引.
所以XIM伺服器通常需要一個預編輯區域和一個狀態提示區域, 對於中文, 通
常需要一個候選字區域. 根據預編輯區域和狀態提示區域的不同, 把XIM輸入伺
服器劃分成四種輸入風格(Input Style), 它們是,
o Root 風格
Root 風格的XIM伺服器使用一個獨立的視窗來顯示預編輯區域. 所有的顯
示和互動式操作均由輸入伺服器完成. 對於中文來說, 通常還把 狀態提示
(全形/半形狀態, 中文/英文標點符號狀態)顯示在視窗上. 預編輯區域和
候選字區域在一起.
o Over-The-Spot 風格
Over-The-Spot 風格又稱游標跟隨風格. 顧名思義就是輸入條隨著輸入位
置的改變而移動. 它要求客戶程式在游標(Windows下稱脫字元)位置 改變
後, 告訴輸入伺服器新的游標位置. 在中文輸入中, 通常跟隨條顯示預編
輯區域, 候選字區域另外提供.
o On-The-Spot 風格
On-The-Spot 風格下, 預編輯區域由客戶程式顯示, 它也是比較理想的輸
入風格. 該風格不能設定候選區域的位置, 所以對中文的許多需要候選區
域的輸入方法來說, 該風格有一定缺陷.
o Off-The-Spot 風格
本風格把預編輯區域顯示在離輸入位置較遠的地方, 一般是視窗的下方,
一般較少用到.
輸入伺服器應該動態切換輸入風格. 客戶程式也必須挑選出最合適的輸入風格.
2.現有的XIM伺服器介紹
目前支援XIM的輸入伺服器有許多, 下面介紹幾個比較常用的. 它們已經被
Linux 國際化組織列為XIM標準的應用軟體.
o 日文: kinput2
kinput2 是支援日文的XIM輸入伺服器, 它是使用最廣泛的輸入伺服器.
它使用了X11R5的介面, 除了支援XIM外, 還有自定義的協定. kinput2 是
輸入的前端, 它可以和Wnn, Canna, ATOK等輸入方法接合起來使用. 它支
持上述的四種輸入風格. 是開發XIM軟體時檢測XIM輸入支援的事實標準軟
體. 可參見站點
http://web.yl.is.s.u-tokyo.ac.jp/~nayut ... ex-ja.html
收錄的有關介紹.
o 簡體中文: Chinput
Chinput是同時支援GB和Big5兩種編碼的XIM輸入伺服器, 它採用IMdkit
工具支援. 除了支援XIM外, 還支援中文平臺ZWinPro. 最新版本是一個
輸入前端, 輸入方法和Unicon採用相同的輸入模組. 它支持上述四種輸
入風格. 軟體版權GPL, 下載站點是
http://go.163.com/~yumingjian/project-chinput.html.
o 繁體中文: xcin
xcin 是同時支援Big5和GB兩種編碼的XIM輸入伺服器, 它使用IMdkit工具.
目前的版本已經放棄了對中文平臺的支持. 它自帶輸入方法, 支援Root 和
Over-The-Spot 兩種輸入風格. 軟體版權GPL, 下載站點是
http://xcin.linux.org.tw/.
o 韓文: ami 和 hanIM
ami 和 hanIM 都是支援韓文的XIM輸入伺服器, ami使用了IMdkit, hanIM
使用了X11R5的介面. ami 支援Root, OverTheSpot 和 OnTheSpot輸入風格,
hanIM支援四種輸入風格. ami 的版權是GPL, hanIM是商業軟體. 它們的下
載站點是
http://www.kr.freebsd.org/~hwang/ami
http://www.mizi.co.kr/
3.支援XIM的主要客戶軟體
客戶程式如果支援XIM, 有的採用直接與XIM輸入伺服器聯接, 有的直接使用支
援 XIM的高層圖形庫. 直接編寫介面比較複雜, 一般不益採用.
支援XIM的高層庫函數有許多, 最早的是Motif, 它也是對國際化支援最好的高
級圖形庫函數. 它支援XIM的四種輸入風格, 輸入區域直接支援XIM輸入, 最新
版本 中也有輸入方法的高級函數介面. 如果我們使一個Motif程式支援國際化
, 只需要在它的資源檔案中設定字體和輸入風格就可以了, 比如
*fontList: 8x16;-*-song-medium-r-normal--16-*:
*preeditType: OverTheSpot !OffTheSpot,Root,OnTheSpot
Java 便是用Motif開發的解釋性語言, 通過設置其資源檔案可以使它支持中文.
它支持Root和OnTheSpot兩種輸入風格.
現在比較流行的高級圖形庫 GTK+ 和 Qt 對國際化支持得都比較好. Qt 已經
使用Unicode作為處理內碼, 並且可以在Qt中同時使用多種編碼. 如果設定了
缺省的編碼, 再使用QObject翻譯函數, 可以直接支援中文. Qt目前的版本支
援中文GBK字元集和Big5字元集. Qt 的輸入區域直接支援XIM輸入, 最新版本
的 Qt 的每一個Widget都可以接受輸入.
Qt 程式目前支援Root, OverTheSpot 和 OffTheSpot輸入風格, 啟動時可以
指定輸入風格,
./qtapp -inputstyle offthespot #overthespot, root
GTK+ 的新版本也將支援Unicode. 目前的版本只需要設置其資源檔案正確便可
以使用中文. GTK+ 支援Root和OverTheSpot輸入風格, 在命令行可以指定啟動
時的輸入風格,
./gtkapp --xim-preedit=position --xim-status=nothing(overspot)
./gtkapp --xim-preedit=nothing --xim-status=nothing(root)
架構於Qt之上的 KDE系列軟體和架構於GTK+之上的 GNOME系列軟體都支援國際
化標準. 此外, 有許多綁定Qt和GTK的語言所寫的程式也支援國際化標準.
有一些被廣泛使用的軟體的國際化做得很出色, 比如Netscape/Mozilla 和
XEmacs 都支援多語言,多編碼, Netscape還可以動態切換工作區域的內碼.
下面是一些主要軟體庫和軟體對 XIM 的輸入風格的支援情況,
軟體/庫 輸入風格
gtk+ Root,OverTheSpot
Qt Root,OverTheSpot,OffTheSpot
Java Root,OnTheSpot
OSF/Motif Root,OverTheSpot,OnTheSpot,OffTheSpot
LessTif(已國際化的) Root,OverTheSpot
rxvt Root,OffTheSpot,OverTheSpot
Netscape Root,OffTheSpot,OverTheSpot
Mozilla(M17) Root,OverTheSpot,OnTheSpot
o 中文Linux發行版本對國際化的支援情況
最早的中文Linux發佈版本都使用了中文平臺來支援中文的顯示和輸入.
中文平臺 是Linux中文化最簡單直接的方法, 一般採用修改Xlib庫或者是
截取X協議的方法. 使用中文平臺的最明顯的缺點是漢字處理中的"半漢字"
問題. 也無法利用XIM 協議帶來的好處.
最近, 除了少數中文Linux發佈版本外, 都逐漸採用國際化標準作為發佈
版的基礎. 在國際化方面比較傑出的有TurboLinux 6.0, RedFlag Linux
2.0, CosixLinux 2.0 和 XTeamLinux 3.2. 在臺灣, 有著名的CLE套件和
一些基於 CLE的中文Linux, 比如XLinux, CLE在國際化方面做得較早, 並
且對大陸中文 Linux 影響比較大.
o 開發X Window下的商業軟體注意的問題
對於應用軟體發展商來說, 開發的軟體要面對眾多的Linux發行版本, 所
以必須考慮Linux版本對國際化的支援情況和軟體本身的特點.
對於開發基於Java的Web軟體, 要考慮到流覽器和JVM對國際化的支持程度
, 和它們在國際化方面的配置狀況.
對於開發圖形用戶介面的軟體, 選擇圖形庫是比較重要的. 目前Motif對
國際化的支援比較好, 並且性能比較優越, 是開發大型軟體的首選圖形庫.
Qt是面向 物件的圖形庫, 開發國際化的軟體, 尤其是同時支援多語言的軟
體, 是最好的 選擇. GTK+/GNOME 在國際化方面支持也比較好. 另外一些
腳本語言, 比如Perl 和 Python 對國際化支援也很好.
參考資料
參考文獻和 URL
以下列出一些參考資料和鏈結:
Developing Internationalized Software with X, Motif, and CDE,
作者:Thomas C. McFarland
X11R6 XIM (Open Group)
Writing Software for the International Market (Digital)
關於作者
於明儉。個人主頁http://go.163.com/~yumingjian