本发明是计算机汉字信息处理领域不设汉字库而能处理汉字的一项新技术。 计算机汉字信息处理的研究已获得较大进展,并已在许多领域得到应用。图1列出了三种有代表性的汉字处理方法。图1(a)是当前较为流行的汉字处理方法。该法的特点是机内有一个汉字库(3),存一定字数的点阵信息,输入时将汉字按某种编码用键盘(1)送入机器,由机器换码(2)后变成机中的内部码,供内部处理用。在输出时根据汉字的内部码到字库(3)里取出汉字点阵信息,直接送输出设备(4)输出。由于字库里存的是点阵,输出时较易处理。缺点是占内存大,软盘字库速度太慢;EPROM字库价格较贵。
为了减少占内存容量,不少单位研制了压缩字库。压缩字库有多种类型,但采用最多的是图1(b)所示的字根式压缩汉字库。字根库(8)中收存组成汉字的字根信息,压缩字库(7)中收存每个汉字有哪些字根以及这些字根的相对比例关系的信息。该法输入方法与整字存贮的方法相同,在输出时,由汉字的机内码取出字库中的字根组合信息,配合字根信息合成汉字(9)后输出。该法较图1(a)所示方法可大大节省内存,但4000字仍需几十K内存,另有字型质量差,合成汉字速度低地问题。
本发明的发明人之一于明江,1983年5月在武汉召开的中国中文信息研究会第二次全国学术会议上,发表了题为《无字库汉字信息处理》的论文,首次提出了“无字库汉字信息处理”的概念,并阐述了一种不设汉字库的构思。根据这一构思,汉字处理的过程如图1(c)所示。输入时将汉字分解成一串序列字根用键盘(11)输入机内,经(12)代换成序列字根代码串,在存贮、处理时同英文计算机处理字符串一样处理字根串,而在输出时,根据字根串的定位信息及字根信息从字根库(14)取出字根笔划端点坐标合成一个汉字(13)后,经输出设备(15)输出。经原理性实验,证明该法原理是可行的,但存在合字速度慢,字型质量差的问题。
发明目的:
把无字库汉字信息处理的设想推进到实用阶段。为计算机汉字信息处理开辟一条更加合理的可行之路。
详细技术说明:
为把无字库汉字信息处理的设想推进到实用阶段,在序列字根代码系、汉字输入与机内代码形成、序列字根代码变换成汉字点阵模图的三个关键环节上,发明了一系列新的技术和方法。
一、序列字根代码系的构成
1.序列字根代码系的构成
序列字根代码系是一种与GB1988-80七位编码字符集兼容的不等长代码系。它最适合在中英文混合处理的电子计算机或其他设备内部使用。它的主要元素包括:(1)汉字基本构件(字根符),(2)基本构件的排列(定位符),(3)汉字区分标志(标识符),也可含有(4)扩展汉字处理功能的其他信息(格式控制符)。
序列字根代码系主要元素的取值范围,除了标识符之外,均在GB1988-80字符集中相当于10个阿拉伯数字和26个大写字母的位组范围内,也就是图2中画有斜线的3/0~3/9和4/1~5/10这36个位组。而标识符是GB1988-80字符集中除前述36个位组之外的任意一个图形字符所在的位组。
字根符由两个字节组成。前面的为第一字节,后面的为第二字节,每个字节都用GB1988-80中3/0~3/9和4/1~5/10的位组表示。其码值需根据所选字根的多少,选择上述36个位组中全部或部分位组成统一编码后确定。
定位符也由两字节组成。第一字节是选定的标识符,第二字节是3/0~3/9和4/1~5/10的36个位组中的一个。
格式控制符由前导的三个字节和若干参数组成。前导的三字节中,第一字节是标识符。第二字节是3/0~3/9和4/1~5/10这36个位组中除定位符占用的以外的一个。第三字节是上述36个位组中的一个。
2.编码的用法
(1)标识符的任意指定:标识符是定位符和格式控制符中不可缺少的一部分。在每种语言环境下,都可由用户(而不光是系统改造者和系统设计者)通过键盘或其他设备在标识符的取值范围内任选一个。标识符指定后,由机器在需要时自动插入,用户不再干预。
(2)代码系的进入选定标识符后,定位符、格式控制符均以标识符打头。而汉字的第一个符号必然是定位符,因此,只要一见标识符,即宣告进入本代码系。
(3)代码系的退出:每个定位符都隐含着其后字根的个数,格式控制符隐含着参数个数,一旦条件满足,便自动退出。
(4)中英文混合的文字串中之英文
被选作标识符的位组上的符号本身可重复两次(用户只按一次,自动插入一次)。其他字符原样使用。
(5)英文字符当作汉字构件使用时的表示
因3/0~3/9和4/1~5/10的位组已用作定位符、格式控制符或字根符的代码,所以,0~9,A~Z这36个字符在字根码表中重新编码(可参见图4),视同字根一样处理。其他字符需在前边插入一个标识符。这些插入工作是机器自动进行的。
3.本编码主要优点
(1)在序列字根代码组成中除标识符外,其余代码相当于在10个数字和26个大写字母范围内。只要选一个合适的标识符,便能容易地兼容西文软件。
(2)用序列字根代码表示的每个汉字,都含有汉字结构和偏旁部首信息,并隐含有笔划信息。可方便地按偏旁部首或笔划处理汉字。定位符、字根符的代码值均为有序值,把序列字根表示的汉字串拿到计算机内按代码值直接排序时,可产生一种很有规律的按结构、字根、笔划排列的汉字排列顺序。
(3)本编码字容量大,把图4加以扩充后,可处理中国汉字,日本汉字,日本平假名、片假名及朝鲜文字等,不存在重码问题。
(4)本编码对设备适应性强。用于采用本发明技术设计的机器时,机内可不设汉字库,由输出部件直接合成点阵输出,用于与已有汉字系统连接时,只需一张转换码表即可方便进行信息交换。
(5)能显示汉字的设备,往往是具有点显示控制的设备。如果仅用于显示一般汉字,便不能发挥硬件设备的优势。本编码把诸如字体点阵大小、笔划粗细一类汉字可见属性和点图形功能考虑在内,便可使西文软件处理汉字同处理西文一样方便,但又远远超出了西文软件的原有功能。
二、汉字的输入与机内代码串的形成
1.汉字输入方法
输入汉字时,可采用专门设计的专用汉字中键盘或通用ASCII字符键盘,由操作者按照从左到右,从上到下,从外到内的规则分解汉字,配合定位结构(定位符)键按键输入。
上述专用中键盘包括94个字根键(每个键上标有一个GB1988-80字符和5~7个字根),4或5个定位符键,5~7个辅助选择键(与字根数相对应)及其他控制键。该键盘有别于其他字根式键盘的主要特点,是设立了独立的定位符键。定位符键上标写定位符符号,这些定位符对应的汉字结构是:独体结构(□),左右结构(),上下结构(),包围结构(⊙)和叠加结构()。独体结构的定位符也可不出现在键盘上。
将汉字分解为上述五类结构和这五类结构的重复嵌套组合结构,相应地只用到了五种定位符,实际使用的三十多种定位符,由计算机进行结构分析后自动代换。
2.汉字的结构分析
把汉字分解为字根并配合五类定位符输入计算机后,由计算机把输入的定位符代换成同类、但参数不同的定位符,以求得与该汉字实际结构最接近的定位符。这个过程便是计算机对汉字结构的分析过程。
计算机赖以进行结构分析的主要依据是字根特征值。为此需为每个字根设两种特征值:X方向特征值和Y方向特征值。两种特征值各占4位,合占一个字节。该值表征字根分别在X、Y方向的笔划密度,通常在汉字中所占的大小比例等特点。字根特征值依相应字根码值的大小顺序存放在一个表(特征值表)中,当得到字根码后,由字根码直接换算成相应特征值在表中的地址,进而从该地址取出特征值。某种结构下的两个字根特征值都取出后,由机器计算出两字根的特征值相对比例,然后为该汉字确定一个合适的定位符。
3.该代码产生方法的主要优点:
(1)尽管定位符有30多种,但操作者只需要记住五类结构就可以了,减轻了操作者的负担。
(2)由计算机根据字根特征值确定定位符,使序列字根代码串中含有了更加合理的汉字结构信息,从而使合成的汉字字型更趋美观。
三、序列字根代码串到点阵模图转换技术-汉字合成方法。
在汉字输出时,机器根据序列字根代码串中的定位符和随后的字根符,取出相应的为字根定位的信息和字根的笔划坐标数据信息,经相应的运算操作后合成汉字点阵模图输出。
1.字根在一个汉字中的定位方法
为确定一个字根在合成的汉字中的大小和位置,引入幅度(P)和起始位置(M)两个参数,其中幅度指在所选择的Nx×Ny的点阵中,该字根在x(或y)方向上应占据的点数,起始位置指该字根在x(或y)方向上距y轴(或X轴)的最小距离。
每种定位符制约1~3个字根,每个字根都具有两个方向上的幅度P和起始位置M,这样,要为每种定位符存一组初始参数。每一个参数分别为用于第一层(非定位符嵌套情况时)第j个字根在K(K=X或Y)方向上的幅度P和起始位置M:P1jko,M1jko这些参数以初始点阵数Nxo×Nyo设计,它们的取值范围为0~(Nko-1)。
在多层次嵌套结构的汉字中,当前层定位符要受到前一层定位符的制约。图6中的阴影部分,表示是第i层中第j个字根的四个定位参数:PijxMijxPijyMijy。在Nxo×Nyo的点阵中,这些参数与前一层参数及定位符初始参数的关系为:
(i≥2;1≤j≤3;k=x或Y)
2.字根笔划端点坐标数值存放方法:
字根库里存放每个字根的笔划端点坐标数值。这些数值是在Nxo×Nyo的点阵内,对每个字根字形进行设计后得出的,许多字根之间往往有一些相同坐标值的笔划,将这些有共同笔划的字根放在一起统一设计,按规律统一存放,而以不同起始地址和不同的笔划数区分各字根的数据。这种方法我们称作字根数据的部分重叠存放方法,图8是这种方法的示意图。图8(a)为统一设计的8条笔划线段,图8(b)为按1~8顺序存放线段数据后,根据不同字根,从不同起始地址开始顺序取一组数据。图示的6个字根,若分别存放共存27条线段,而采用部分重叠存放方法后,仅存8条。
这种字根库的使用方法与单独设计的字根库用法完全一样,都需要根据内存中设置的每个字根的数据起始存放地址和笔划数取出相应坐标。
3.汉字合成方法
原始坐标数值取出后,根据已算出的定位参数进行坐标数值的运算,就可换算成该字体笔划端点坐标在汉字中的实际坐标值。实际坐标值与原始坐标值及定位参数的换算关系如下:
Xi j= (Pi j xNxo-1· XO+ Mi j x)Nx- 1NXo- 1③]]>
Yi j= (Pi j yNyo - 1· YO+ Mi j y)Ny- 1Nyo- 1④]]>
(i≥2;1≤j≤3)
式中:Xij、Yij是第i层第j个字根中的实际坐标值
Xo,Yo是存放的字根原始坐标值
Nx,Ny是字根所处的点阵数
Nxo,Nyo是初始设计时的点阵数
利用公式①~④,处在任意一层的一个字根的实际笔划端点坐标都能计算出。分析①~④式可见,这些公式里的乘除混合运算具有 (P·Φ)/(No) 的形式。其中P是幅度,Φ是幅度、起始位置和原始坐标值三个量之一,它们的取值范围都为0~(Nko-1),而No是初始点阵数减1,对某一个系统而言,它是一个常量。根据这些特点,我们可以以P为行,以Φ为列,设计一张P行×Φ列的二维速算表。该速算表可用于计算汉字中字根的幅度、起始位置、实际笔划坐标。在Nk=Nko的情况下,求幅度只需查一次速算表,求起始位置、实际笔划坐标也只查一次速算表和做一次加法运算。
一个汉字中全部字根的笔划坐标转换成实际坐标后,采用计算机图形学方法,产生出一条条线段,最后生成汉字点阵模图。该点阵模图即可送输出设备输出。
采用上述序列字根代码串到点阵模图转换技术的主要优点是:
①、占用内存较小。字根库用部分重叠数据存放方法,使字根库占内存容量下降。在Nko=16时,字根库只占4K字节左右。加上全部转换程序,总程序量为8K字节(Z80指令系统)。将这8K的程序和数据置入输出设备中,该设备即可获得最基本汉字输出功能。
②、操作速度快。采用了前述查速算表方法,化乘除混合运算为查表取数操作,使从接收序列字根串开始到合成点阵模图为止的合字速度在16×16点阵时达到200字/秒(时钟3。9M,Z80ACPU)左右。
③、点阵任意可变,由式③、④可见,只要改变Nx,Ny的值,可将汉字笔划端点坐标放大(或缩小)到任意整数值。
发明实施实例:
利用前述的“序列字根法汉字信息处理技术”,在EG3200微机系统上开发成功一个功能较强的汉字操作系统。该汉字操作系统主要技术特征是:
1.采用了前述的序列字根代码系。其中使用34个定位符,分属于前述的五大类。所选定位符及其第二字节编码表如图3所示,所选字根符及其编码表如图4所示。字根符的码值是以字根的笔划数为序排列的,同笔划的字根是以横(一),竖(丨),撇(丿),点(丶),折(乙)为序排列的。格式控制符第二字节选用5/10的位组。所选用的19种扩展汉字处理功能的格式控制符及其第三字节编码表如图5所示,在其后还可扩展任意点图形功能。
2.可使用标准的ASCII键盘或特制的汉字中键盘输入汉字。特制的汉字中键盘设有128个键,其中有字根键94个,定位符键四个,这四个定位符键是:左右结构()上下结构(),包围结构(⊙)和叠加结构()。
3.采用了根据定位符的定位参数和字根笔划端点坐标数值合成汉字点阵模图的技术。初始定位参数及初始坐标数值均以16×16点阵设计,其中字根库的设计采用了部分重叠存放方法,每一坐标值用4bit表示,一字节可存贮一个端点的两个坐标值,每一笔划线段占用两个字节,字根库总共占用4K字节,并设计了如图7所示的16行×16列的速算表,使合成汉字速度达200字/秒。此外,在使用公式①~④时,对嵌套层次数进行了限制,规定2≤i≤8,对放大点阵数也进行了限制,规定Nk≤128。
该操作系统与CP/M2.2完全兼容,另外增加了如下功能:
①、与西文软件高度兼容。原CP/M下的各类软件(包括系统工具、高级语言、应用软件)均可处理汉字。如:操作系统下汉字可作文件名;在MACRO-80中,汉字可作注释、标号、字符串;用ED可直接编辑汉字文本;在BASIC、FORTRAN等高级语言环境中可直接处理汉字,并可使汉字进入DBASEⅡ、SUPERCALS等一类应用软件。
②、较强的文字处理功能
字数:已进行四万字输入试验
点阵大小:在8×8到128×128之间由程序任意设定,共有120×120=14400种点阵供用户选用。打印、显示均可,不同大小点阵的字可同行出现。
笔划粗细:每种点阵下的字都可由程序控制笔划粗细,横竖可单独在1~8点间控制。
字体方向:每种点阵下每个字都能在四个方向旋转
反相方式:黑底白字和白底黑字两种
③、直观的输入方法
不管是专用键盘或通用键盘,都能做到直观输入,操作者每输入一个定位符,可显示定位符示意图形,在一个字未输入完时,一个变形的光标指向下一个字根应在的位置。
在EG3200上实现的汉字操作系统也可方便地移植到其他微机系统上去。
序列字根法汉字信息处理技术也可广泛应用于处理或显示汉字的各种设备、仪器中。例如:可应用于计算机系统、单板机、终端机、测试仪器、工业控制设备、打印机、电报机、绘图机、大屏幕显示系统等。
对附图的简要说明
图1.几种不同的汉字信息处理方法
(a)整字存贮汉字库方法
(b)字根式压缩汉字库方法
(c)无字库序列字根组字方法
图中各代号的含义:
(1)、(5)、(11)键盘 (2)、(6)换码
(4)、(10)、(15)显示器 (9)、(13)汉字合成
(8)、(14)字根库 (3)点阵式汉字库
(7)压缩汉字库 (12)序列字根代码生成
图2.序列字根代码在GB1988-80字符集中所占位置示意。
图3.实例中选用的定位符及其第二字节编码表。
图4.实例中选用的字根符及其编码表。
图5.实例中选用的格式控制符及其第三字节编码表。
图6.字根在汉字中的定位参数示意。
图7.实例中采用的速算表,其初始点阵为16×16。
图8.字根笔划数据的部分重叠存放示意。
(a)统一设计的8条笔划线段
(b)将(a)的8条线段按1-8顺序存放后,从不同起始地址开始,顺序取一组数据,即获得不同的字根笔划数据。