一种笔划矢量字库的存取方法

文档序号:6331667阅读:265来源:国知局
专利名称:一种笔划矢量字库的存取方法
技术领域
本发明属于中文计算机系统中的字库构造技术领域,更为具体地讲,涉及一种适 合于移动终端的笔划矢量字库的存取方法。
背景技术
字库是用于存储文字信息的数据结构,其所占空间大小与文字存储原理、字数量 以及字库存储结构有很大关系。从存储原理上来说,文字可以分为点阵字体和矢量字体两 种。点阵字体的存储原理是每一个字对应于一个N*N的网格,按照汉字字形,设置网 格中每一个小格对应的灰度信息用于显示,点阵字体的优点是渲染速度快,缺点是相应字 库体积大,而且不同的字体大小也需对应于不同的字库,如果想存储更多的灰度信息用于 反走样显示,则需要更大的存储空间。一般在较为低端的移动终端上,使用较多的是12*12、 20*20的点阵字体字库。矢量字体存储的是汉字笔画的位置信息,矢量字体的优点是可以任意缩放,即一 种字形只需要一个矢量字库,节省了存储空间,但是因为涉及到大量的数学计算以及多边 形填充,渲染速度慢。矢量字体又可以划分为两种,一种是轮廓矢量字体(Outline Font, 以下简称轮廓字体),一种是笔划矢量字体(StrokeFont,以下简称笔划字体),前者的主要 代表是微软的TrueType字体和Adobe的OpenType字体,其中TrueType字体使用了 2次贝 塞尔曲线来描述文字的形状,OpenType则在兼容TrueType的基础上采用了 3次贝塞尔曲 线来描述文字的形状,更加美观。而笔划字体的主要代表如美国BitStream公司的字体和 日本的三菱公司的字体。轮廓字体的主要特点是将文字看成一个或多个封闭的图形区域组 成,记录每个区域的轮廓信息,用于文字显示和处理,轮廓字体可以对文字实现填充(Fill) 和描边(Stroke)操作。笔划字体的主要特点是记录文字的主要骨架信息而不是轮廓信息, 笔划字体只能对文字实现描边操作,而且笔划字体中各笔划一般具有等宽特性。图1是轮 廓字体和笔划字体的对比图,左边的为笔画字体,右边的为轮廓字体,从图1可见,轮廓字 体需要存储更多的信息。图2是有衬线字体(serif)与无衬线字体(sans serif)的对比图。移动终端分 辨率低,处理速度慢,轮廓字体在移动终端上使用会带来字库文件过大,渲染速度慢,文字 显示细节丢失的问题;而一些设计简单且数据量小的无衬线(sans serif)笔划字体更适 合于移动终端的使用。但是即使使用笔划字体作为移动终端的字库,其体积也不小,例如一个GB2312的 仿宋体无衬线笔划字体字库也有约IM左右的大小,在一些资源极端受限的终端上仍然存 在适用性的问题。

发明内容
本发明的目的在于克服现有检测方法的不足,提出一种体积小、适合于移动终端的笔划矢量字库的存取方法。为实现上述发明目的,本发明笔划矢量字库的存取方法,其特征在于,包括以下步 骤(1)、笔划矢量字库的存储al、建立汉字组件矢量信息数据库,将各汉字组件在给定坐标系下的坐标信息存 储在汉字组件矢量信息数据库中;a2、建立汉字结构信息库,将各个汉字的结构信息存储在汉字结构信息库中;汉字 的结构信息包括组成汉字的各个组件在汉字组件矢量信息数据库中的偏移量以及每个组 件在该汉字中的坐标转换矩阵;a3、建立汉字索引表,汉字索引表根据汉字编码给出每个汉字的结构信息在汉字 结构信息库中的位置;汉字索引表、汉字结构信息库、汉字组件矢量信息数据库组成笔划矢量字库文件 存储于移动终端的ROM中;(2)笔划矢量字库的读取字体引擎将笔划矢量字库文件读取到RAM中,首先根据输入汉字的编码,检索汉 字索引表获得其在汉字结构信息库中的位置,然后,在汉字结构信息库找到其结构信息,并 根据其结构信息计算出组成该汉字的各汉字组件在该汉字中的位置bl、根据组件在汉字组件矢量信息数据库中的偏移量,找到该组件在给定坐标系 下的坐标信息;b2、根据组件在该汉字中的坐标转换矩阵对该组件在给定坐标系下的坐标信息进 行转换,得到该组件实际的坐标信息并记录;b3、重复步骤1 2,得到组成该汉字的各汉字组件的实际坐标信息,根据这些实 际坐标信息将该汉字渲染在显示屏幕上。本发明的发明目的是这样实现的在本发明中,由于只存储了汉字组件在给定坐标系下的坐标信息以及坐标转换矩 阵,而根据国家颁布的《信息处理用GB13000. 1字符集汉字部件规范》只有约560个汉字 组件,共分393组,囊括了 GB13000-1中的所有汉字的组成部件,这远比存储各个汉字的坐 标信息小得多。从原理上看来,本发明的笔划矢量字库的存取方法会比直接存储汉字矢量 数据方式,即坐标信息的字库渲染速度慢些,但是字库大小成倍的减小,使字库载入RAM成 为了可能,渲染速度反而比读取ROM中的大字库信息要快上许多,因此,适合于移动终端使 用。作为进一步的改进,在汉字组件矢量信息数据库中,所述的汉字组件在给定坐标 系下的坐标信息只记录了组件用直线段描述的关键数据点坐标值,即认为组件仅由直线段 组成,不包含曲线描述,这样虽然在一些细节上有所损失,但是提高了文字笔划轮廓化计算 和渲染的速度。汉字组件可以通过直线段加贝塞尔或者其他曲线描述,对于轮廓字体是这样,对 于笔划字体亦然,但是采用贝塞尔曲线的描述的笔划在最后渲染的时候必须经过曲线拟合 成为一定数量的坐标点,这里面会涉及到浮点数的运算,浮点运算对于移动终端来说并不 是长项,可能会影响渲染速度;另一方面,移动终端屏幕分辨率不大,大字号的文字使用频率不高,贝塞尔曲线的艺术性在移动终端上不能得到充分的体现。因此,做出上述改进。


