摘要:汉字输入上, GB 与 Big5 的输入由于历史与习惯的原因, 已截然分化成两种, 这就是在大陆最流行的Chinput 和 在台湾最流行的 XCIN, 它们都经历了自定义协议阶段, 目的是配合外挂式中文平台, 最终向国际化标准协议靠拢, 即支持XIM协议(日语输入软件kinput2也经历了漫长的过程). 在中文平台TL-ZWinPro下使用Chinput, 它的XIM协议和原来的协议能够无缝接合使用.
前言:
为了写这篇文章,我参考了internet上大量的文章,结合自己多年的使用实践经验才写出来,目的是让大家不用满世界找资料,参考本文就有一个大致了解,并能选择地进行汉化。
由于参考文章太多,大多又经过多此转载,所以没有列出文章来源,我只能多谢各位前辈的工作,本文也是GPL,欢迎使用,转载,只希望标明出处。
Linux的中文输入概述:
汉字输入上, GB 与 Big5 的输入由于历史与习惯的原因, 已截然分化成两种, 这就是在大陆最流行的Chinput 和 在台湾最流行的 XCIN, 它们都经历了自定义协议阶段, 目的是配合外挂式中文平台, 最终向国际化标准协议靠拢, 即支持XIM协议(日语输入软件kinput2也经历了漫长的过程). 在中文平台TL-ZWinPro下使用Chinput, 它的XIM协议和原来的协议能够无缝接合使用.
目前Chinput已成为大陆最流行的Linux中文输入软件. 它被众多的Linux中文平台所采用:
TurboLinux 中文版6.0,Xteam Linux 3.2,BluePoint Linux 2.0
ZhXWin: 由宫敏博士开发的Linux下的中文平台
Chinput 以CXterm的输入引擎为基础, 支持中文GB/GBK/Big5, 日文和韩文输入. 后又增添了李振春先生的智能拼音输入, 使输入法日臻完备. 它具有独特的无边界窗口, 浏览输入模式, 单双行输入模式, 颜色字体可配置性. 如果配合中文平台 TL-ZWinPro, 它可以根据窗口当前的编码自动输入GB/GBK/Big5.极大地方便了中文用户的网上冲浪, 如浏览网页时的输入,上BBS时输入, 都有可能需要同时输入GB和Big5编码, 这时您不必要重新启动Chinput, 便可以输入这两种不同的编码.
XIM 协议
Chinput 对X11R6的国际化输入提供了标准接口, 即XIM接口. Chinput 所使用的Locale是zh_CN, 定义的输入服务器名称是"Chinput", 所以 在客户程序找不到 Chinput 时, 应设置XMODIFIERS为"@im=Chinput".
XIM 的输入风格(preedittype)共有四种: on the spot, over the spot, off the spot, root window, "on the spot" 是在Client软件的当前 输入处输入, "over the spot" 是在当前输入处之上有一预编辑窗口提供 输入, "off the spot" 是在输入窗口的下方提供预编辑取和输入状态显示 区, "root window" 是在独立于输入软件的窗口中(该窗口为根窗口的子 窗口)输入. 可以看出, "root window" 是比较适合汉字输入的. Chinput 目前只支持根窗口输入风格(root-window style). 如果有必要, 其它的输入风格也将被陆续加入.
XIM 支持与原协议无缝结合, 对用户来说是不透明的. 当用户在中文平台上使用XIM支持的软件时,原协议对该应用软件自动失效. 这要求中文平台需要作特殊处理, 才能避免两种协议的冲突.
支持软件(运行前设置LC_ALL=zh_CN.EUC, LANG=zh_CN.EUC)
nxterm, 修改源码. 中文显示需中文平台支持
xemacs, 编译:configure --with-xim=xlib
rxvt2.60, 编译:configure --enable-xim --enable-gb, 运行: rxvt -im Chinput -pt Root
netscape: 需改动Netscape.ad, 部份输入区有问题:
Netscape*fontList: -*-helvetica-bold-r-*-*-*-140-*-*-*-*-iso8859-*;-*-gb13000.1993-1:
vim 资源文件 .gvimrc(.vimrc):
:set fileencoding=prc
:set guifontset=-sony-fixed-medium-r-normal--16-120-100-100-c-80-iso8859-1,
-tlc-song-medium-r-normal-*-16-*-*-*-*-*-gb13000.1993-1
qt-1.44(i18n patched)/KDE: setenv XMODIFIERS @im=Chinput
gtk/gnome: 设置 fontset
gimp: 须修改资源文件
Motif: 设置 fontset
一、Linux下的中文终端
Linux 下现在用户可以有许多中文终端可用, 比如 CXterm, rxvt, kvt, 即使是普通的 xterm, 在中文平台下也可以成为中文终端. 在这些中文终端之中, 最好用的当属 CXterm.CXterm 自带中文输入方法, 当然在中文平台下也可以使用中文平台所带的输入方法. 比如在TurboLinux下使用Chinput中的智能拼音是最好的选择. 此外, 除了支持GB外, CXterm还可以支持中文Big5 编码, 日语EUC编码和韩语EUC编码(尽管实际上使用它作日韩语终端 的人比较少).
CXterm 是上BBS的最佳选择之一, 它也可以用来和 jvim一起编辑汉字文件.
rxvt 也是支持中/日/韩双字节编码的终端, 它与CXterm不同的是, rxvt本身不带输入部分, 但它支持XIM输入或在中文平台上使用.
cce也非常好用,不象union还需要重新编译内核.大家可从网上下载cxterm或cce的rpm包安装即可.
unicon 3.0.2当然有它的好处,如支持中文目录,文件名显示.
二、安装中文字库
方案一:安装中文TrueType字体
XFree86 4.x可以比较好的支持TrueType字体。TrueType字体可以无级缩放,显示效果非点阵字体可比。为了达到Microsoft Windows那样的漂亮字体效果,我们可以安装中文TrueType字体。最简单的方法就是直接使用Windows下的中文字体。
注意:Windows的TTF字体是Microsoft公司的商业软件,这里使用它主要是用于学习和教育目的,不可非法使用。
mkdir /usr/share/fonts/default/TrueType
cp /mnt/c/windows/fonts/simsun.ttf /usr/share/fonts/default/TrueType
cd /usr/share/fonts/default/TrueType
ttmkfdir > fonts.dir
因为ttmkfdir对Windows字体的编码识别有问题,因此需要手动修改一下。编辑fonts.dir文件,将
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-ascii-0
修改为
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
然后设置可缩放字体
cp fonts.dir fonts.scale
设置编码文件
cp /usr/X11R6/lib/X11/fonts/encodings/encodings.dir .
因为我们修改了字体名称,所以不能再用xfs了,必须指定字体路径。
编辑/etc/X11/XF86Config-4文件,将默认的xfs部分注释起来,再加上所需要的字体路径,如下所示:(#表示注释行,以下同)
Section "Files"
# FontPath "unix/:7100"
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/misc"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
FontPath "/usr/share/fonts/default/Type1"
FontPath "/usr/share/fonts/default/TrueType" (关键)
EndSection
还有在该文件的Modules部分,请加上xtt模块,同时必须取消freetype模块,两模块不可同时使用。
例如:
Section "Module"
Load "GLcore"
Load "dbe"
# Load "dri"
Load "extmod"
Load "glx"
Load "pex5"
Load "record"
Load "xie"
Load "v4l"
# Load "freetype"
Load "xtt" (关键)
Load "type1"
Load "speedo"
EndSection
运行/etc/rc.d/init.d/xfs stop
再运行/usr/sbin/setup,取消xfs在启动时的加载。
方案二:
我喜欢简单,所以直接用bluepoint linux 2.0的一些rpm包
rpm -Uhvbluepoint-release-2.0-1BP.noarch.rpm
rpm -UhvXFree86-zhfont-3.3.5-1.i386.rpm
需要这些软件的人可到http://www.linuxaid.com.cn/engineer/hubertzou/下载。
关闭xfs,修改/etc/X11/XF86Config-4:
Section "Files"
# FontPath "unix/:7100"
FontPath"/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath"/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath"/usr/share/zhfont/X11/"
FontPath"/usr/X11R6/lib/X11/fonts/chinese/"
FontPath"/usr/X11R6/lib/X11/fonts/misc/"
FontPath"/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection
相关问题:
有网友说在XFree864.0.2下可以不关闭XFS因为某此程序如 realplayer只认默认的 fixed 字体.关掉XFS会出错说找不到字体.
我也试过了,其实在XFree 86 4.0.1里面也可以不用关。只要在/etc/X11/XF86Config-4里面加上TrueType字体的路径就可以了。这样写:
Section "Files"
FontPath "unix/:7100"
FontPath "/usr/share/fonts/default/TrueType"
FontPath "/usr