CN1032985C - 多级结构汉字字库及其操作系统 - Google Patents
多级结构汉字字库及其操作系统 Download PDFInfo
- Publication number
- CN1032985C CN1032985C CN 94103476 CN94103476A CN1032985C CN 1032985 C CN1032985 C CN 1032985C CN 94103476 CN94103476 CN 94103476 CN 94103476 A CN94103476 A CN 94103476A CN 1032985 C CN1032985 C CN 1032985C
- Authority
- CN
- China
- Prior art keywords
- character
- stroke
- word
- coordinate system
- chinese
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Controls And Circuits For Display Device (AREA)
- Document Processing Apparatus (AREA)
Abstract
在计算机汉字信息处理技术领域中,中文电脑的基础是汉字字库,本多级结构字库技术是将字向下细分为字、字元和笔划三级编码,以字的笔划或曲线段作为基本单位描述生成计算机汉字字形,构成字库,能使高精度地描述字形达到高度节省存储容量的目的,字形精度越高、字体越多、字符集越大就越显示其优越性。从而解决中文字符集大字体多难于一次调入内存使用的难题,能使各种汉字信息处理应用系统都大大提高性能和降低造价。
Description
本技术属计算机汉字信息处理范筹。中文电脑的基础是汉字字库,中文操作系统主要由:汉字输入、显示、打印输出等模块组成,而每一模块的实现都要通过字形产生器和字库管理模块调用汉字库。
目前,大部分汉字系统仍采用点阵汉字库,主要代表有:北大方正(5·0以下版本)、北京联想、王码、四通、金峰、晓军2.13和巨人汉字系统等;一般采用48×48点阵以下的各种字体的字库。
点阵汉字的弱点在于:低点阵汉字字形粗糙,放大有锯齿,而高点阵字库对存储容量的占用以几何级数倍增长。例如,一个256×256点分辨率点阵字要占用8K字节,一个国标汉字基本集(含7445个汉字及字符)的一种字体要占60M字节,10种字体的字库要600M字节,这在中低档微机上不能实现,制成汉卡要非常昂贵的造价,高点阵字库由于占用存储容量大,不可能将各字体一次调入内存,从而增加了内、外存的数据调进调出次数因而大大降低了计算机的处理速度和外存的使用寿命。
矢量汉字技术为特征的汉字系统其主要代表有:西安凯特计算机公司的CAD汉字系统(采用AUTOCAD系统划线数据结构描述)和北大方正、香港金山(SUPER)的6.0F版本(采用POSTSCRIPT技术的轮廓矢汉字)。这些系统在提高处理高分辨率的汉字信息和减少对存储容量的占用方面已经有了明显的进步,但是,它们的共同特点是:字库描述的基本单位仍然是字,描述一个字的轮廓曲线仍要占用较大的存储容量,而且,每增加一种字体仍然要增加差不多等量的存储容量;以北大方正6·0F汉字系统为例,每一种字体要占用1-2MB存储容量,8种字体占用了10MB多字节存储容量,对于中低档微机来说,将所有字库一次调入内存使用仍不可能,制成汉卡价格仍然昂贵。
本发明的目的在于实现一种高精度、省内存、价廉且应用面广的汉字字库技术和汉字系统,它与传统的计算机汉字字形产生技术的不同点在于:传统的计算机汉字库将汉字看成一个独立的不可分的基本单位,而本技术的汉字计算机字形描述将汉字又向下细分若干级,分级编码,最终以笔划或组成笔划的曲线段为基本单位,由于汉字笔划数比汉字字符集少得多,该技术充分利用了汉字字形的特点和计算机的特点,从而这种在计算机里的新型表示法和处理方法能够达到计算机对汉字字形以任意高精度最完美地描述和最大限度地节省存储容量的目的。例如:同样描述8种不同字体的256×256点分辨率的国标汉字基本级的字库,多级结构字库只要占用600KB存储容量,这是同等点阵字库所占容量的千分之一和同等矢量字库的十五分之一,而每增加一种字体只要增加10KB到70KB的存储容量,汉字字符集越大、字体越多、字形精度要求越高就越能显示其优越性,把多种字体同时调入内存使用对于中低档微机都已成为可能。
目前已研制成功含五种字体的256×256点以上分辨率的国标汉字基本集(含6763个汉字等)字库仅占190K字节;正在研制第二版包括9种字体的256×256点以上分辨率的国标基本集和第一辅助集(繁3字)字库约占300K字节;第三版包括24种字体的、分辨率256×256以上的、含国标汉字基本集和第一辅助集汉字的字库只约占750K字节;第四版包括所有汉字字体的256×256点以上分辨率的国标汉字基本集及第一、二、三、四、五辅助集所有汉字及图形字符(约五万字)的字库约只占存储容量为1·5至2M字节。
该技术除了可以用于设计含有超大型国标汉字字符集的汉字操作系统外,还可以用以研制具有多国文字的多字体字库,特别是我国各少数民族的文字、日文、朝鲜文、东南亚各国文字。
本技术生成的中文电脑应用复盖面广,由于它最大限度地节省存储资源,解决了汉字字集大字体多难于一次调入内存使用的难题,可以很方便地生产各种不同的中文信息处理应用的版本适于从家用电脑到大型计算机系统使用,对于用户的应用都可以节省投资,势必推动中文电脑的更广泛地使用,该技术特别适于高级排版印刷系统、高级动面系统、字幕机等应用,由于它们对字库的依赖而可以提高性能和大大降低造价。
总之,该技术应用的前景广阔。
多级结构汉字字库的设计原理概述如下:
将国标码表示的汉字的字形再自下细分若干级分级编码最终以笔划或构成笔划的曲线段为基本单位来描述和生成该汉字的字形的方法构成的字库称为多级结构字库。附图1是一个多级结构字库示意图。
如附图1所示:“啊”字是该字库的第0号字;
“啊”字分解成简字“阿”和字元“口”,称为二元字;
“阿”简字分解成复合字元“可”和字元“阝”称为二元简字;
“可”复合字元分解成字元“口”和“丁”,为二元复合字元;
“阝”字元分解成笔划“
”和“丨”,称为二划字元;
笔划“一”“丨”“
”“”分别为四、四、九、五段曲线段构成的笔划;
从附图1可知,“啊”字最终分解成四种不同的12个笔划,而每个笔划又由若干曲线段构成它的闭合轮廓线;最后对每个闭合曲线构成的图形进行填充处理。
附图2a所示;“
”笔划由九条曲线段构成闭合曲线,而每条曲线又用曲线方程或折线段拟合。本节描述了一个由字、简字、复合字元、字元、复合笔划、笔划、曲线段七级结构的字库,为了描述和实现简便起见,将之合并为三级即:字、字元、笔划〔含曲线段〕。
下面阐述三级字库编码方案的实例:
字结构编码:一个字由若干个字元构成,对字的编码规则是:先对仅含一个字元的字编码,接着对含二个字元的字编码,以此类推,约定一个字最多含七个字元,即最后对七元字编码,每元字号从1开始,依次往下编码。
字元结构编码:一个字元由若干笔划组成,约定一个字元最多含15个笔划,对字元编码的规则是:先对含2个笔划的字元编码,最后对15个笔划的元字编码,每划字元字元号从1到255。用一个字节数据表示字元号,可节省内存容量。
对笔划的编码:笔划是各种大小形状不同的“横”、“竖”、“撇”、“捺”、“点”的封闭曲线,每个笔划由两条以上的曲线段组成;从1到255编码,也是用一个字节数据表示一个笔划号,笔划所含各曲线段的坐标点数据也用一个字节表示一个数。
三级结构24种字体汉字库的结构说明如下:
字结构级
由汉字国标码经索引文件变换成为结构字编码,以字结构编码为序形成各字体公用的字结构文件,用以描述构成该字的字元数和每字元在字座标系下的位置、大小。
字元结构级
由字体形状近似的字体公用一种字元结构,24种分为6类不同的字元:宋体类字元、楷体类字元、圆体类字元、魏碑类字元、隶书类字元、行楷类字元;以每种字元结构编码为序形成各字体公用的字元结构文件,用以描述构成该字元的笔划数和每笔划在字元座标系下的位置、大小;
共用宋体类字元的字体包括:细宋、标宋、大宋、书宋、大黑、中黑、细黑、仿宋、钢笔体字形;
共用楷体类字元的字体包括:细楷、中楷、粗楷体字形;
共用圆体类字元的字体包括:细圆、中圆、粗圆体字形;
共用魏碑体类字元的字体包括:细、中、粗体魏碑字形;
共用隶书体类字元的字体包括:细、中、粗隶书体字形;
共用行楷体类字元的字体包括:细、中、粗行楷体字形。
笔划结构级
每一种字体有一个笔划结构文件,24个笔划文件对应24种字体。
从以上结构图可知:字结构文件为所有字体公用;而相似的字体共用字元结构文件;每一种字体有一个笔划文件;因此每增加一种字体只要增加一个笔划文件,根据实践可知一个笔划文件仅要不到10K字节的数据,从而非常经济,该字库共占750K字节,其中索引文件和简繁字结构文件占150K字节,每类字元不到60K字节,六类共360K字节,每个笔划文件不到10K字节,24种字体共占240K字节。
汉字字形产生模块工作流程如下:国标汉字编码经索引文件可获取结构汉字编码,以结构汉字编码可换算该字含几个字元和在该元字中的字号,然后经字结构文件获取该字的各字元号等数据,根据各字元所含笔划数和字元号从字元文件中获取组成各字元的笔划号,最后从笔划文件获取构成各笔划的曲线段的参数经填充算法生成该汉字。
生成字结构文件、字元文件和笔划文件,必须建立各种座标系;屏幕座标系(对于显示),打印输出块座标系(对于打印输出),字座标系,字元座标系,笔划坐标系;字形产生模块调用这些文件的数据经过坐标变换产生字形。
屏幕座标系:以计算机VGA显示器(12H模式)为例,屏幕左上角为座标原点,过原点向下为Y轴,过原点向右为X轴,显示分辨率为640×480,因此屏幕右下角座标为(639,479)。
打印输出块座标系:
类似屏幕座标系,左上角为块座标原点,过原点向下为Y轴,过原点向右为X轴,右下角座标为(块宽,块长);块宽只受物理设备的限制,块长可任意,在这个坐标系下可以打印任意超大汉字。
字座标系:
字座标系是相对于屏幕座标系(对于显示)打印块座标系(对于打印)下的相对座标系,原点为字的中心;用以描述256×256点大小的基准字。
字元座标系:字元座标系是相对于字座标系的相对座标系,原点为字元的中心,在该坐标系下描述的基准字元为256×256点。
笔划座标系:笔划座标系是相对于字元座标系的相对座标系,原点是笔划的中心,基准笔划为256×256点大小。
多级结构字库的设计方法步骤如下:
拆字进行字元的设置与字的编码:确定构成字的字元,要设计多少字元,并对各字元在字库中重复使用的次数进行分析;确定每一个字由几个字元组成,并对字编码。
拆字元设置笔划并对字元编码:同样,拆字元确定要设计多少笔划,对笔划设计定形;确定每一个字元由几个笔划组成,并对字元编码;分类出2-15划字元。
笔划的设计:在256×256的方格纸上精确描述笔划图形,根据对曲线段的拟合方法将笔划分成若干曲线段,判读曲线段上特征点座标和该段特征值并记录下来输入计算机,用测试程序检验笔划的设计效果,然后设计定型并编码。
使用字库生成调试工具软件生成字库:使用字元生成及调试程序生成和调试每一个字元,即二划至十五划字元文件等十四个文件,一一进行生成和调试。在笔划设计及字元生成调试完成后,使用字生成调试程序调试每一个字,当每一个字都调试完毕后,重新组合字结构文件,生成由国标码到结构字库编码的索引文件。使用字库测试修改程序对字库进行最后的测试和修改,直到达到正确、精确、美观的要求时,该字库即告完成。
笔划中的曲线段的拟合方法:可以采用折线方法、贝塞尔二次曲线、二次和三次多项式逼近等方法拟合,不论采取何种拟的方法均把表示笔划的数据结构统一,即一个笔划用若干座标点表示,座标点数据的意义随拟合方法的不同而不同。折线拟合的曲线段数即是曲线段数,段数同点数;贝塞尔二次曲线拟合的段数正好是点数的一半,而且点数是偶数,偶数号点又正好是相邻两点的切线交点;二次多项式的段数与点数的关系同贝塞尔二次曲线,不同的是所取的点的位置不同;三次多项式逼近点数为段数的三倍。
笔划数据文件的格式如下:约定每个字体的笔划数为200;约定笔划文件头占600个字节,每个笔划占3个字节,依笔划号次序排列;3个数据的内容是:第一个字节为笔划含座标的点数,第二和第三字节合起来为该笔划的座标数据在文件中的起始位置,这种数据结构允许每一个笔划所含的点数为任意。
字元数据结构:对所含每一笔划用5个字节表示,分别为笔划号、X和Y方向的缩放系数、笔划中心的X座标和Y座标;2划字元占10个字节数据;3划字元占15个字节数据;如此类推,15划字元占75个字节数据。
字的数据格式:一元字用两个字节表示,内容分别为所含字元的笔划数和字元号;二元以上字对所含每一字元用6个字节表示,分别为各字元所含笔划数、字元号、X和Y方向的缩放系数、字元中心的X座标和Y座标;2元字占12个字节数据;3元字占18个字节数据;如此类推,五元字占30个字节数据。
国标码变换到结构字编码的索引文件的格式:由国标码转换到汉字顺序号,国标码用两个字节表示一个汉字,设为C0、C1,定义为无符号字符型数,汉字顺序号=94×(C0-176)+C1-161,顺序号为0的是“啊”字,依此类推;索引文件格式按顺序号依次排列:结构字号,结构字号,……,结构字号;根据汉字顺序号可查到结构汉字号,结构汉字号是按一元字、二元字、三元字、四元字、五元字等依次排序,又可根据结构汉字号求出该汉字所含的字元数和各字元号,这样就可以生成该字字形了。
在屏幕座标系下显示结构字的座标变换如下:
(1)在屏幕上显示字的调用参数格式
一个字在屏幕上显示至少要8个参数,它们是:
结构字号,为一个正整数,两个字节表示,它是从汉字国标码转换而来的:
字体号,该参数表明该字用何字体显示;
X方向的缩放系数XS,为1-255的无符号整数;
Y方向的缩放系数YS,为1-255的无符号整数;
字中心的在屏幕座标系下X座标X0,为有符号的字符型整数;
字中心的在屏幕座标系下Y座标Y0,为有符号的字符型整数;
字的显示颜色;
字的显示方式(与、或、异或、直写)。
(2)在屏幕上显示一个字的座标变换:
在屏幕座标系下写一个字;
每一个字元的每一个笔划的各座标点由在字座标系到屏幕座标系的坐标变换公式如下:
Xkij=((X2i+XBi×X3j÷128)×XUk/128+Xk1)×XS/128+X0;
Ykij=((Y2i+YBi×Y3j÷128)×YUk/128+Yk1)×YS/128+Y0;
式中,
(X3j,Y3j)为i笔划各座标点在笔划座标系下的坐标,
(Xkij,Ykij)为i笔划各座标点在字座标系下的坐标,
(Xk1,Yk1)为第k字元中心在字座标下的座标,
(XUk,YUk)为第k字元在X和Y方向上的缩放系数,
(X2i,Y2i)为第k字元的第i笔划中心在该字元座标系下的座标,
(XBi,YBi)为k字元的第i笔划在X和Y方向上的缩方系数,
k=1--该字所含字元数;
i=1--第k字元所含的笔划数;
j=1--第k字元的第i笔划所含的点数;
(X0,Y0)为字中心在屏幕座标系下的座标;
XS为字显示在屏幕上X方向缩放系数:
YS为字显示在屏幕上Y方向缩放系数。
结构字库生成和调试工具主要有三个程序:字元生成与调试、字生成与调试、字库生成与调试。
字元生成与调试程序流程见附图2b;
附图2b中(1)对话输入字元的笔划数及相应的字元文件名举例:
例如要生成调试3划字元,则输入3,然后输入3划字元文件名(该文件是拆字元分解为相应笔划后用文本编辑输入的);将磁盘文件读入字元数组;
附图2b中(8)将宋体以外相应笔划用异或方式清除,其含义是:
先仅调试宋体字元的各笔划,因而将其他字体的相应笔划清除,待宋体的该笔划基本调试好再显示其他字体的笔划,如不合适可反复调试,使每个笔划的大小和位置数据合理。
附图2b中(9)调用缩放模块的目的在于修改笔划在X和Y方向上的缩放系数,以使该笔划有合理的长宽;用↑↓→←键(小步缩放)及HOME END PUGEUP PUGEDOWN键(大步)调试缩放系数,直到满意为止;
附图2b中(10)调用平移模块的目的在于修改该笔划在字元座标系下的位置中心坐标,以使该字元的笔划分布合理,调试所用键同(9),键的意义表示平移增量。
字生成与调试程序流程见附图3;
附图3中(1)初始化的含义包括:
将各字体的笔划文件读入各笔划数组;
将各字体字元文件读入各字元数组;
输入该字结构含的字元数及相应的文件名;
读字结构文件数据送字结构数组;
设置显示方式为VGA模式。
附图3中(6)输入并显示样字是将用扫描仪或其他方式获取的标准字显示在屏幕上。
附图3中(8)屏幕处理包括:
将宋体以外相应字元用异或方式清除;
清除屏幕提示区。
附图3中(9)调用缩放和平移模块目的是修改各字元在X和Y方向上的缩放系数,以使字元划有合理的长宽;用↑↓→←键及HOME END PUGEUP PUGEDOWN键调试缩放系数,直到满意为止;
调用平移模块修改该字元在字座标系下的位置中心坐标,以使该字的各字元分布合理,调试所用键同缩放,键的意义表示平移增量。
字库的调试工具说明:
一个字库生成后需要测试,测试过程中往往要修改,例如将二元字改成三元字,这不但引起字库数据的改变,也引起字库结构的改变,因而同时要修改索引文件和文件头,使用程序自动修改很方便,具体流程见附图4。
附图4中(1)按装字库包括:将要修改的字库文件调入内存,同时将字元文件及各字体笔划文件调入内存数组。
附图4中(6)更改则先从字结构文件中去掉该字结构数据并调整该字结构文件,修改该文件头。
附图4中(7)输入构成该字所含的新字元数目,例如从二元字改为三元字输入3,将含该字元数的最高字号加1分配给该字,并在字结构文件中分配数据区增加到该字结构文件,调整字结构文件并修改文件头、索引文件等。
多级结构字库的中文电脑操作系统设计总体设计说明如下:
本操作系统的设计是以多级结构字库技术为基础的,虽然其模块设置同传统的汉字操作系统大体相同,但由于字库结构的根本不同,因而各模块的设计就不同。
与传统的字库结构不同,多级结构多字体字库(字结构、字元、各笔划、索引等数据)是不可分割的整体,由此而必需一个与之相适应的字库管理与字形产生模块;该模块可直接被应用程序调用,也可被汉字显示管理模块与汉字打印输出管理模块调用;汉字显示管理模块可被汉字输入键盘管理模块调用;以上各模块均可直接用于应用程序。
上面说明了汉字操作系统所需的模块、模块间的相互关系以及它们同应用程序间的关系;从以上可知,汉字操作系统的设计依赖于字库,最基础的模块就是字库管理与字形产生模块,其它模块都要通过它来调用字库;字库管理将结构字库调入基本内存或扩展内存或扩充内存,然后建立一个软中断供字形产生模块使用,字形产生模块将根据汉字国标码从多级结构字库读取字结构数据,供汉字显示模块、汉字打印输出模块及应用程序使用;汉字显示管理模块一方面要根据字形产生模块提供的字形数据和应用的其它参数(例如显示位置、大小、颜色和方式等)显示在屏幕上,另一方面要将汉字显示功能附加到原来的显示中断10H里;汉字打印输出管理模块包括字形数据到打印缓冲区格式数据的转换和利用17H中断控制点阵打印机打印,使用结构字库可以显示或打印任意大小的字,只受到物理设备的限制,例如可以显示一屏幕大的字、可以打印长度任意而宽度为宽行纸所允许的宽度的一个字等而字形不变形无锯齿;汉字输入键盘管理模块管理汉字输入键盘、汉字输入处理和修改键盘中断管理16H。
下面是一个含5种字体多级结构字库的实例,5种字体都属于同一字元类,故共一个字元文件,所有类字体都公用一个字结构文件。
(1)五种字体的笔划
②粗黑体笔划,笔划编码1-200,笔划数据文件占5800字节,具体编码和形状如下:(只列1-100)
③书宋体笔划数据文件占7850字节,④细黑体笔划数据文件占5900字节,⑤钢笔体笔划数据文件占4800字节,具体编码和形状(略);
五种字体笔划数据文件共32150字节。
(2)宋体类字元,宋体类字元结构文件可为9种字体共用,上面5种字体都为宋体类,从2划字到15划字元如下:
10划字元107个,占5350字节,编码从1到107:髟宾革音鬼度前帝查荅春宛胥宣俞枼爰周居易
11划字元66个,占3630字节,编码从1到66:爱敖旁莫尃复段真畐扁眉贵胡叟昷耑岛彖
13划字元48个,占3120字节,编码从1到48:番善童
敦高曹啇婴咢散蒙惠尊啬隽奥桑
该字元结构数据共占55150字节。
(3)字结构文件,字结构文件含1到5元字:
一元结构字411个占822字节,从1到411,只列20个:乘面阜食甚首弟重盾恭画荒柬家前宛俞宾南酋
二元结构字4745个占56940字节,从1到4745编码:缔颠滇点靛垫佃甸店淀碉雕掉钓调跌碟蝶谍盯
三元结构字1204个占21672字节,从1到1205编码:蛤阁隔铬各给根跟埂耿梗功巩供拱贡钩沟狗垢
四元结构字308个占7392字节,从1到308编码:酃塾壅墀芡茇茺荸荼萆蒎蒽蒡甍蓰蕨蕺蕃薨薏
五元结构字95个,占2850字节,从1到95顺序编码:勉腻攀蔷燃傻舒蓑嚏停信燕殷应葬展噩侃龠黉
国标基本级汉字结构字库字结构文件共占89676字节;
从国标码到结构字编码转换索引文件占13526字节;
综上所述,一个五字体的256×256点分辨率的多级结构字库共占存储容量为190502字节。
字库管理与字形产生模块的设计包括二个模块:
(1)结构字库驻留基本内存的模块
准备工作先把字库测试完毕,将字结构文件、字元结构文件、各笔划文件合并成一个文件,并记下各自指针供字形产生模块使用,字库驻留内存流程见附图5。
附图5中⑥计算字库驻留的长度,并加上字形产生模块,以节为单位,(1节=16字节)。
附图5中⑦分配一个软中断给字形产生模块并设置该中断。
附图5中⑧使用INT21H的31H功能驻留退出。
字库可以使用INT15H中断AH=87H功能调到扩展内存,在有扩充内存和EMM驱动程序的计算机里可以使用INT67H中断将字库调扩充内存。
字形产生模块
程序入口:DX寄存器为国标码汉字,BL寄存器存放字体号;
返回参数:DX:0为结构字形数据(该字所含各字元,各字元所含各笔划,各笔划所含各坐标点所有该基准字的256×256点分辨率字形数据)。
程序流程见附图6。
汉字显示管理包括三个模块:
(1)汉字显示模块
程序入口参数:DS:0为入口参数地址,
入口参数:汉字国标码C1、C2为两个字符,功能号BZ为一个字节整数,字体号ZT为一字节整数,字在屏幕座标系下的中心坐标(X0,Y0)为两个整数,字在X和Y方向上的缩放系数为两个正整数,显示颜色为一字节整数,显示方式为一字节整数;
出口参数:无;
该模块调用字形产生模块获取基准字数据,然后将个笔划的各点座标转换到屏幕座标系下,调用填充模块将字按指定大小、颜色、方式和字体显示在指定位置上;
功能号BZ约定(0:钢笔体字显示,1:一般字显示,4:超大字显示--即大于512×512点分辩率的大字显示;其它号为打印输出所用),
字体号约定(1:标宋,2:粗黑,3:书宋,4:细黑,5:仿宋……),
模块流程附图7。
笔划填充模块
程序入口参数:座标点数S、各点座标值、显示颜色和方式;
出口参数:无;
模块流程见附图8。
附图8中④求Y=YY的水平线与曲线段的交点,对于不同的曲线拟合方法求交点的方法基本相同,即将Y=YY代入曲线段的曲线方程,解方程对X求解。
附图8中⑤有交点记录该点的X座标,如果该点与曲线端点重合则判断该点的特性(极值点否)并记录特征值。
附图8中⑨以X座标的起点和终点、Y=YY、显示颜色和方式为入口参数调用划水平线函数划各条水平线(X座标在排序后两两交点间划水平线)。
(3)显示一个汉字串
入口参数:汉字串存放首地址、在屏幕上显示的左上点坐标、汉字的宽和长、字距、显示颜色和方式;
出口参数:无;
汉字串可以以任意大小和显示颜色显示在屏幕的任意位置。
模块的流程见附图9。
显示中断10H增加汉字显示处理功能:
AH=20H为调用字形产生模块;
AH=21H为显示一个汉字;
AH=22H为显示一个汉字串。
汉字打印输出管理包括五个模块:
本管理是根据结构字库的特性而设计的,本字库字串可以以任意大小和任意长宽比例打印输出,本设计定义了打印输出块,以块作为打印的一个描述单位为用户提供了强有力的排版印刷输出功能,这个块的长度可以无限而宽度只受物理设备的限制,在块内的每个字或字串都可以以任意大小和任意长宽比例在块的任意位置打印输出而与编辑顺序无关,这与传统的行输出不同,但可以把行输出作为块输出的特例处理,即块输出包含行输出,与该输出方法相对应的编辑程序称为“块编辑”。
(1)“打印输出块”编辑文件格式约定
一个“打印输出块”文件包括块头,若干字串,字串含若干字;约定如下:
①块头数据描述:块头标志,用以区分不同的块;该块含要打印串数;该块的长度,用打印次数表示,实际长度为24×打印次数;该块的宽度,用打印机的行宽点数表示。
②字串头数据:每串的字以相同的大小打印(不同则用另一串),可以是任意大小和在块的任意位置,字串头数据描述这些数据,共有7个数据分别为功能号BZ(2:一般字打印,5:大于256×256点分辩率的超大字打印,3:一般字空心打印,6:大于256×256点的超大字打印);字体号ZT(1:标宋,2:粗黑,3:书宋,4:细黑,5:仿宋……);字串首字左上角在块内的座标(X0,Y0)为两个整数;字宽ZK ;字长ZC ;字距ZQ。
③汉字串:国标码汉字串,紧跟在字串头控制数据之后。
④块大小的约定:允许每块拥有100个串,每串100个汉字(国标码)。
“打印输出块”的块打印功能实现
模块入口:“打印输出块”文件名;
模块主要流程见附图10。
附图10中①打开数据文件读一块输出数据调入内存数组,设置一个控制块数组和一个字串块数组,控制块数组除了存放块头数据外,还为每串存放9个字控制数据。
附图10中④对每一串的每一个字循环,根据字串控制数据和该字在串中的相对号计算该字在块内的中心座标、X和Y方向的缩放系数、起始点的打印机缓冲区地址等。
汉字打印点位生成控制模块
程序入口参数:DS:0为入口参数地址,
出口参数:将打印点位送打印缓冲区;
该模块调用字形产生模块获取基准字数据,然后将个笔划的各点座标转换到打印输出块座标系下,调用打印点位生成模块将字的24点长度和该字的宽度的点位数据送到为该字准备好的打印点位缓冲区里;一个长度超过了24点长的字打印要多次调用该模块;
打印缓冲区点位数据排列:列顺序排列,一列24点为3个字节接下列3个字节。
模块流程见附图11。
打印点位生成模块
程序入口参数:功能号BZ、字体号ZT、字在打印块座标系下的中心坐标、字在X和Y方向上的缩放系数,该字打印次数号MN打印超大字时X和Y方向上的放大倍数XS、YS,该字打印点位缓冲区首地址、座标点数S、各点在打印块座标系下座标值;
出口参数:将打印点位送缓冲区。
模块流程见附图10。
打印驱动程序:打印输出24点长度的一行
入口参数:打印缓冲区首地址、打印行的宽度、功能号;
出口参数:无;
使用17H中断对打印机初始化或打印24列的一行。
模块的流程见附图13。
汉字输入管理对字库的依赖相对少一点,它只是通过显示管理模块调用字库显示汉字提示,除此以外该设计均使用已有的技术,该设计包括:键盘功能键约定、汉字输入编码方案和挂接方案、汉字输入显示屏幕介面设计、汉字输入键盘管理自举程序、键盘中断管理模块等,程序流程略。
附图1是一个多级结构字库示意图,从图中可知,“啊”字最终分解成12个四种不同的笔画,而对每个笔画闭合曲线进行填充处理即可。
附图1a所示的笔画由九条曲线段构成的闭合曲线。
附图2为字元生成与调试模块,对话输入组成字元的各笔面后先仅调试宋体字元的各笔面,待宋体的该笔划基本调试好再显示其他字体的笔面,调用缩放模块修改笔画在X和Y方向上的缩放系数,调用平移模块修改该笔面在字元座标系下的位置。
附图3为字生成与调试模块,将各字体的笔划文件、字元文件、字结构文件数据读入内存后,输入并显示样字显示在屏幕上,调用缩放和平移模块修改各字元在X和Y方向上的缩放系数和位置。
附图4为多字体结构字库调试工具,按装字库,若更改字则先从字结构文件中去掉该字结构数据并调整该字结构文件,修改该文件头,再输入新的字结构数据进行调试。
附图5为字库驻留内存流程,计算字库驻留的长度,分配一个软中断给字形产生模块并设置该中断。
附图6为字形产生模块,获取字结构及所含各字元、笔划数据经座标变换后调用填充模块画每一个笔画。
附图7为汉字显示模块。
附图8为笔划填充模块流程,求Y=YY的水平线与各曲线段的交点,解方程对X求解,以X座标的起点和终点、Y=YY参数划水平线。
附图9为汉字串显示模块。
附图10为汉字打印输出管理模块流程,打开数据文件读一块输出数据,然后对每一串的每一个字循环输出。
附图11字打印点位生成管理模块,它调用点位生成模块。
附图12为打印点位生成模块,类似字显示形成点位送打印缓冲区。
附图13为打印驱动程序流程,使用17H中断对打印机初始化或打印24列的一行。
Claims (2)
1.一种多级结构字库的操作系统,其特征在于:
a.由一个多字体共享的参数化的字结构文件、几个相似的字体共享的参数化字元结构文件、每一种字体对应一个笔画文件的所有笔画文件构成的多字体的字库:
构成每一种字体笔画文件的参数化笔画数据结构是:每个笔画由2条以上的曲线段组成封闭图形,笔画数据包括含有段属性、直线方式或曲线方式、各笔画段特征点坐标的笔画分段数据和笔画描述参数;
参数化的字元数据结构是:每个字元由1-15个笔画构成,其数据结构包括构成该字元的各个笔画的编号、各笔画在字元坐标系下的位置参数、缩放系数;
多字体字库共用的字数据结构是:每个字由1到7个字元组成,字结构数据包括构成该字的各字元号、各字元在字坐标系下位置、缩放系数;
b.利用上述数据结构的参数化笔画生成器:其输入数据除了笔画结构数据以外,还包括字元生成时调用笔画生成器所传递的参数,这些参数是笔画的缩放系数、位置,利用这些参数使一个笔画结构生成连续变化的、形状相似的笔画,在笔画坐标系下,对每一个Y座标求水平线与笔划上每一曲线段的交点座标,对交点座标排序判断后,使用水平线填充算法生成笔画;
c.利用上述数据结构的参数化字元生成器:其输入数据除了字元结构数据以外,还包括字生成时调用字元生成器所传递的字元的缩放系数、位置参数,在字元坐标系下,经坐标变换后,调用笔画生成器生成该字元所含的每一个笔画得到字元;
d.利用上述数据结构的参数化的字生成器:在字坐标系下,经坐标变换后,调用字元生成器生成该字所含的每一个字元就生成了字;
e.使用拼音方案的汉字输入模块;
f.多级结构汉字字形显示的装置:设立屏幕坐标系、字坐标系、字元坐标系、笔画坐标系,经座标变换传递,最终在笔画坐标系下调用笔画结构参数和字元结构参数使用笔画生成器生成笔画,显示在屏幕坐标系下;不同的字体具有相同笔画号的笔画由于取不同的笔画数据而不同,由组成字元的各笔画结构在字元坐标系下生成字元,相同的字元结构数据调用不同字体的笔画即可生成不同字体的字元,由组成字的各字元在字坐标系下生成字,相同的字结构数据调用不同字体的字元可生成不同字体的字;
g.多级结构汉字字形打印输出装置:设立打印输出坐标系、字坐标系、字元坐标系、笔画坐标系,经座标变换传递,最终在笔画坐标系下调用笔画结构数据和字元结构参数使用笔画生成器生成笔画,调用相适应的打印设备驱动程序,在打印输出座标系下输出汉字。
2.一种多级结构字库的生成方法,其特征在于:
a.依据各字元在字库的重复使用次数设置字元并对字元编码,形成含各字元号的字结构初始文件;同样,依据各笔画在字元库的重复使用次数设置笔画并对笔画编码,形成含各笔画号的字元结构初始文件;在256×256的方格纸上描述笔画图形,根据对曲线段的拟合方法分成若干曲线段,判读曲线段上特征点坐标和该段特征值输入计算机,形成笔划文件,然后分别使用字元生成与调试、字生成与调试、字库生成与调试三个程序调试修改认定;
b.多级结构字库的生成包括三个程序:字元生成与调试、字生成与调试、字库生成与调试;
字元生成与调试程序使某字元使用的各笔画号正确,并调试该字元所含的各个笔画的缩放系数、笔画在字元坐标下位置;
字生成与调试程序使字使用的各字元号正确,并调试该字所含的各个字元的缩放系数、字元在字坐标系下位置;
字库生成与调试程序对字库中的字进行修改、增删、调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 94103476 CN1032985C (zh) | 1994-04-15 | 1994-04-15 | 多级结构汉字字库及其操作系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 94103476 CN1032985C (zh) | 1994-04-15 | 1994-04-15 | 多级结构汉字字库及其操作系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1105762A CN1105762A (zh) | 1995-07-26 |
CN1032985C true CN1032985C (zh) | 1996-10-09 |
Family
ID=5031098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 94103476 Expired - Fee Related CN1032985C (zh) | 1994-04-15 | 1994-04-15 | 多级结构汉字字库及其操作系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1032985C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455503A (zh) * | 2012-05-31 | 2013-12-18 | 腾讯科技(深圳)有限公司 | 字库收集方法、网页渲染方法、装置及系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957837B (zh) * | 2010-09-08 | 2013-01-09 | 东莞电子科技大学电子信息工程研究院 | 一种笔划矢量字库的存取方法 |
CN102407683B (zh) * | 2010-09-26 | 2015-04-29 | 江门市得实计算机外部设备有限公司 | 打印机的无级变倍打印控制方法和装置 |
CN111078907A (zh) * | 2018-10-18 | 2020-04-28 | 中华图象字教育股份有限公司 | 汉字树处理方法及其装置 |
CN109358901B (zh) * | 2018-12-06 | 2023-08-25 | 深圳高通半导体有限公司 | 一种可解码点阵字库的处理器芯片及实现方法 |
-
1994
- 1994-04-15 CN CN 94103476 patent/CN1032985C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455503A (zh) * | 2012-05-31 | 2013-12-18 | 腾讯科技(深圳)有限公司 | 字库收集方法、网页渲染方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1105762A (zh) | 1995-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tan et al. | Single image tree modeling | |
WO2018049774A1 (zh) | 一种手绘图案或文字的二维码产品及其应用组件 | |
CN1040276A (zh) | 简繁字根汉字输入技术及其键盘 | |
WO2018058847A1 (zh) | 一种手绘图案或文字的彩码产品及应用组件 | |
CN1534476A (zh) | 矢量图形的标记语言和对象模型 | |
CN1032985C (zh) | 多级结构汉字字库及其操作系统 | |
CN108230236B (zh) | 数字图像自动拼版方法及数字化出版的图片拼版方法 | |
CN1698070A (zh) | 用于将二维对象转换成二维距离场的方法 | |
CN1269060C (zh) | 处理和重复使用中文古籍的方法及其所采用的计算机软硬件系统 | |
CN1908893A (zh) | 程序逻辑结构图示方法及程序路径统计方法 | |
CN1324060A (zh) | 图像编码/解码方法及其装置和记录节目的记录介质 | |
Li et al. | A human-computer interactive dynamic description method for Jiaguwen Characters | |
CN107193913A (zh) | 动画素材的搜索方法及系统 | |
JP5159588B2 (ja) | 画像処理装置、画像処理方法、コンピュータプログラム | |
JP2008171248A (ja) | 2次元コード作成システム | |
CN1110743C (zh) | 一种笔音意编码汉字的计算机输入方法 | |
Yiu et al. | Chinese character synthesis using METAPOST | |
CN1020052C (zh) | 形元汉字信息处理方法及其键盘 | |
CN1268708A (zh) | 全信息计算机汉字处理系统和实现方法 | |
CN1259615C (zh) | 字母键盘和数字键盘通用汉字输入法及其左半字形识别法 | |
CN1395195A (zh) | 东巴象形文字计算机处理技术 | |
CN1045227C (zh) | 字形数据的压缩复原方法和有关产品 | |
CN1049990C (zh) | 一种口算编码计算机汉字输入法 | |
CN101201837A (zh) | 股票、图像及其它非纯文字文件高速搜索系统 | |
CN1159637C (zh) | 形母笔与汉字的强三点构造一种多态可拼汉字书写法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C53 | Correction of patent for invention or patent application | ||
COR | Change of bibliographic data |
Free format text: CORRECT: PATENTEE; FROM: ZENG DONGCHU TO: AIDIGAOJISHUCHANYE COMPANY, HUNAN PROVINCE, 410001 |
|
CP03 | Change of name, title or address |
Address after: No. 380 East Jiefang Road, Changsha Patentee after: Hunan Eddie High Technology Industrial Company Patentee before: Zeng Dongchu |
|
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |