一种点阵字库生成方法、查询方法及对应的装置与流程

文档序号:12666788阅读:204来源:国知局
一种点阵字库生成方法、查询方法及对应的装置与流程

本发明涉及计算机技术领域,特别涉及点阵字库生成方法、查询方法及对应的装置。



背景技术:

随着人们生活水平的不断提高,人们对嵌入式电子产品的显示功能提出了更高的要求。矢量字体相比于点阵字体具有可以无限放大又不失真的优点,但是矢量字体包含的信息多,占用的空间大,显示的速度慢,而绝大多数的嵌入式电子产品的系统资源相对有限,导致矢量字体没有在嵌入式电子产品中没有得到广泛的应用。使矢量字体在点阵屏上显示已经成为了研发人员的研究重点。

但是现有的点阵字库只能实现准确、快速显示英文字符,因为对于一个英文字库来说,包含字符数很少,索引信息也小。而一种矢量字体包含的字符几万,字库的索引信息量非常大。在上位机写程序时,由于电脑的内存很大,弊端体现不出来;但是在移动设备上,由于内存有限,如果直接调用这些索引信息,将会导致微处理器的内存不够用,给项目带来风险,所以至今无法实现矢量字体的实时、快速显示。



技术实现要素:

本发明提供了一种点阵字库生成方法、查询方法及对应的装置,以解决现有技术中无法将矢量字体在点阵屏上显示,以及在字库索引过程中系统资源损耗严重,导致无法准确、快速的查询点阵库信息的难题。

根据本发明的一个方面,提供了一种点阵字库生成方法,该方法包括:

将矢量字体转换成位图集合和字符索引文件;所述字符索引文件包括所有字符的索引信息,每个字符的索引信息包括所述字符的单一码;

根据所述字符索引文件生成点阵字库的二级索引信息;

根据字符的单一码将所有字符分成多个分区,处于每个分区内的字符的单一码连续,每个分区的结构体信息仅包括开始字符的单一码和结束字符单一码;将所有分区的结构体信息合并在一起生成点阵字库的一级索引信息;

根据所述一级索引信息和所述二级索引信息生成点阵字库文件头;

根据所述点阵字库的文件头、所述一级索引信息、所述二级索引信息和所述位图集合生成点阵字库。

根据本发明的另一个方面,提供了一种点阵字库查询方法,该方法包括:

将如上所述的生成点阵字库的方法生成的点阵字库存储在外部存储器中;

根据所述点阵字库文件头中的一级索引信息的开始地址,将所述点阵字库中的所述一级索引信息读入到内存中;

根据待查询字符的单一码,查询读入到内存中的所述一级索引信息,获取所述待查询字符所在分区,根据所在分区的开始字符的单一码和结束字符单一码计算出所述待查询字符在所在分区的分区位置;

根据所述点阵字库文件头中的二级索引信息的开始地址,查询存储在外部存储器中的所述二级索引信息,根据所述待查询字符在所在分区的分区位置,获取所述待查询字符的二级索引信息;

根据所述待查询字符的二级索引信息,查询所述位图集合,获取所述待查询字符的位图。

根据本发明的再一个方面,提供了一种点阵字库生成装置,该装置包括:

矢量字体转换单元,适于将矢量字体转换成位图集合和字符索引文件;所述字符索引文件包括所有字符的索引信息,每个字符的索引信息包括所述字符的单一码;

二级索引信息生成单元,适于根据所述字符索引文件生成点阵字库的二级索引信息;

一级索引信息生成单元,适于根据字符的单一码将所有字符分成多个分区,处于每个分区内的字符的单一码连续,每个分区的结构体信息仅包括开始字符的单一码和结束字符单一码;将所有分区的结构体信息合并在一起生成点阵字库的一级索引信息;

点阵字库文件头生成单元,适于根据所述一级索引信息和所述二级索引信息生成点阵字库文件头;

点阵库生成单元,适于根据所述点阵字库的文件头、所述一级索引信息、所述二级索引信息和所述位图集合生成点阵字库。

根据本发明的又一个方面,提供了一种点阵字库查询装置,该装置包括:

外部存储单元,适于将如上所述的生成点阵字库的装置生成的点阵字库存储在外部存储器中;

内存读入单元,适于根据所述点阵字库文件头中的一级索引信息的开始地址,将所述点阵字库中的所述一级索引信息读入到内存中;

一级索引查询单元,适于根据待查询字符的单一码,查询读入到内存中的所述一级索引信息,获取所述待查询字符所在分区,根据所在分区的开始字符的单一码和结束字符单一码计算出所述待查询字符在所在分区的分区位置;

二级索引查询单元,适于根据所述点阵字库文件头中的二级索引信息的开始地址,查询存储在外部存储器中的所述二级索引信息,根据所述待查询字符在所在分区的分区位置,获取所述待查询字符的二级索引信息;

位图获取单元,适于根据所述待查询字符的二级索引信息,查询所述位图集合,获取所述待查询字符的位图。

本发明的有益效果:

本发明的点阵库生成方法,首先,将矢量字体转换成位图集合和字符索引文件;然后,根据字符索引文件生成点阵字库的二级索引信息,并根据字符的单一码将所有字符分成多个分区,生成所含信息量极少的一级索引,进而根据一级索引信息、二级索引信息和位图集合生成点阵字库。该方法实现了基于矢量字体的点阵库的生成,同时保证了在索引字库时能够降低系统能源消耗。

本发明的点阵库查询方法,将生成的点阵字库存储在外部存储器中。在点阵字库索引过程中,只将信息量极少的一级索引读入到内存中,大大减少了系统的资源能耗;同时通过字符的单一码,就可以通过一级索引查询存储在外部存储器的字符的二级索引信息,根据该字符的二级索引信息就可以查询字符的点阵信息,实现矢量字体的点阵显示,加快了点阵字库的查询速度,增强了用户体验。

综上所述,本发明点阵库生成方法和点阵库查询方法,实现了基于矢量字体的点阵库生成和基于矢量字体的点阵字库的快速查询,降低了系统资源能耗,有助于提升嵌入式电子产品的性能,可以广泛应用于资源有限的嵌入式电子产品中,市场前景广阔。

附图说明

图1是本发明一个实施例的一种点阵字库生成方法的流程图;

图2是本发明一个实施例的一种矢量字体的一张位图示意图;

图3是本发明一个实施例的一种矢量字体的字符索引文件的示意图;

图4是本发明一个实施例的一种查询到某字符的位图的示意图;

图5是本发明一个实施例的点阵字库生成方法生成的二级索引的示意图;

图6是本发明一个实施例的点阵字库生成方法生成的一级索引的示意图;

图7是本发明一个实施例的点阵字库生成方法生成的点阵字库的文件头的示意图;

图8是本发明一个实施例的点阵字库生成方法生成的点阵字库的文件的示意图;

图9是本发明一个实施例的一种点阵字库查询方法的流程图;

图10是本发明一个实施例的一种点阵字库生成装置的示意图;

图11是本发明一个实施例的一种点阵字库生成装置的点阵库文件头生成单元的示意图;

图12是本发明一个实施例的一种点阵字库查询的装置的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明的整体思路是:首先,将矢量字体转换成位图集合和字符索引文件;然后,根据字符索引文件生成点阵字库的二级索引信息,并根据每个字符的单一码生成一级索引,进而根据一级索引信息、二级索引信息和位图集合生成点阵字库,将生成的点阵字库存储在外部存储器中。在点阵字库索引过程中,只将一级索引读入到内存中,大大减少了系统的资源能耗;而且,只要知道字符的单一码,就可以通过一级索引查询字符的二级索引信息,根据该字符的二级索引信息就可以查询字符的点阵信息,实现矢量字体的点阵显示,加快了点阵字库的查询速度,增强了用户体验。

实施例一

图1是本发明一个实施例的一种点阵字库生成方法的流程图,参见图1,该方法包括:

