XA 的意义是Xcin Anywhare, 即使用xcin在任何地方都可以输入中文. 它是
最早公开外挂中文平台源代码的软件.这种外挂展示了相当大的优势,以后的
外挂中文平台均采用了相同的机制, 即使用LD_PRELOAD在X Client端修改系统
函数. 目前的外挂式中文平台在功能上有了更进一步的发展, 其中TL-ZWinPro
中的屏幕取词便是极好的例子, 以后它很可能在手写识别/语音识别/语音控制
方面发挥巨大的潜力.
XCIN ANYWHERE (XA)是用来解决这个问题的"小程序",
这只是一种实用的办法而已,或者说"权宜之计"!
可以在许多X的软体下用xcin"输入"中文.
已经试过(linux)可用的软体有 netscape(browser,mail, news) , rxvt , xterm
color_xterm, cxterm ,xedit , xjed xpostit
xclipboard, xxgdb , xman
也许可以用在 netscape gold上来编辑网页,不过我没有试过
有问题的软体: textedit , cmdshell 等的openwin(xview) 程式
目前的版本只在 linux和freebsd测试过
+CV pre 0 (注意,有关字形设定的部份,在 +CVpre0p2 之後已经和之前的版本不同)
附加的中文显示程式, 让一般的英文软体在不支援中文的X server之下
,也能拥有中文显示的能力,加上XA 和配合xcin ,就成了一个还算完整
但并不稳定的中文环境(+CV的version 是pre 0 , XA是0.3b)
和cxwin相同的是,同样负责中文显示,而且都还是非常alpha的软体
(+CV 比较之下,更不稳,更不完全)和Cxwin不同的是, +CV 不需要修改server,所以,
你可以在xtermial上跑.
+CV相较於CXwin 优点在於 虽然尚未达到目标,但在许多情形下,显示品质较佳
,而且,不需要改变Xserver,在有些情形下是唯一的选择
相较之下的缺点有,显示速度较慢,目前系统品质比CXwin还要不稳定,有些
静态联结的程式,将无法使用+CV( 和XA),每个应用程式要读取设定一次字形,
较不经济
+CV 用法和 XA 相同, 原理也差不多,目前的中文显示和CXwin一样,有时会出现乱掉的现象
由於现在+CV还只是pre 0的版本,所以,并不建议做一般正常的用途,当然
除非你真的有使用上的必要,否则,这个板次只适合对XA+CV的研发有兴趣的朋友
,对於一般用使用者,目前建议使用 CXwin+XA的搭配较佳,因为XA 和+CV的搭配还
不见得稳定,如果你有一件重要而严肃的工作要做,使用XA+CV请自行成担风险.
XCIN-2.5 是 XCIN 改写计画 (Redesigning XCIN Project) 的成果。其目的
是希望藉由重新设计,将较好的演算法与严紧且模组化的程式架构实作在 xcin
系统中,并引进、实验新的设计概念与中文处理技术,同时也希望藉此修正
xcin-2.3.X 长久以来不易修正的 Bug 。目前 xcin-2.5 已进入 alpha 测试
阶段,其特色有:
过去 xcin-2.3.X 有相当复杂的命令列选项,而且这些选项一经设定後,则
影响了所有的输入法,这对很多人来说造成不少的困扰。 xcin-2.5 对此做
了改变,它将大部分的命令列选项移到了 rcfile 中,且所有关於输入法的
微调设定,是每个输入法彼此独立的。因此使用者可以自己的喜好为每个输
入法分别做不同的设定,比起 xcin-2.3.X 更有弹性。
此 rcfile 读取系统是参照 gemate 兄的建议,由一个独立的模组去直接读
rcfile, 同时也采用了 yhsiao 兄的建议,使用 siod lib 去做 rcfile 的
语法分析。故 rcfile 所采用的是 lisp/Scheme 的语法,设定上较为严紧但
灵活。
rcfile 读取系统同时也做为 xcin 各模组的共同设定档,它将读到的资料保
存在它自己的资料结构中,程式其他部分如需要 rcfile 的设定时则透过一
个标准的介面函式来读取资料。
这是直接采用 yhsiao 兄与 platin 兄的建议 :-) 目前 xcin 已放弃原本的
xcin-crxvt 协定,而采用标准的 XIM 协定,可能未来也是如此。这意味著
我们无法在原有的 crxvt 中直接使用本 xcin 输入中文字。这麽做的目的是
希望做到 X window 下的中文输入能够「标准化」,也就是遵循 X11R6 的标
准。未来的 X window 应用软体应该渐渐会朝向 XIM 的标准,这样才可以真
正做到 xcin anywhere。
目前最新版的 rxvt-2.6 已支援 locale 与 XIM, 且能正确地接受来自 xcin-2.5
的中文输入。故 xcin-2.5/rxvt-2.6 的组合未来将可以取代传统的 xcin-2.3/
crxvt。
目前已完成大部分的 XIMPreeditNothing|XIMStatusNothing 的程式码,并尽
量使其使用习惯符合传统 xcin 或倚天中文系统。在此要感谢 yhsiao 兄所提
供的 xim 程式 (见 pre_xcin.README), 这部分的程式码大部分是从该程式移
植过来的,并采用了 IMdkit lib (已包含在 xcin source 中) 来做 XIM 协
定的低阶处理,简化了程式写作。
目前 xcin 所有的讯息输出已全部采用 GNU gettext (debug 讯息除外),只
要我们为 zh_TW.Big5 locale 将所有讯息翻译好,设好 locale, 我们就会
有一个「中文讯息」的 xcin 了。
所有的 xcin 讯息都是由 perr() 函式输出,而程式发展中期的 debug 讯息则
是由 DebugLog micro 输出。
目前因为尚在程式发展的中期,且我也对翻译的工作不太在行,因此目前 xcin
还没有翻译好的或预设的 .po 档。若对翻译工作有兴趣的朋友,可以在拿到原
始码後,直接进行翻译的工作,并将成果寄给我,我会很乐意将它加入 xcin
套件中 :-))
输入法模组直接承袭自 clkao 兄的设计,但已为 XIM 做了相当的改变。现在
输入法模组已与主程式完全抽离,如同 foxman 兄的 All For Chinese 一样,
变成独立的 .so 档在需要时才动态载入 (使用 dlopen())。
除此之外,我已尽量做到系统内部模组运作与 programmer 所加入的模组分开,
programmer 在为 xcin 加入新输入法模组时,他不需要知道模组在 xcin 内实
际的「长相」以及运作方式, 他只要将 module.h □的 module_t structer 中
每个栏位填好,并写好相关的函式即可。
同时,各输入法模组中,关於目前的输入状态的相关资料结构也已抽离,放入
IC 的资料结构中,这样的用意是为了每个 IC 的输入状态能各自独立。
输入法分系统公用与一般输入法两种: 系统公用输入法是与 xcin 主程式 link
在一起,而一般输入法则采用可动态载入的模组 (见第 4 点的说明)。
cin (即输入法表格档) 其实是与 locale 与 encoding 相关的,故 xcin-2.5
将 cin 档依不同的 locale 分别存放。若使用者希望在 zh_TW.Big5 或 GB
的环境下使用某输入法,则他只需分别为这两种 locale 准备好一个 cin 档
即可。