一种操作系统在中国的推广很大程度上取决于运行于它上面的软件对中文的处理能力。Linux诞生于国外,其历史不到十年,但由于它作为最流行的免费UNIX操作系统的独特魅力,很多其它UNIX系统上的中文软件已经被移植到Linux上,一些专门为Linux设计的中文软件也纷纷出现,Linux上的中文环境正在一步步完善。
一个中文环境一般应该具有中文的显示输入和打印功能,在目前的Internet环境下还应该包括英汉字典和内码转换工具等等。下面将分别介绍Linux平台上的各种中文软件。
字符中文环境
字符环境下的中文终端对于内存小的用户和系统管理员来说是一个非常有用的工具,目前中文Console分为直接操作硬件和调用svgalib两种方式,输入法大多使用CXterm的tit格式和Xcin的cin格式。
●chdrv是运行在VGA/SVGA控制台上的中文终端模拟程序。chdrv由台湾的王佑中(wycc@iis.sinica.edu.tw)维护,目前最新的版本是chdrv-1.0.10,可从ftp://linux.cis.nctu.edu.tw/packages/chinese/chdrv/下载,chdrv的特点是必须用root启动,支持多个虚拟终端。
●yact 与 chdrv 最大不同的地方是: yact 是通过 svgalib 来显示,如果你的 svgalib 没有包含你所使用的显示卡数据,可能无法使用这个系统。yact的特点是支持1024×768分辨率和24点阵的字库。
下载地址为ftp://linux.cis.nctu.edu.tw/packages/chinese/yact/yactp4.tar.gz
●bcs16 :由于 yact 需要使用 svgalib 1024×768 模式,显示卡支持并不十分良好, bcs16 就是针对此缺点而由 yact 修改而来的。它仅需 640×480 分辨率,因而能在大部分的显示卡上执行。
下载地址为ftp://linux.cis.nctu.edu.tw/packages/chinese/bcs/bcs007a.tgz
●WZCE 是为众中文系统,是shareware,支持多种输入法,可以在ftp://ftp.ihep.ac.cn/pub/chinese/system/wzce-linux-elf-2.22n.tgz下载。
●CCE 是从bcs16改编而来,支持GB内码,由清华大学的何悦开发。可以在ftp://ftp.turbolinux.com.cn/pub/chinese/system/下载。
●A4TTY 可以同时支持Big5和GBK内码,可以在ftp://linux.okstation.com/下载。
●KONGB 由笔者从日文版KON移植而来,可以在Linux和FreeBSD上运行。在 ftp://ftp.turbolinux.com.cn/pub/chinese/system下载。
X Window 下的中文软件
X Window下的中文软件可以分为单独的应用软件和中文平台两种方式。最早出现的中文软件就是CXterm。这是一个经过修改的XTerm,可以直接在Term中输入和显示中文,支持Big5、GB、HZ等内码,下载地址为ftp://ftp.ifcss.org/pub/software/x-win/cxterm/。其次是台湾的Xcin+Rxvt,是在台湾地区使用比较广泛的一种输入解决方案,其特点是加上XA之后可以在不同的X Window应用程序中输入中文。GB版本下载地址为ftp://ftp.ihep.ac.cn/pub/chinese/system/xcingb-2.2.tar.gz。
目前在X Window下的中文平台的实现方法有两种,一种是利用包装原理(Wrapper):“包装”(WRAP)方案利用了很多UNIX系统运行动态连接的程序时的PRELOAD机制,对X Window系统函数动态库中的某些函数进行了“包装”和替换,使之实现支持中文显示,并可与中文输入服务器连接实现中文输入。
利用动态连接的PRELOAD机制,我们可以对X Window系统的某些函数进行“包装”,以使原来只是用来处理ASCII码的函数可以根据输入情况有区别地处理ASCII码和中文的编码,并把“包装”后的函数做成共享库,利用设置LD—PRELOAD变量使一个应用程序调用“包装”后的X函数,而不是直接调用X函数库中的函数,从而实现不用更改应用程序的源代码而使它们支持中文处理!
一般来说需要修改的是XDrawString等显示字符串的X11函数。目前实现包装机制的中文平台有XA、Zhwin、ZWinPro等,分别可以在下列地址下载:
ftp://ftp.ihep.ac.cn/pub/chinese/system/xa-1.0.4.tgz
ftp://freesoft.cei.gov.cn/
ftp://ftp.turbolinux.com.cn/pub/
其中XA是最早出现的包装程序,相对比较简陋;Zhwin是由宫敏先生开发,基于Chinput的;ZWinPro为于明俭和陈向阳先生开发,比较完善,能够支持多内码和屏幕抓词,并且支持True Type Fonts。
另外一种实现方式是直接修改X Server,首先实现的是Big5版本,可以在ftp://linux.cis.nctu.edu.tw/packages/X/Xserver/CXwin/下载,GB版本可以在ftp://freesoft.cei.gov.cn/下载。
目前已经有可以支持True Type Fonts的X Server,可以通过freetype这套程序库实现X下的中文字的无级缩放功能。
支持GBK,可以在ftp://ftp.turbolinux.com.cn下载。至于其他的中文软件如: chpower、hztty、cdict、xdict、xemacs+mule、hc、lyx、ezwgl、chinput,此处不再一一详细叙述。
Linux下的中文打印问题
目前Linux上的打印系统通常是用nenscript(或mpage)把非PostScript文件转换成PostScript文件(对PostScript文件则作改变),由Ghostscript对PostScript文件进行转换后输送到打印机上。所以中文打印的关键在于如何生成Ghostscript可以读的中文PostScript文件。但由于没有中文PostScript字库体系,现有的可形成PostScript文件的中文软件(如chpower和中文LaTeX(CJK))大都是把用到的汉字字型以位图或轮廓形式全部存储在PostScript文件中,而不是像西文那样,使用外部的PostScript字库体系。这就导致PostScript文件体积太大,且打印效果欠佳。所以,必须尽快确立中文PostScript字库体系,构造中文PostScript字库,使中文PostScript文件的结构尽可能地接近西文PostScript文件,以保证尽可能地与现有的软件兼容。
陈向阳先生分析了目前各种中文软件对中文字库的处理方法并参考了日文文字处理软件,总结出一套中文(GB)PostScript字库,初步建立了构造和使用中文(GB)PostScript字库的基本原则。中文(GB)PostScript字库目前包含四种字体,即宋体、黑体、楷体、仿宋体。对每种字体,有94个中文Type1 PostScript字库文件,以PFB(Printer Font Binary)的格式存储,它们分别对应于GB 2312-80编码的94个区(0xA1-0xFE):
字库名 字库文件
gb-songa1~gb-songfe gbsonga1.pfb~gbsongfe.pfb
gb-heia1~gb-heife gbheia1.pfb~gbheife.pfb
gb-kaia1~gb-kaife gbkaia1.pfb~gbkaife.pfb
gb-fangsonga1~gb-fangsongfe gbfsa1.pfb~gbfsfe.pfb
这些*.pfb文件是从中文(GB)TrueType字库(TTF)文件产生,作者对LaTeX的中日韩文扩展——CJK软件包中的ntu2cjk程序进行了修改,使之能从中文(GB)TrueType字库(TTF)文件产生中文(GB)PostScript字库文件。目前已有一些中文软件开始使用中文TrueType字库,TrueType字库在中文打印方面比点阵字库所具有的优势是不言而喻的。所以,以后UNIX上中文打印的发展方向是利用TrueType字库更方便地产生高质量的中文输出。
在上述Type1中文PostScript字库的基础上,定义了四种Type0(复合型)中文(GB)基本字库:
GB-Song(字库文件GB-Song.ps);
GB-Hei(字库文件GB-Hei.ps);
GB-Kai(字库文件GB-Kai.ps);
GB-FangSong(字库文件GB-FangSong.ps )。
中文(GB)PostScript字库软件包当前版本为psfonts-gb-1.0.tar.gz,存放地址为ftp://ftp.ihep.ac.cn/pub/chinese/packages/。
目前的中文Distrubution现状
可以说,上面介绍的中文软件,大体上已经解决了Linux平台上中文的显示输入和打印的问题,所以目前所欠缺的只是一个比较好的集成中文环境。下面简单介绍一下:
目前的中文发行版本主要有下面几种:
Chinese Linux Extention ( Big5 ),下载:
TurboLinux Chinese Version (GB),下载:
Xteam Linux (GB),下载:
基本上这几个版本都是基于上面的这些GPL的中文软件开发的。对于中文用户来说,不久就会像其他语种的用户一样,拥有本地化的Linux发行版本了。
--------------------next---------------------