步骤S110,将矢量字体转换成位图集合和字符索引文件;所述字符索引文件包括所有字符的索引信息,每个字符的索引信息包括所述字符的单一码;

步骤S120,根据所述字符索引文件生成点阵字库的二级索引信息;

步骤S130,根据字符的单一码将所有字符分成多个分区,处于每个分区内的字符的单一码连续,每个分区的结构体信息仅包括开始字符的单一码和结束字符单一码;将所有分区的结构体信息合并在一起生成点阵字库的一级索引信息;

步骤S140,根据所述一级索引信息和所述二级索引信息生成点阵字库文件头;

步骤S150,根据所述点阵字库的文件头、所述一级索引信息、所述二级索引信息和所述位图集合生成点阵字库。

通过图1所示的方法,生成的点阵字库实现了只要知道字符的单一码就可以查询该字符的点阵信息,进行矢量字体的点阵显示,降低了嵌入式系统的资源能耗,加快了点阵字库的查询速度,增强了用户体验。

在本发明的一个实施例中,在步骤S110中,每个字符的索引信息除了包括所述字符的单一码,还包括字符在位图集合中的页、X坐标、Y坐标、宽度、高度、X轴偏移、Y轴偏移和步进值的信息。

需要说明的是每个字符索引信息中的“页”代表的是该字符在位图集合中的哪一张位图上,“X坐标和Y坐标”代表该字符在这张位图上的具体位置,“宽度和高度”代表该字符在位图上的宽度和高度。只要知道字符的“页、X坐标、Y坐标、宽度、高度”,就可以查询该字符的位图。

由此可知,只要查到字符的索引信息,就可以查到字符的位图,实现该字符的点阵显示,方便了字符的查询。

为使本发明的方案更加清楚,下面结合一个具体的例子进行说明。在一个具体的例子中,假设一种矢量字体是“微软雅黑”,将“微软雅黑”转换为位图集合(图2为位图集合中的一个位图的示意图,则位图集合包含多个如图2所示的位图)和一个字符索引文件(如图3所示),根据该字符索引文件生成点阵字库的二级索引,需要说明的是,字符索引文件中的每一条记录,就是一个字符的索引信息。每一个字符的索引信息包括单一码、页、X坐标、Y坐标、宽度、高度、X轴偏移、Y轴偏移、步进值。如图7所示,图5是本发明一个实施例的点阵字库生成方法生成的二级索引的示意图。

图6是本发明一个实施例的点阵字库生成方法生成的一级索引的示意图,如图6所示,将字符索引文件中的所有字符的单一码提取出来,因为很多字符的单一码是连续的,将所有的字符根据它们的单一码分区,连续单一码字符为一个区。相邻的所有字符的一个分区结构体包含开始单一码和结束单一码。将所有的分区结构体合在一起,构成了字库的一级索引。由此可见,一级索引信息包含的信息量非常少,但是足以根据一个字符的单一码就可以判断出该字符在二级索引中的具体位置,进而查询该字符的二级索引信息。

图7是本发明一个实施例的点阵字库生成方法生成的点阵字库的文件头的示意图,如图7所示,在步骤S140中,为了在点阵字库索引过程中,可以准确、快速的将一级索引读入到内存中,同时为了准确、快速地查询字符的二级索引信息,在生成字库文件头时,将一级索引信息的开始地址和二级索引信息的开始地址存入到点阵字库的文件头中;而且在生成点阵库的文件头时,可以对点阵字库的字库名称和版本信息进行自定义,从而生成点阵库的文件头。由此可知,生成点阵库文件头是为了方便点阵字库的查询,提升点阵字库的查询速度。而且对于点阵字库的字库名称和版本信息,用户可自定义,使本发明更具人性化,提升了用户体验。