图1是轮廓字体和笔划字体的对比图;图2是有衬线字体与无衬线字体的对比图;图3是本发明笔划矢量字库的存取方法一种具体实施方式
下的索引表结构图;图4是本发明笔划矢量字库的存取方法一种具体实施方式
下的汉字结构信息存 储结构图;图5是图4所示坐标转换矩阵中的缩放参数结构图;图6是图4所示坐标转换矩阵中的平移参数结构图;图7是NORMAL类、XONLY类及YONLY类坐标格式结构图;图8是DELTA类坐标格式结构图;
图9是DELTA_CNT数据的结构图。
具体实施例方式下面结合附图对本发明的具体实施方式
进行描述,以便本领域的技术人员更好地 理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许 会淡化本发明的主要内容时,这些描述在这里将被忽略。实施例(1)、笔划矢量字库的存储图3是本发明笔划矢量字库的存取方法一种具体实施方式
下的索引表结构图。在本实施例中,汉字索引表位于笔划矢量字库文件的开始部分。如图3所示,汉字 索引表中一个汉字的索引包括5个字节,前两个字节表示文字的汉字编码,在本实施例中, 采用统一码,即UNICODE编码,后3个字节表示该汉字的结构信息在汉字结构信息库中的偏 移量,即汉字结构信息库中的位置。图4是本发明笔划矢量字库的存取方法一种具体实施方式
下的汉字结构信息存 储格式。一个汉字由一个或多个汉字组件构成,在本实施例中,汉字的结构信息包括该汉 字的组件个数、各个组件的坐标转换矩阵以及在汉字组件矢量信息数据库中的偏移量。图 4所示的为一条汉字结构信息的存储格式,组件个数为N,占1个字节,后续数据由每个组件 在该汉字中的坐标转换矩阵和在汉字组件矢量信息数据库中的偏移量组成。坐标转换矩阵即几何图形的二维变换矩阵,用于计算图形在给定坐标系内的平 移,旋转,缩放效果。在本实施例中,我们舍弃了旋转效果,因为在构建汉字时,几乎没有需 要旋转汉字组件的情况,所以,在本实施例中,坐标转换矩阵M如下
权利要求
一种笔划矢量字库的存取方法,其特征在于,包括以下步骤(1)、笔划矢量字库的存储a1、建立汉字组件矢量信息数据库,将各汉字组件在给定坐标系下的坐标信息存储在汉字组件矢量信息数据库中;a2、建立汉字结构信息库,将各个汉字的结构信息存储在汉字结构信息库中;汉字的结构信息包括组成汉字的各个组件在汉字组件矢量信息数据库中的偏移量以及每个组件在该汉字中的坐标转换矩阵;a3、建立汉字索引表,汉字索引表根据汉字编码给出每个汉字的结构信息在汉字结构信息库中的位置;汉字索引表、汉字结构信息库、汉字组件矢量信息数据库组成笔划矢量字库文件存储于移动终端的ROM中;(2)笔划矢量字库的读取字体引擎将笔划矢量字库文件读取到RAM中,首先根据输入汉字的编码,检索汉字索引表获得其在汉字结构信息库中的位置,然后,在汉字结构信息库找到其结构信息,并根据其结构信息计算出组成该汉字的各汉字组件在该汉字中的位置b1、根据组件在汉字组件矢量信息数据库中的偏移量,找到该组件在给定坐标系下的坐标信息;b2、根据组件在该汉字中的坐标转换矩阵对该组件在给定坐标系下的坐标信息进行转换,得到该组件实际的坐标信息并记录;b3、重复步骤1~2,得到组成该汉字的各汉字组件的实际坐标信息,根据这些实际坐标信息将该汉字渲染在显示屏幕上。
2.根据权利要求1所述的笔划矢量字库的存取方法,其特征在于,在汉字组件矢量信 息数据库中,所述的汉字组件在给定坐标系下的坐标信息只记录了组件用直线段描述的关 键数据点坐标值。
3.根据权利要求2所述的笔划矢量字库的存取方法,其特征在于,所述的关键数据点 坐标值用NORMAL类、XONLY类、YONLY类、DELTA类进行描述NORMAL类含有坐标完整的χ值与y值信息,用连续的2个字节表示;XONLY类坐标仅含 有χ值,用一个字节表示,其ι值与上一个坐标的y值一样;YONLY类坐标仅含有y值,用一 个字节表示,其χ值与上一个坐标的χ值一样;若当前坐标与上一个坐标的差别很小时,用 DELTA类坐标表示,DELTA坐标用一个字节表示;除DLETA类坐标外,其他3类坐标每个字节的高2位均为标志位,分别记做MSB标志位 和NEXT标志位,其余位为坐标值;DLETA类坐标的最高位为Δ χ标志位,表明X轴上坐标偏 移方向,随后三个字节偏移值Δχ,再后一个字节为Ay标志位,表明Y轴上坐标偏移方向, 随后三个字节偏移值Δ y ;组件关键数据点坐标值记录遵守以下一些规则,描述如下alOl、每个汉字组件由一个或多个连续线段组成,每个连续线段由开始、结束坐标点以 及中间一系列相邻的坐标点组成;al02、每个连续线段的起始必须是一个NORMAL类坐标; al03、若当前坐标为NORMAL时,即坐标表示为χ值和y值1)、如果X,y的NEXT标志均为1,则下一个坐标为DELTA类;2)、如果χ的NEXT标志为1,y的NEXT标志为0,则下一个坐标为XONLY类;3)、如果χ的NEXT标志为0,y的NEXT标志为1,则下一个坐标为YONLY类;4)、如果X,y的NEXT标志均为0,则下一个坐标仍为NORMAL类; al04、若当前坐标为XONLY时,即仅含有χ值如果χ的NEXT标志为1,则下一个坐标为YONLY类; 2)、如果χ的NEXT标志为0,则下一个坐标为NORMAL类; al05、当前坐标为YONLY时,即仅含有y 1)、如果y的NEXT标志为1,则下一个坐标为XONLY类。2)、如果y的NEXT标志为0,则下一个坐标为NORMAL类。al06、在判断了 NORMAL类坐标后面接DELTA坐标时,NORMAL类坐标后为一个字节的 数据DELTA_CNT,表明将要连续出现的DELTA类坐标的个数,然后再接DELTA类坐标;数据 DELTA_CNT的最高位为MSB标志位,其余表示连续出现的DELTA类坐标的个数。 al07、MSB标志位1)、作为该汉字组件结束标志将这个组件的最后一个连续线段的第一个坐标点(X, y)的y坐标的MSB标志位置1 ;2)、作为该汉字组件中某个连续线段的结束标志在这个连续线段的最后一个坐标χ 或y的MSB标志位置1 ;如果一个连续线段是以一系列的DELTA类坐标结束,则连续线段的 结束标志放在这一系列的DELTA坐标的DELTA_CNT数据的MSB标志位上。
4.根据权利要求1所述的笔划矢量字库的存取方法,其特征在于,所述的坐标转换矩 阵M为
5.根据权利要求4所述的笔划矢量字库的存取方法,其特征在于,所述的缩放参数Sx 采用1个字节表示,其中高字节最高位为0的话表示该组件在Y坐标轴方向上的缩放比例 与在X坐标轴方向上的缩放比例相同,若此位为1的话则下一个参数为在Y轴上的缩放参 数Sy,也为1个字节,且其高字节最高位为0 ;缩放参数民、\字节的次高位表示缩放比例的 整数部分,余下6位用于表示缩放比例的小数部分。
全文摘要
本发明公开了一种笔划矢量字库的存取方法,由于只存储了汉字组件在给定坐标系下的坐标信息以及坐标转换矩阵,而根据国家颁布的《信息处理用GB13000.1字符集汉字部件规范》只有约560个汉字组件,共分393组,囊括了GB13000-1中的所有汉字的组成部件,这远比存储各个汉字的坐标信息小得多。从原理上看来,本发明的笔划矢量字库的存取方法会比直接存储汉字矢量数据方式,即坐标信息的字库渲染速度慢些,但是字库大小成倍的减小,使字库载入RAM成为了可能,渲染速度反而比读取ROM中的大字库信息要快上许多,因此,适合于移动终端使用。
文档编号G06F17/30GK101957837SQ201010276360
公开日2011年1月26日 申请日期2010年9月8日 优先权日2010年9月8日
发明者丘志杰, 姜帆 申请人:东莞电子科技大学电子信息工程研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1