矢量字的硬件还原方法

文档序号:6407662阅读:572来源:国知局
专利名称:矢量字的硬件还原方法
技术领域
本发明涉及计算机及计算机外围设备的改进。
在现有汉字激光打印机的内部固化了宋体、黑体、仿宋体等四种国家标准矢量汉字字库。用户在打印汉字时,可以采用字符打印方式,直接将汉字编码发送到打印机上。与西文相比,汉字数量不仅大得多,而且字形、笔划复杂,这对汉字信息的存储提出了较高要求。
计算机中存储汉字字型的最直接的方法是采用点阵方式,与结构简单的英文字符相比,点阵汉字字模要求用较高的点阵密度来表示,最少的汉字字模点阵表示要求16×16点,字型质量稍好些的要24×24点阵。这样的点阵密度,一个汉字字模就要占用较大的存储量。六、七千个汉字的字模库存储量很大。另外对于不同的使用条件汉字字模的质量规格也有不同的要求,上述16×16、24×24点阵的汉字,属于针式打印机打印出的较低质量的汉字字模规格。若使用较高分辨率的印字机,如激光打印机,印出相同大小尺寸的汉字,则点阵规格必须相应提高。因此,需要设计32×32,40×40,48×48等点阵规格的字模。此外,需考虑几种不同点阵的字模。否则,字型放大后,笔划将有明显的锯齿,很不光滑、美观。
鉴于点阵方式字库的不足,在汉字激光打印机内部固化了四种国家标准矢量汉字库,点阵字库是将汉字字型的点阵信息按字节全部存放在存储器中。需要使用时,直接读出。
本发明的目的是提供一种矢量汉字的硬件还原方法。矢量汉字属于压缩存储,它不是直接将字型信息存储起来,而是先用压缩技术对点阵汉字信息进行压缩,压缩后的信息存入存储器。使用时是再将压缩信息还原成点阵字型,即经过一个还原过程。
下面结合附图对本发明详细描述如下