图8是本发明一个实施例的点阵字库生成方法生成的点阵字库的文件的示意图,如图8所示,字库点阵数据就是矢量字体生成的位图集合,生成的点阵字库文件包括点阵字库的文件头、一级索引信息、二级索引信息和位图集合,其中字库点阵数据就是矢量字体生成的位图集合,将生成的点阵字库存储在外部存储器中,在点阵字库索引的过程中,只将一级索引读入内存即查到字符的位图,所以生成的点阵字库极大地节约了系统资源能耗,极其适合应用于内存较小的嵌入式设备中,可实现快速、准确点阵字库的查询,进而大幅度提升嵌入式设备的性能。

实施例二

图9是本发明一个实施例的一种点阵字库查询方法的流程图,参见图11,该方法包括:

S910步骤,将如上所述的生成点阵字库的方法生成的点阵字库存储在外部存储器中;

S920步骤,根据所述点阵字库文件头中的一级索引信息的开始地址,将所述点阵字库中的所述一级索引信息读入到内存中;

S930步骤,根据待查询字符的单一码,查询读入到内存中的所述一级索引信息,获取所述待查询字符所在分区,根据所在分区的开始字符的单一码和结束字符单一码计算出所述待查询字符在所在分区的分区位置;

S940步骤,根据所述点阵字库文件头中的二级索引信息的开始地址,查询存储在外部存储器中的所述二级索引信息,根据所述待查询字符在所在分区的分区位置,获取所述待查询字符的二级索引信息;

S950步骤,根据所述待查询字符的二级索引信息,查询所述位图集合,获取所述待查询字符的位图。

由此可知,将上述生成的点阵字库存储在外部存储器中,降低了系统资源能耗;而且在点阵字库索引过程中,只是将包含少量数据的一级索引读入到内存中,进一步降低了系统资源能耗,保证了系统的快速运行;而且只要知道字符的单一码,就可以通过一级索引查询字符的二级索引信息,根据该字符的二级索引信息就可以查询字符的点阵信息,实现矢量字体的点阵显示,加快了点阵字库的查询速度,增强了用户体验。

为使本发明的方案更加清楚,下面结合一个具体的例子进行说明。在一个具体的例子中,假如要在屏幕上显示一个字符,已知字符的单一码是c,根据一级索引查找到该字符的分区是x,可以先求出该字符在所有字符中的位置。该位置=分区1字符数+分区2字符数+……+分区(x-1)字符数+(c-分区x开始单一码)。如果要在屏幕上显示字符“H”,已知“H”的单一码是72,查询一级索引的分区包括(32,35)、(53,59)、(67,74)和(81,84),查到“H”在一级索引的第3个分区,则计算出“H”在二级索引中的第17个位置,查询存储在外部存储器中的二级索引,查询“H”的二级索引信息为“charid=72x=62y=75width=14height=24xoffset=0yoffset=0xadvance=14page=0chnl=15”,通过“H”的二级索引信息,其中“page=0”说明“H”在位图0_0.bmp(图2所示)中,其中,“x=62y=75”表示“H”字符位于图2中的(62,75)的位置,“width=14height=24”表示“H”字符的在图2中宽度是14,高度是24,根据这些内容,就可以从字库点阵数据中查找字符“H”,二级索引其余的内容暂时不做考虑。打开图2,将图2中的(62.75)作为起始点,(62+14,75+24)作为终点的这块长方形区域截取出来如图4所示(图4是本发明一个实施例的一种查询到某字符的位图的示意图),复制到屏幕上,实现字符“H”的点阵显示。

实施例三

图10是本发明一个实施例的一种点阵字库生成装置的示意图,参见图10,该装置1000包括:

矢量字体转换单元1010,适于将矢量字体转换成位图集合和字符索引文件;所述字符索引文件包括所有字符的索引信息,每个字符的索引信息包括所述字符的单一码;

二级索引信息生成单元1020,适于根据所述字符索引文件生成点阵字库的二级索引信息;

一级索引信息生成单元1030,适于根据字符的单一码将所有字符分成多个分区,处于每个分区内的字符的单一码连续,每个分区的结构体信息仅包括开始字符的单一码和结束字符单一码;将所有分区的结构体信息合并在一起生成点阵字库的一级索引信息;

点阵字库文件头生成单元1040,适于根据所述一级索引信息和所述二级索引信息生成点阵字库文件头;

