点阵字库的压缩存储方法及解压方法

文档序号:2526346阅读:398来源:国知局
专利名称:点阵字库的压缩存储方法及解压方法
技术领域
本发明涉及点阵字库的压縮存储方法,特别是一种在移动装置中使用 的点阵字库的压缩存储方法及解压方法。
背景技术
目前阶段移动装置所用到的点阵字库都是在固定区域内将某种字 体中的字逐个描绘,用点阵的方式记录每个字的写法信息。这个考虑到中文字的方块特征,通常将固定区域设置为NxN的方块区域,通过二进 制编码方式表达字形,随后逐行表达每一个点代表字符色或背景色。如 二进制编码为1,则该位对应该字符当前像素点上为字符色,反之,如 果该位为0,则该位对应该字符当前像素点上为背景色。依此方法,完 成对当前行N个像素点的绘制。再循环处理,逐行完成目标字符N行的 数据表达,也完成了当前字符加绘制。这种存储方式对于等宽的中文字 体来说是没有问题的,字形信息能够充分通过点阵表达。但是外文字形 大多宽窄各异,且数目繁多,如阿拉伯文一种字体有600多个字,越南 文一种字体有700多字,因此如果每个字都用这么大的方块点阵区域存 储,就很浪费存储空间了。请参阅图l现有技术实施例的待压縮符号'i'的点阵及其字节存 储示意图。图l是符号i的点阵信息,以及i在计算机或移动装置中的 存储方式。按照常规,取16x16的点阵表示此符号。宽高位数为16x16。在计算机或移动装置中,对于点阵信息的记录是以字节为单位的, 每8位编码由一个字节表示。如图1所示,如果二进制编码为1,则该位对应该字符当前像素点上为字符色,反之,如果该位为0,则该位对 应该字符当前像素点上为背景色。依此方法,完成对当前行N个像素点 的绘制。再循环处理,逐行完成目标字符N行的数据表达,也完成了当 前字符的绘制。如图l,字符'i'的字节存储数据为- (OxOO,OxOO,OxOO,OxOO,OxOO,OxOO,Ox01,OxO(^ OxOO,OxOO,OxOO,OxOO, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00,0x01,0x00, 0x01,0x00,0x01,0x00, Ox01,OxOO,OxOO,OxOO,OxOO,OxOO;>,每个字节为一个十六进制数,每个十六进制数代表八位二进制 数,而其中每个二进制数表示像素点的内容为字符色或背景色,因此点阵'r便通过这32个字节完整的表达了出来。可以看出,用这种方式存储外文字时,会有多余的部分用o填充,有效信息列,即字的实际宽度,有时会远小于储存该字的点阵宽度,尤 其当需要存储庞大数量的字体时,会造成存储区资源的浪费。发明内容为克服上述己有技术的不足,本发明要解决的技术问题是提供一 种点阵字库的压縮存储方法及解压方法,利用对点阵字库的转置编码方 式将点阵字库压縮存储,节省了内存区域耗费。 为解决上述技术问题,本发明的技术方案是-一种点阵字库的压縮存储方法,包括以下步骤步骤(1)在移动装置的内存中开辟一块动态存储区,用于装载所要压縮文字的点阵字库;步骤(2)把移动装置的静态存储器中所要压縮文字的点阵字库装载到所 述的动态存储区中;步骤(3)读取所述的点阵字库中第一个字的点阵信息,将这个字的点阵信息转换为矩阵形式,并存储到所述的动态存储区中;步骤(4)将步骤3中所述的矩阵进行转置变换处理,得到转置矩阵,并存储到所述的动态存储区中;步骤(5)以行为单位扫描该字的转置矩阵,记录该转置矩阵的有用行的点阵信息和有用总行数,并存储到所述的静态存储器中;步骤(6)依次将所要压縮文字的点阵字库中剩余所有字按照步骤3至步骤5的顺序,记录每个字的有用行点阵信息和每个字的有用行数,分别存储到所述的静态存储器中,所记录的行点阵信息数组便是压縮后的点阵字库;步骤(7)释放开辟的动态存储区,压縮处理完成。所述的动态存储区的大小由所要压縮文字的点阵字库生成时的点阵 字区域的大小决定。步骤3中根据所要压縮文字的宽高位信息读取所述点阵字库中字的 点阵信息。步骤3中所述的点阵信息转换为矩阵的规则为矩阵元素的行列坐标 与点阵字库中描绘字的像素色标识坐标一致。步骤3中所述的矩阵通过二维数组的形式存储在所述的动态存储区中。步骤5中所述有用行的点阵信息和有用总行数以字节方式存储。 一种与上述点阵字库的压縮存储方法对应的解压方法,包括以下步步骤(1)在移动装置的内存中开辟一块动态存储区;步骤(2)把移动装置的静态存储器中所要解压文字所在的压縮点阵字库装载到所述的动态存储区中;步骤(3)根据所要还原字在所述的压縮点阵字库中的偏移量,取得该字的压縮点阵信息,并存储在所述的动态存储区中;步骤(4)将该压縮点阵信息转换为矩阵,并迸行转置变换,将转置矩阵 存储在所述的动态存储区中;步骤(5)根据解压后的点阵信息,在移动装置显示屏上显示该字;步骤(6)释放开辟的动态存储区,解压处理完成。与现有技术相比,本发明的有益效果是1. 对于宽度不同的文字,如英文、法文、越南文等,有明显的压 縮效果,解码方便,且不损失字信息,节省内存区域耗费,提高系统性 能,节约硬件成本。2. 当显示多个外文字时,从按本发明所述方式压縮的点阵字库中依次提取某字并逐个显示时,无需对每个字的宽度进行计算或设定来排 版。因为这个压缩的点阵字库存储的就是字的有用行信息,因此恢复后 字的宽度为其实际宽度。解压恢复被压縮字库,显示指定字在液晶显示 屏上时,不改变字型,是一种无损压縮方式。3. 因为有用行信息也描述了该字的实际宽度,在移动装置中对点阵字库压縮的同时可以得到字符宽度信息。因此当显示多个字符时可以 无需重新计算此字符的宽度而确定下一个字符的位置,达到自动识别字 符宽度的作用,使得界面更加美观。将此宽度用于多个非等宽字符的排 列时,可以使非等宽字符显示的更美观。


图l是现有技术实施例的待压縮符号'i'的点阵及其字节存储示意图。图2是本发明实施例的点阵字体压縮过程示意图。图3是本发明实施例的点阵字体压縮方法流程图。图4是本发明实施例的压縮后点阵及其字节存储示意图。
具体实施方式
下面结合附图和实施例对本发明的具体实施方式
做进一步详细的说 明,但不应以此限制本发明的保护范围。请参阅图2本发明实施例的点阵字体压縮过程示意图。图2中所 描述的将点阵字库数据压縮的过程是按照索引数为顺序依次将每个字进 行压縮的。首先,按照步骤S20,取得原点阵数据。此点阵数据需要按图1中 所示的字节方式存储,或转化为由字节方式存储。接着,步骤S21,从字库中第一个字开始,按顺序压縮。第一个字 的索引数为O。步骤S22判断是否压縮结束。判断是否压縮结束的条件的方法是 方法一,判断字库下一个字节是否为字库结束标志,如或非十六进 制数字;方法二,判断该字符的索引号是否超出字库字的总数。如果前述的几个条件满足其一,则表示压縮结束,进入步骤S23, 退出程序,否则进入步骤24,进行本次循环索引字的压縮。每次循环进行某一个字的压縮。压縮结束后将索引指向下一个字, 重复步骤22 26,直至字库中所有的字都压縮结束,退出程序。在压縮的过程中,为了解压恢复点阵字的需要,需要同时记录压 縮后的点阵信息,即步骤25所做工作,包括压縮点阵和有用行数目。本发明方法具体描述请参阅图3本发明实施例的点阵字体压縮方 法流程图。本发明点阵字库的压縮存储方法,包括以下步骤 步骤(1)在移动装置的内存中开辟一块动态存储区,用于装载所要压縮 文字的点阵字库。所述的动态存储区的大小由所要压縮文字的点阵字库生成时的点阵 字区域的大小决定。足够大的内存,是通过原点阵字库生成时的点阵字区域的大小来算得的。例如,图1所示的字符i是16x16点阵,那么这 块内存就是能容纳256*整型所占字节数。推广到一般,如果点阵字符是 MxN点阵,贝U:需要开辟的内存大小=!^^整型所占字节数。其中"*"代表乘。 步骤(2)把移动装置的静态存储器中所要压縮文字的点阵字库装载到所 述的动态存储区中;步骤(3)根据所要压縮文字的宽高位信息读取所述的点阵字库中第一个 字的点阵信息,将这个字的点阵信息转换为矩阵形式,并通过二维数组 的形式将该矩阵存储在所述的动态存储区中。所要压縮文字可以通过其索引号在字库中取得。库中每个字的点 阵区域大小固定,因此取得此索引字点阵信息的方法是索引号*每个字点阵区域字节数=此索引字点阵信息开始字节处; 开始字节处+每字节区域字节数=此索引字点阵信息结束字节处。 其中每字节区域字节数也是通过原点阵字库生成时的点阵字区域的 大小来算得的。例如,图l所示的字符i是16x16点阵,由于一个字节 可以表示8位像素值,因此那么每字节区域字节数就是能容纳32个字节 点阵信息大小的内存块。又如若i是22x22点阵,22不能整除8,那么 第3个字节的多余位便又0填充,因此22x22点阵需要每字节区域字节 数为66个字节。推广到一般,如果点阵字符是MxN,贝U:如果M能被8整除,每字节区域字节数则为M*N/8,否则为(M/8+l) *N。 其中"/"代表除。将此索引字点阵信息字节开始处和结束字节处之 间的字节便是索引字的完整点阵信息。所述的点阵信息转换为矩阵的规则为矩阵元素的行列坐标与点阵字库中描绘字的像素色标识坐标一致。例如通过图1中i的点阵信息抽象 得到的矩阵为、ooooooooooooooo-0000000000000000 0000 100000000000000000000000000000001 00000000000 0000100000000000 000 0 I 00000000000 0000100000000000 0000100000000000 0000100000000000 0000100000000000 0000100000000000 0000000000000000-00 0 0000000000000扁步骧(4)将步骤3屮'^f述的矩阵进行转置变换处理,得到转置矩阵,并 存储到所述的动态存储区中;则矩阵Ai转置变换后为、00000000000 0 00(^ 00000000 0 0000000 0000000000000000 0000000000000000 0001001111111100 0000000000000000 0000000000000000 r 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 000000000000000 0' 0000000000000000 -0000000000000000-步骤(5)以行为单位扫描该字的转置矩阵,记录该转置矩阵的有用行的点阵信息和有用总行数,并以字节方式存储到静态存储器中。具体方法为从转置矩阵第一行开始,按行扫描至最后一行。记录第一个至少含有一个字的像素颜色的所在行与最后一个至少含有一个字的像素颜色所在行,*包含以上两行的信息以及以上两行之间的信息 都作为这个字的有用行信息。将这些信息以字节方式存储起来。所述的有用行点阵信息是指本行至少有一位为字符色,如果扫描 所有行都不满足上述条件,则该字符为特殊字符,其有用行数目为特殊 字符有用行数目。所述特殊字符有用行数,其值为空格、回车、换行等 特殊字符的宽度该宽度以像素为单位,按系统需要进行相应设定。例如系统采用字为22像素高,则可以设定空格为IO像素宽。对于回车、换 行等不占宽度的字符,需要设定为O像素宽。所述的有用总行数是含有 所有字符色的行数目以及特殊字符有用行数目。例如i的压縮后点阵信息的字节方式的表示为{0x12, Oxfc);有用行信息为{1}l也表明了 i的实际像素宽。请参阅图4本发明实施例的压縮后点阵及其字节存储示意图。表 示了字符i压縮后点阵和在移动装置中的字节表示。可以看到,经过压縮后,i的点阵表示字节数只有2个字节。远小 于压縮前的32个字节,从而节省了存储空间。而且压縮的过程并没有将 原有用点阵信息进行删减的变动,因此是无损压縮,恢复时会完整恢复, 不会改变字形。需要说明的是,有用行的信息对于压縮过程没有作用,但是当需 要解压、在LCD上显示出某个点阵字的时候,是需要的。 步骤(6)依次将所要压縮文字的点阵字库中剩余所有字按照步骤3至步 骤5的顺序,记录每个字的有用行点阵信息和每个字的有用行数,分别 通过数组的方式存储到静态存储器中,所记录的行点阵信息数组便是压縮后的点阵字库。所记录的行点阵信息数组便是压縮后的点阵字库。而 有用行数信息数组用于恢复所需显示字的点阵信息。将有用行的信息存储起来,并分别叠加到上一个字符压縮后的点阵信 息与有用行信息中,从而完成整个字库的压縮。步骤(7)释放开辟的动态存储区,压縮处理完成。当显示多个外文字时,从按本发明所述方式压縮的点阵字库中依 次提取某字并逐个显示时,无需对每个字的宽度进行计算或设定来排版。 因为这个压縮的点阵字库存储的就是字的有用行信息,因此恢复后字的 宽度为其实际宽度。本发明点阵字库的压縮存储方法对应的解压方法,包括以下步骤 步骤(1)在移动装置的内存中开辟一块动态存储区;步骤(2)把移动装置的静态存储器中的所要解压文字所在的压縮点阵字 库装载到所述的动态存储区中;步骤(3)根据所要还原字在所述的压縮点阵字库中的偏移量,取得该字 的压縮点阵信息,并存储在所述的动态存储区中;步骤(4)将该压縮点阵信息转换为矩阵,并进行转置变换,将转置矩阵 存储在所述的动态存储区中;步骤(5)根据解压后的点阵信息,在移动装置显示屏上显示该字; 步骤(6)释放开辟的动态存储区,解压处理完成。本发明解压方法只恢复字的有用点阵信息来完成单字的显示。使用这 种方式的优势在于,当多个字依次并排显示时,可以无需计算字实际宽 度来排版并确定下一个字的具体位置。本发明点阵字库的压縮方法,应用于手机等移动设备字库的存储,对 于非等宽文字,如英文、法文、越南文等,有明显的压縮效果,且恢复 时不改变字型,是一种无损压縮方式。以上所述仅为本发明的较佳实施例而己,并非用来限定本发明的实施 范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应为 本发明的技术范畴。
权利要求
1. 一种点阵字库的压缩存储方法,其特征在于,包括以下步骤步骤(1)在移动装置的内存中开辟一块动态存储区,用于装载所要压缩文字的点阵字库;步骤(2)把移动装置的静态存储器中所要压缩文字的点阵字库装载到所述的动态存储区中;步骤(3)读取所述的点阵字库中第一个字的点阵信息,将这个字的点阵信息转换为矩阵形式,并存储到所述的动态存储区中;步骤(4)将步骤3中所述的矩阵进行转置变换处理,得到转置矩阵,并存储到所述的动态存储区中;步骤(5)以行为单位扫描该字的转置矩阵,记录该转置矩阵的有用行的点阵信息和有用总行数,并存储到所述的静态存储器中;步骤(6)依次将所要压缩文字的点阵字库中剩余所有字按照步骤3至步骤5的顺序,记录每个字的有用行点阵信息和每个字的有用行数,分别存储到所述的静态存储器中,所记录的行点阵信息数组便是压缩后的点阵字库;步骤(7)释放开辟的动态存储区,压缩处理完成。
2、 根据权利要求1所述的点阵字库的压縮存储方法,其特征在于所述的 动态存储区的大小由所要压縮文字的点阵字库生成时的点阵字区域的大 小决定。
3、 根据权利要求l所述的点阵字库的压縮存储方法,其特征在于步骤3 中根据所要压縮文字的宽高位信息读取所述点阵字库中字的点阵信息。
4、 根据权利要求1所述的点阵字库的压縮存储方法,其特征在于步骤3 中所述的点阵信息转换为矩阵的规则为矩阵元素的行列坐标与点阵字库 中描绘字的像素色标识坐标一致。
5、 根据权利要求1所述的点阵字库的压縮存储方法,其特征在于步骤3 中所述的矩阵通过二维数组的形式存储在所述的动态存储区中。
6、 根据权利要求1所述的点阵字库的压縮存储方法,其特征在于步骤5 中所述有用行的点阵信息和有用总行数以字节方式存储。
7、 一种与上述权利要求1 6所述的点阵字库的压縮存储方法对应的解 压方法,其特征在于包括以下步骤-步骤(1)在移动装置的内存中开辟一块动态存储区;步骤(2)把移动装置的静态存储器中所要解压文字所在的压縮点阵字库装载到所述的动态存储区中;步骤(3)根据所要还原字在所述的压縮点阵字库中的偏移量,取得该字 的压縮点阵信息,并存储在所述的动态存储区中;步骤(4)将该压縮点阵信息转换为矩阵,并进行转置变换,将转置矩阵 存储在所述的动态存储区中;步骤(5)根据解压后的点阵信息,在移动装置显示屏上显示该字; 步骤(6)释放开辟的动态存储区,解压处理完成。
全文摘要
本发明公开了一种点阵字库的压缩存储方法,包括以下步骤步骤(1)在移动装置的内存中开辟一块动态存储区;步骤(2)把所要压缩文字的点阵字库装载到所述的动态存储区中;步骤(3)读取所述的点阵字库中第一个字的点阵信息,将这个字的点阵信息转换为矩阵形式,并存储到所述的动态存储区中;步骤(4)将矩阵进行转置变换处理,得到转置矩阵;步骤(5)记录该转置矩阵的有用行的点阵信息和有用总行数;步骤(6)依次处理剩余所有字;步骤(7)释放开辟的动态存储区,压缩处理完成。本发明是一种能够节省内存区域耗费,提高系统性能的无损压缩方式。
文档编号G09G5/22GK101266775SQ20081003663
公开日2008年9月17日 申请日期2008年4月25日 优先权日2008年4月25日
发明者左云霞 申请人:嘉兴闻泰通讯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1