纵横码如何挂接在WINDOWS 95下
江苏淮阴市职业技术教育中心 葛 川
纵横汉字编码法是一种具有直观性和科学性的汉字编码法,它又是按照字形对汉字进行分类的一种分类法,采用“ 0”-“9”十个数字作为基本码元,同时它也作为笔形、部首及整个汉字的编码,有点与四角号码相似。它将汉字分为两类:一类是无部首的汉字;一类是有部首的汉字,同时对汉字的部首又进行了挑选,选出了55个部首作为主部首,并对其进行编码。纵横汉字编码法的取码规则有:无部首的汉字取该汉字的四个角上的笔形编码;有部首的汉字取该汉字的主部首编码,再取字身编码,若没有主部首,则取副部首,再取字身编码。词的取码规则:二字词,取每个汉字的前三码;三字词,取每个汉字的前两码;四字词,取第一、第四个汉字的前两码, 第二、第三个汉字再各取前一码;多字词,取第一个汉字的前两码,再取第二、三、四、五字的第一码。
WINDOWS 95提供的输入法生成器,可以让您生成自己的WINDOWS 95中文输入法。具体步骤如下:
1单击“开始”按钮,指向“程序”、“附件”,然后单击“输入法生成器”。
2单击“创建输入法”功能钮。
3单击“打开文件”按钮,将码表源文件打开。
4单击“转换”按钮,将生成一个扩展名为MB的词库文件。
5单击“创建”按钮,添入版本号和机构名称,接着点取 “自定义”按钮,输入位图文件名(bmp)和图标文件名(ico),对于帮助文件,根据自己的能力,若能编出WINDOWS 95下的帮助文件,则可以在这个地方输入帮助文件名(hlp),否则可以不输入。
6单击“确定”按钮,即可生成扩展名为IME输入法文件。
7生成输入法文件后,系统提示“是否安装”,选择“是(Y)”,系统将自动安装输入法。
在以上的步骤中,我们只需要一个纵横汉字编码的码表源文件就能生成WINDOWS 95下的纵横输入法了。那么如何建立码表源文件(txt文件)呢?根据WINDOWS 95中的“输入法生成器”提供的“逆转换”功能,我们可以将WINDOWS 95本身自带的输入法转换成其对应的码表源文件。利用写字板观察可以看出,码表源文件由三个部分组成:[Description]段、[Rule] 段和[Text]段。介绍如下:
1[Description]段
Name= 输入法的名称
MaxCodes= 输入法最大的编码长度
MaxElement= 输入法编码 信息元最大长度
UsedCodes= 输入法码元集合
WildChar= 输入法查询键
NumRules= 输入法构词规则条数
[Rule]段
该段描述输入法词组的构 成规则。规则表达式如下:
c[描述符][词语长度]=p[汉字序号][构成编码序号]+ p[汉字序号][构成编码序号]+p[汉字序号][构成编码序号]+…
其中[描述符]可 以为a、b、e中的任一个,p也可以用n代替。(WINDOWS 95码表源文件中规定)
3[Text] 段
该段是码表正文部分,格式如下:[汉字][编码][构词码]。[汉字]与[编码] 之间无空格,[编码]与[构词码]之间有一空格,[构词码]可以为空。[汉字]部分不允许有超过2个以上(包括2个)的单字或词组,对于重码的词组需拆分成两行以满足格式的需要。
知道码表源文件的格式,我们就可以构建纵横汉字编码的码表源文件了(txt文件) 。假设文件名为zhhztxt,构建如下:
[Description]
Name=纵横
MaxCodes=6
Max Element=3
UsedCodes=0123456789
WildChar=*
NumRules=4
[Rule]
ce2=p11+p12+p13+ p21+p22+p23
ce3=p11+p12+p21+p22+p31+p32
ce4=p11+p12+p21+p31+p41+p42
ce5=p1 1+p1 2+p21+p31+p41+p51
[Text]
的0
多00
夕00
.
.
.
对于编码部分,可以根据纵横汉字系统中的编码库文件(设为gaok.txt)利用FOX编码来转换得到。编码思想:建立一个库文件1(两个字段word,c,6;code,c,30),利用数据库命令append from gaok.txt type sdf向这个数据库文件添加记录,另建一个库文件2(含一个字段,c,50),其中已有13条记录( 码表源文件除去编码部分后的内容)。对库文件1中的两个字段进行相加处理添加到库文件2中,如果有重码,则对code字段进行拆分处理。处理后,对库文件2用命令copy to zhhz.txt type sdf生成文本文件(即纵横汉字编码的码表源文件)。
有了这个码表源文件,就可以把纵横汉字输入法挂接在WINDOWS 95下了。
利用这种方法其优点是简单、方便,缺点是不能实现纵横码特有的功能,如自定义词输入、缩码输入、联想输入。另外,由于受系统限制,用该方法字词码本的记录数不能超过65700条,否则系统会出错。