点阵库生成单元1050,适于根据所述点阵字库的文件头、所述一级索引信息、所述二级索引信息和所述位图集合生成点阵字库。

需要说明的是,所述每个字符的索引信息除了包括所述字符的单一码,还包括所述字符在所述位图集合中的页、X坐标、Y坐标、宽度、高度、X轴偏移、Y轴偏移和步进值的信息。

在本发明的一个实施例中,图11是本发明一个实施例的一种点阵字库生成装置的点阵库文件头生成单元的示意图,参见图11,该点阵库文件头生成单元1100包括:

开始地址获取模块1110,适于获取所述一级索引信息的开始地址和所述二级索引信息的开始地址;

名称和版本获取模块1120,适于获取用户确定出的所述点阵字库的字库名称和版本信息;

文件头生成模块1130,适于基于所述字库名称、版本信息、所述一级索引信息的开始地址和所述二级索引信息的开始地址生成点阵字库文件头。

其中,生成的点阵字库应用于嵌入式设备中。

需要说明的是本实施例的这种生成点阵字库的装置的工作过程是和前述生成点阵字库的方法的实现步骤相对应的,因此,本实施例的生成点阵字库的装置的具体工作过程可以参见前述生成点阵字库的方法部分的相关说明,在此不再赘述。

实施例四

图12是本发明一个实施例的一种点阵字库查询装置的示意图,参见图12,该装置1200包括:

外部存储单元1210,适于将上述的生成点阵字库的装置生成的点阵字库存储在外部存储器中;

内存读入单元1220,适于根据所述点阵字库文件头中的一级索引信息的开始地址,将所述点阵字库中的所述一级索引信息读入到内存中;

一级索引查询单元1230,适于根据待查询字符的单一码,查询读入到内存中的所述一级索引信息,获取所述待查询字符所在分区,根据所在分区的开始字符的单一码和结束字符单一码计算出所述待查询字符在所在分区的分区位置;

二级索引查询单元1240,适于根据所述点阵字库文件头中的二级索引信息的开始地址,查询存储在外部存储器中的所述二级索引信息,根据所述待查询字符在所在分区的分区位置,获取所述待查询字符的二级索引信息;

位图获取单元1250,适于根据所述待查询字符的二级索引信息,查询所述位图集合,获取所述待查询字符的位图。

需要说明的是本实施例的这种查询点阵字库的装置的工作过程是和前述查询点阵字库的方法的实现步骤相对应的,因此,本实施例的查询点阵字库的装置的具体工作过程可以参见前述查询点阵字库的方法部分的相关说明,在此不再赘述。

综上所述,通过点阵库生成方法,首先,将矢量字体转换成位图集合和字符索引文件;然后,根据字符索引文件生成点阵字库的二级索引信息,并根据字符的单一码将所有字符分成多个分区,处于每个分区内的字符的单一码连续,每个分区的结构体信息仅包括开始字符的单一码和结束字符单一码,去除每个分区结构体中间连续的单一码,从而生成所含信息量极少的一级索引,进而根据一级索引信息、二级索引信息和位图集合生成点阵字库。该方法实现了基于矢量字体的点阵库的生成,同时保证了在索引字库时能够降低系统能源消耗。

通过点阵库查询方法,将生成的点阵字库存储在外部存储器中。在点阵字库索引过程中,只将信息量极少的一级索引读入到内存中,大大减少了系统的资源能耗;同时通过一个字符的单一码,就可以通过一级索引查询存储在外部存储器的字符的二级索引信息,根据该字符的二级索引信息就可以查询字符的点阵信息,实现矢量字体的点阵显示,加快了点阵字库的查询速度,增强了用户体验。

由此可知,本发明设计的点阵库生成方法和点阵库查询方法,实现了基于矢量字体的点阵库生成和基于矢量字体的点阵字库的快速查询,降低了系统能耗消耗,有助于提升嵌入式电子产品的性能,可以广泛应用于资源有限的嵌入式电子产品中,市场前景广阔。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1