Unix的中文化对于Unix的推广使用一向是个难题,对于象FreeBSD这 样的操作系统来讲,中文化工作比较零乱,虽然有不少X下的中文软件,但是 由于国内软件发展的水平还不高,自由软件的开发水平更是如此,并且自由 软件的开发者之间也没有被有效的组织起来,因此还没有出现一个很完整的 中文系统。
然而中文相关的软件却相当丰富,在Ports Collection中,有一个类 别就是chinese,专门收集中文相关的处理软件,但其中绝大多数是台湾的BIG5 版本。因为台湾在FreeBSD领域的发展相当快,很多软件都是先由台湾出现相 应BIG5版本之后,再出现GB版本。
bash-2.02$ ls /usr/ports/chinese CJK big5fonts gbfonts nvi-big5 ted CVS c2t gbscript nvi-euc-cn tin Makefile celvis hc nvi-euc-tw xcin README.html cless hztty pine3 Wnn cnsfonts kcfonts pine4 bg5ps cxterm lunar pkg big5con gb2ps mule-wnn4 rxvt |
在X Window下使用中文的基本条件之一就是需要安装合适的中文字库。 当前的XFree86发行版本中带有一些基本中文字库,在系统安装选择X组件的设 置时需要将其包括在内,然而中文存在不同的编码方式,使用不同编码的应用程 序就使用不同的字体文件,XFree86中提供的中文字体对于另外一些中文程序还 是不够的。
Packages Collection中的chinese类别中也提供了其他的一些BIG5和GB 编码的字体,如gbfonts、kcfonts、big5fongs等软件包,需要使用pkg_add命令 将其安装入系统。在真正执行中文X应用程序时,可以使用xlsfont命令可以查 看系统中是否有相应字库,如:
$ xlsfonts *gb* -cc-song-medium-r-normal-jiantizi-0-0-75-75-c-0-gb2312.1980-0 -cc-song-medium-r-normal-jiantizi-40-400-75-75-c-400-gb2312.1980-0 -cc-song-medium-r-normal-jiantizi-48-480-75-75-c-480-gb2312.1980-0 -isas-fangsong ti-medium-r-normal--0-0-72-72-c-0-gb2312.1980-0 -isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0 -isas-song ti-medium-r-normal--0-0-72-72-c-0-gb2312.1980-0 -isas-song ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0 -isas-song ti-medium-r-normal--24-240-72-72-c-240-gb2312.1980-0 hanzigb16fs hanzigb16st hanzigb24st |
当一个字体不存在但同时存在同样编码的其他字体的时候,可以通过在 fonts.alias中定义别名的方法来帮助解决这个问题。
除了Packages Collection提供的字体之外,从网络上也可以得到其他的 一些中文字体。在ftp://ftp.ifcss.org站点中收集了很多自由或共享中文字体 和中文软件。
cxterm是一个使用非常广泛的中文X终端程序,已经被移植到很多种类 的Unix系统中。它已经被FreeBSD的爱好者做成Packages,因此安装起来非常简 单。cxterm支持GB、BIG5以及日、韩文等编码和多种输入法。
直接启动cxterm只能用于浏览中文而不能进行输入,这是由于cxterm需 要X系统的一些资源设置,以使用快捷键切换不同输入法,并根据设置寻找其输 入法对应的数据文件。要输入中文必须进行设置,将资源文件预先载入,指定热 键、输入法和输入字典所在的目录。cxterm软件包中提供了一个缺省的资源文件 CXterm.ad,一些使用者将这个文件中的相应资源定义放入~/.Xdefault中,用户 登录进入X Window时就载入这些资源。另外,cxterm还提供了一个shell脚本 ── CXterm,可以在启动cxterm之前完成相应的资源设置工作,所以一般应该 用如下CXterm命令来启动cxterm,这种启动方式更为简易。
$ CXterm &
在中文的仿真终端下使用bash作为shell时,会发现在命令行中无法输入 中文,这是因为bash对输入进行了额外处理,可以在~/.bashrc中设置bash让其 通过中文(另一个可能的因素为stty的终端设置):
stty pass8 bind @#set convert-meta off@# bind @#set meta-flag on@# bind @#set output-meta on@# |
在FreeBSD下的预编译的cxterm软件包中,cxterm的输入法及输入字典放 在了/usr/X11R6/lib/X11/cxterm.dic目录中。由于cxterm的影响,它的输入法被 相当多的X Window下的中文软件所使用。
标准的CXterm是黑白的,但也存在一个补丁,使CXterm能显示彩色。然 而,Packages Collecion中预编译好的CXterm为标准程序,要使用彩色CXterm就 需要自己下载补丁并重新编译CXterm。
crxvt是另一个中文X仿真终端软件,与cxterm相比,它更小巧,占用更少 的内存,并能以ANSI标准显示彩色。Xcin是一个独立的输入服务器,它独立于具体 的X程序之外来提供中文输入功能,X应用程序可以使用其接口支持中文输入。crxvt 就使用Xcin作输入系统。与cxterm的将输入与仿真终端集成在一起的方式不同, Xcin在crxvt外打开一个单独的窗口,但在crxvt中可以使用Ctrl-Space进行Xcin 下的中英文输入切换。可以看出Xcin的设计目的是作为一个通用输入模块来实现 的,以便多个应用软件都能使用同一个输入模块来进行中文输入,而不是象cxterm 一样,每个程序使用自己的输入模块。
FreeBSD的Packages Collection中,也包括了Xcin与crxvt,但遗憾的是,他 们是台湾big5版本。当然这也容易理解,这个软件本来就是由台湾人开发的。其中 crxvt可以通过使用hztty使其能显示gb数据,但使用者显然不会使用台湾的输入法输 入中文。幸好这个软件已经被移植到GB环境下,并也有编译好的软件包形式(未被正 式FreeBSD发行版本收录),这样就可以使用pkg_add等工具进行管理,而不再需要手 工编译。
执行时,需要启动xcin和cxrvt,注意要使用Xcin而不是xcin启动Xcin,主要 是Xcin能使用正确的输入法参数启动真正的xcin程序,直接启动xcin由于没有指定输 入模块的设置,就会导致程序启动失败。
$ Xcin & $ cxrvt & |
除了cxterm、cxrvt之外,Ports Collection还包括其他一些软件,如hztty 用于终端上hz、big5、gb等不同编码的动态转换,big5con用于在控制台上显示中文 big5码(在hztty的帮助下可以显示gb码),cvi用于替换vi进行中文编辑工作,cless 用于替换more显示中文,gb2ps用于中文文本文件的打印处理等。
$ LANG=zh_CN.EUC; export LOCALE $ LC_ALL=zh_CN.EUC; export LC_ALL |
对于支持多语言的软件,使用环境变量LANG和LC_ALL来标识不同的语言、及 不同的环境。缺省情形下使用的语言LANG被设置为C,如果要支持中文,应该设置为 zh_EUC.GB,同样LC_ALL用于设置不同语言使用的信息格式的不同,如日期、时间的 表示方式等。虽然当前不是每个应用程序都支持这些环境变量,但随着FreeBSD系统 的升级,应用程序国际化程度的提高,以后的软件越来越多会对各种语言提供更完善 的支持。
另外,FreeBSD下的一些传统工具程序不支持国际化的语言,应该使用较新的 GNU工具代替。例如标准的ls命令不能显示中文文件名,可以安装gnuls软件包,使用 gnuls -N命令来代替缺省的ls命令,可以通过shell中的alias设置,使得用户感觉不 同执行命令的差异。
未完,待续。。。