图1为矢量还原法示意2为“口”的轮廓点阵图3为“口”填充后的点阵矢量存储是一种压缩方式,使用时必须先还原成点阵字型。现有技术中,采用软件技术,由于受软件本身限制,还原速度很慢。本发明中,采用了ASIC超大规模集成电路,对128×128点阵来说,还原速度达到1000字/秒。比软件还原要快得多。
下面详细介绍矢量字的硬件还原方法矢量存储是取文字的左上角为座标原点,用一系列矢量表示汉字字型的笔划,在存储器内存储的是每一个闭合笔划圈各个拐点在128×128点阵中的座标,将这些点联接起来,便形成各个笔划的轮廓。
将矢量信息反转换成点阵信息,通常,经过以下四个步骤1.根据所要求的效果,如汉字各个方向的旋转、倾斜、立体以及空心、网纹、阴阳等,对矢量字的坐标系进行变换。
2.根据矢量字的笔划信息,在所需要大小的点阵中勾出字的轮廓。具体算法如下(1).设X方向增量为△x,Y方向增量为△y,求n,其中n是m的最小值,而m满足2m>max(|△x|,|△y|);
(2).设置循环次数初始值LOOP=2n,并令Sx=Sy=0;
(3).令Sx′=Sx+△x,Sy′=Sy+△y;
(4).中间变量Px=Sx′XOR(异或)Sx′,Py=Sy′XOR(异或)Sy(5).如果Px&(与)2n=1,则X向当前坐标值CURx=CURx+1,或者CURx=CURx-1(当△x>0时取“+”号,△x<0时取“-”号);同理如果Py&(与)2n=1,则Y向当前坐标值CURy=CURy+1,或者CURy=CURy-1(当△y>0时取“+”号,△y<0时取“-”号);
(6).循环变量LOOP=LOOP-1,当LOOP不为0时,令Sx′=Sx,Sy′=Sy,回到步骤3;
按照上述算法,结合相应硬件电路,便可以根据矢量的两个端点绘出一条逼近的直线,以便绘出各个闭合笔划的轮廓。
3.对字进行填充,即从左至右扫描,将空心的闭合笔划的轮廓填实。填充的过程是对只恢复轮廓的汉字点阵从左至右,自上而下进行扫描,第一次遇到左边界后,每个比特数翻转0→1,1→0,直至下一次再遇到边界为止。
4.将还原后的点阵信息移入页面缓冲区的相应位置,并与原有的缓冲区内容进行或运算。
经过以上四个步骤,汉字的矢量信息便可以恢复成相应的汉字点阵了。
上述算法实现于LX-OG920ASIC芯片中。矢量字坐标系的变换若要求输出一个右转90°的汉字,则先将该矢量坐标系向右旋转90°。每个笔划的矢量坐标相应旋转后,即X,Y互换,再填入新坐标系中。此时,完成了坐标系的变换本发明与现有技术相比具有以下优点1.矢量字库能实现无级缩放,放大或缩小后不会产生锯齿,笔划依旧平滑,无失真。
2.矢量字库占用的存储空间小,以宋体为例,存储一个字所占用的空间平均小于250个字节,对48×48点阵字而言,每个字要占用288个字节。此外,随着汉字字数或字号的增加,点阵方式的存储量将以指数形式增加,而矢量存储能够应付自如,存储量增加不多。例如当前大量使用的激光印字机,要求有宋、仿、黑、楷四种字体,从7号到特号15个字号的汉字,若每种字体有7000个汉字,总字数达到42万个,点阵存储大约需要100MB以上字库的存储空间。
3.矢量字库便于实现丰富的打印效果,如汉字每个方向的旋转、倾斜、立体以及空心、网纹、阴阳等,打出的字体可以适应各种排版需要。
4.矢量存储费用低,这不仅因为存储容量本身小、价格低,而且维持电路的开销比点阵存储低。
权利要求
1.一种矢量汉字的硬件还原方法,其特征在于矢量字采用压缩存储,先用压缩技术对点阵文字信息进行压缩,压缩后的信息存入存储器,使用时,再将压缩信息还原成点阵字型,即经过一个还原过程;本发明中采用了ASIC超大规模集成电路,对128×128点阵的还原速度能达到1000字/s;矢量存储是取文字的左上角为坐标的原点,用一系列矢量表示汉字字型的笔划,在存储器内存储的是每一个闭合笔划圈各个拐点在128×128点阵中的坐标,将这些点联接起来,即形成各个闭合笔划的轮廓;
2.根据权利要求1所述的矢量字的硬件还原方法,其特征在于将矢量信息反转换成点阵信息,需经过以下四个步骤(1)根据所要求的效果,如果汉字各个方向的旋转、倾斜、立体以及空心、网纹、阴阳等,对矢量字的坐标进行变换;(2)根据矢量字的笔划信息,在所需要大小的点阵中勾出字的轮廓,其具体算法如下A.设X方向增量为△x,Y方向增量为△y,求n,其中n是m的最小值,而m满足2m>max(|△x|,|△y|);B.设置循环次数初始值LOOP=2n,并令Sx=Sy=0;C.令Sx′=Sx+△x,Sy′=Sy+△y;D.中间变量Px=Sx′XOR(异或)Sx′,Py=Sy′XOR(异或)SyE.如果Px&(与)2n=1,则X向当前坐标值CURx=CURx+1,或者CURx=CURx-1(当△x>0时取“+”号,△x<0时取“-”号);同理如果Py&(与)2n=1,则Y向当前坐标值CURy=CURy+1,或者CURy=CURy-1(当△y>0时取“+”号,△y<0时取“-”号);F.循环变量LOOP=LOOP-1,当LOOP不为0时,令Sx′=Sx,Sy′=Sy,回到步骤3;按照上述算法,结合相应硬件电路,便可以根据矢量的两个端点绘出一条逼近的直线,以便描出各个闭合笔划的轮廓;(3)对字进行填充,即从左至右扫描,将空心的闭合笔划的轮廓填实。填充的过程是对只恢复轮廓的汉字点阵从左至右,自上而下进行扫描,第一次遇到边界后,每个比特数翻转0→1,1→0,直至下一次再遇到边界为止。(4)将还原后的点阵信息移入页面缓冲区的相应位置,并与原有的缓冲区内容进行或运算。经过以上四个步骤,汉字的矢量信息便可以恢复成相应的汉字点阵了。
全文摘要
一种矢量字的硬件还原方法。该方法中,矢量字采用压缩存储。先用压缩技术对点阵文字信息进行压缩,压缩后的信息存入存储器。使用时,再将压缩信息还原成点阵字型。本发明中采用了ASIC超大规模集成电路,对128×128点阵的还原速度能达到1000字/s。矢量字库能实现无级缩放,放大或缩小不会产生锯齿,笔划平滑、无失真。矢量字库占用的空间少,便于实现丰富的打印效果,存储费用低。
文档编号G06F3/12GK1105767SQ9410016
公开日1995年7月26日 申请日期1994年1月17日 优先权日1994年1月17日
发明者孙祖希, 倪光南, 徐非, 刘洪 申请人:北京联想计算机集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1