XIM 服务器和国际化客户程序

原文在:https://www.ibm.com/developerworks/cn/linux/i18n/xim/xim-1/index.html

有一个注释:此内容不再更新或维护。全文以PDF 文件的方式提供。由于技术的快速发展,一些内容,步骤和插图可能已经改变。

对XIM的支持是目前各中文Linux版本面临的一个主要问题,由于采用的汉化机制不一样,所以输 入的机制也各不相同。 这就为应用软件开发商带来了极大的不便。所以对双字节语言的国际化输 入标准的支持是中文 Linux发布版本面临的问题之一。通过该文章可以使读者了解XIM标准的重要 性和软件商在应用开发中应注意的问题。

XIM 输入服务器简介

XIM(X Input Method)是X窗口系统上为多字节语言定义的输入协议. 它主 要是针对中文、日文和韩文
建立的协议. 该协议采用了Client/Server的架 构联系输入服务器和应用软件. XIM服务器接收从客户程
序来的请求, 并从 输入方法(Input Method)码表中查找出需要的汉字, 在回送字符串到客户程序.
对于绝大多数输入方法, 需要几个西文字母或数字才能组成所需要的汉字 索引. 所以XIM服务器通常
需要一个预编辑区域和一个状态提示区域, 对于 中文, 通常需要一个候选字区域. 根据预编辑区域和状
态提示区域的不同, 把XIM输入服务器划分成四种输入风格(Input Style), 它们是,

  • Root 风格
    Root 风格的XIM服务器使用一个独立的窗口来显示预编辑区域. 所有 的显示和交互式操作均由
    输入服务器完成. 对于中文来说, 通常还把 状态提示(全角/半角状态, 中文/英文标点符号状态)显
    示在窗口上. 预编辑区域和候选字区域在一起.
  • Over-The-Spot 风格
    Over-The-Spot 风格又称光标跟随风格. 顾名思义就是输入条随着输入 位置的改变而移动. 它要求客户程序在光标(Windows下称脱字符)位置 改变后, 告诉输入服务器新的光标位置. 在中文输
    入中, 通常跟随条显示 预编辑区域, 候选字区域另外提供.
  • On-The-Spot 风格
    On-The-Spot 风格下, 预编辑区域由客户程序显示, 它也是比较理想的 输入风格. 该风格不能设定
    候选区域的位置, 所以对中文的许多需要候选 区域的输入方法来说, 该风格有一定缺陷.
  • Off-The-Spot 风格
    本风格把预编辑区域显示在离输入位置较远的地方, 一般是窗口的下方, 一般较少用到.
    输入服务器应该动态切换输入风格. 客户程序也必须挑选出最合适的输入风格.

现有的XIM服务器介绍

目前支持XIM的输入服务器有许多, 下面介绍几个比较常用的. 它们已经被 Linux 国际化组织列为XIM
标准的应用软件.

  • 日文: kinput2
    kinput2 是支持日文的XIM输入服务器, 它是使用最广泛的输入服务器. 它使用了X11R5的接口, 除
    了支持XIM外, 还有自定义的协议. kinput2 是输入的前端, 它可以和Wnn, Canna, ATOK等输入方
    法接合起来使用. 它支持上述的四种输入风格. 是开发XIM软件时检测XIM输入支持的事实 标准
    软件. 可参见站点 http://web.yl.is.s.u-tokyo.ac.jp/~nayuta/S/kinput2/index-ja.html 收录的有关介
    绍.
  • 简体中文: Chinput
    Chinput是同时支持GB和Big5两种编码的XIM输入服务器, 它采用IMdkit 工具支持. 除了支持
    XIM外, 还支持中文平台ZWinPro. 最新版本是一个 输入前端, 输入方法和Unicon采用相同的输
    入模块. 它支持上述四种 输入风格. 软件版权GPL, 下载站点是 http://go.163.com/~yumingjian/
    project-chinput.html.
  • 繁体中文: xcin
    xcin 是同时支持Big5和GB两种编码的XIM输入服务器, 它使用IMdkit工具. 目前的版本已经放弃了
    对中文平台的支持. 它自带输入方法, 支持Root 和 Over-The-Spot 两种输入风格. 软件版权GPL。
  • 韩文: 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/

支持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
  • 中文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 影响比较大.
  • 开发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)

猜你喜欢

转载自blog.csdn.net/qq_32768743/article/details/88866626