一种字体文件的制作方法

文档序号:6463839阅读:246来源:国知局

专利名称::一种字体文件的制作方法
技术领域
:本发明涉及应用系统中的字体文件
技术领域
,更具体地说,涉及一种以数组及二级数组形式来组织数据的字体文件。
背景技术
:在各种应用系统中,人们都希望应用程序能够尽量少的占用内存,这样就能在同样的硬件平台上使系统能够有更好的运行性能。特别是在嵌入式应用系统中,因为基于产品成本的考量,硬件性能往往有限,因此,那些占用硬件资源越少的应用程序越受欢迎。特别是内存资源,是编写嵌入式应用程序时要着重考虑的因素之一。现有技术中的字体文件存在占用内存空间大的问题,特别是在多进程模式下,每一进程占用一份内存资源。对于嵌入式应用系统中,这种问题就更急待于解决。
发明内容鉴于上述现有技术的不足,本发明的一个目的是提供一种通过数组方式组织字型数据,从而可以通过数组索引方式访问的字体文件。本发明的另一个目的在于提供一种通过数组方式组织字型数据,从而可以通过数组索引方式访问的;并且内部数据4字节对齐的,可以通过内存映射的方式让多个进程共享访问的字体文件。本发明提供的一种字体文件包括文件头、字体信息、BBOX数组、X方向的前进值数组,丫方向的前进值数组,字型数据索引数组、字型数据数组几个部分;其中所述文件头记录每个数组在所述字体文件中的位置和字节长度,所述字体信息存储所述字体文件的字型信息,所述BBOX数组以数组方式存储所述字体文件的各字型的BBOX信息,所述X方向的前进值数组以数组方式存储所述字体文件的各字型在X方向上的前进值信息,所述Y方向的前进值数组以数组方式存储所述字体文件的各字型在Y方向上的前进值信息,所述字型数据索引数组以数组方式存储所述字体文件的各字型的字型数据索引值,所述字型数据数组以数组方式存储所述字体文件的各字型的字型数+口TO。作为优选,所述字体信息可以包括描述所述字体文件的第一个字型索引值的,即起始字型码、描述所述字体文件的最后一个字型索引值的,即终止字型码和一个默认字型码。作为优选,所述文件头可以还包括文件头长度信息和所述字体文件总体长度信息。作为优选,所述字体可以为点阵字体,所述字型数据索引数组和字型数据数组分别为字型位图索引数组和字型位图数组。由于每个字型的位图信息长度不等,所述字型位图索引数组可以以二级索引的方式存储所述字体文件的各字型的字型位图数组的索引值。所述字体也可以为矢量字体。为了使字体文件可以以内存映射方式使用,作为优选,可以使所有4字节大小的数据以及各数组的开头在所述字体文件中的位置都是4的倍数,不是4的倍数时在该数据或数组的文件头方向添加无用的字节补齐。本发明提供的另一种字体文件可以描述一个字符集的一个连续字型段或全部字型,所述字体文件的每一种数据用一个数组表示;所述字体文件的每个字符集都可由其编码方式,通过计算得出各个字符的字型在52008所述字符集所有字型中的字型索引值,用所述字型索引值访问各个数组得到该字符的各个字型数据。为了使字体文件可以以内存映射方式使用,作为优选,所述字体文件内部的数据4字节对齐。所述对齐的方式可以为在在所述数据的头文件方向添加对齐数组。本发明的字体文件通过数组方式组织字型数据,从而可以通过数组索引方式访问,使得字体文件小、访问速度快;而且可以通过内存映射的方式来使用,从而在多进程模式下减少内存的占用,使系统具有更高的运行效率。图1为根据本发明的一个实施例的字体文件的字型单色位图数据。具体实施例方式下面结合附图,对本发明的具体实施方式作进一步的详细说明。对于所属
技术领域
的技术人员而言,从对本发明的详细说明中,本发明的上述和其他目的、特征和优点将显而易见。在本发明的一个实施例中,本发明的字体文件的字体为位图字体,在这里将这种字体简称为VBF字体(VaribaleBitmapFont,即可变位图字体)。在本发明的一个实施例中,所述VBF字体文件的布局如下面表一所示,然应了解,其仅为示例性质,本发明不受其限制。表一,VBF字体文件的布局<table>tableseeoriginaldocumentpage6</column></row><table><table>tableseeoriginaldocumentpage7</column></row><table>终止字型码int4字体中最后一个字型码(last_glyph)默认字型码int4字体中的默认字型码(def—glyph)对齐数组2charg0使以下内容4字节对齐BBOX数组VBF—BBOX□Sizeof(VBF—BBOX)x(last—glyph-.first_glyph+l)VBFBBOX结构的大小是4字节对齐数组3char□0使以下内容4字节对齐x方向前进值数组char[]last—glyph-first—glyph+1对齐数组4char口根据实际情况计算使以下内容4字节对齐Y方向前进值数组char[]last_glyph-first—giyph+1对齐数组5char[]根据实际情况计算使以下内容4字节对齐字型位图偏移量数组unsignedint4x(last—glyph-first—glyph+1)字型位图偏移量,指某个字型的位图数据在所有字型位图数据中的偏移量对齐数组6char口根据实际情况计算使以下内容4字节对齐所有字型位图数据数组charQ至文件尾其中,各对齐数组的目的是使其后的数据或数组的开头的位置为4字节的倍数,以便于采用内存映射的方式访问字体。当然若对应的数据或数组的开头的位置已经是4字节的倍数,对应的对齐数组可以省略或使其字节大小为0。字体信息中的起始字型码和终止字型码代表该字体所描述的字型片段,当由某个字符值计算出来的索引值不在该字体描述的字型片段内时,用默认字型码表示。在本发明的一个实施例中,每个数组的地址,就是字体文件映射到内存的地址加上该数组在文件中的位置。在本发明的一个实施例中,文件头、字体信息的内容都是不变的,可以读取到一个固定的结构中。根据文件头中的字体大小,使用mmap系统调用,把字体文件映射到进程地址空间。假定映射到地址map—address,则BBOX数组的地址就是map—address加上BBOX数组在文件中的偏移量(记为bbox),其中文件中的偏移量在表一所述的文件布局中表示为,BBOX数组相对于"字体名称"的偏移量加上文件头长度,类似可以得到x方向前进值数组的地址(记为advance—x),y方向前进值数组的地址(记为advance—y),字型位图偏移量数据(记为bits—offset),所有字型位图数据(记为all—glyph—bits)。假设某个字符在字符集中的字型索引是cur_glyph,该字体的第一个字型在字符集中的索引是first—glyph。那么该字符的字型数据如下BBOX是bbox[cur一glyph-firstglyph]x方向前进值是advance—x[cur—glyph-fir$tglyph]y方向前进值是advance—y[cur一glyph國firstglyph]l立图数据是all—glyph—bits[bits—offset[cur—glyph-first—glyph]]图1为根据本发明的一个实施例的字体文件的字型单色位图数据。参照图1,图中BBox表示出了字型的外包矩形,Baseline表示基线,Ascent表示着字型的上升值,Descent表示字型的下降值。图1表示出了一个典型字型T(8x12)的单色位图数据,其BBox为O,8,6,10}。然应了解,本发明的字体不仅可以是单色位图字体,也可以灰度位图字体和矢量字体,本发明不受此限制。虽然,本发明已通过以上实施例及其附图而清楚说明,然而在不背离本发明精祌及其实质的情况下,所属
技术领域
的技术人员当可根据本发明作出各种相应的变化和修正,但这些相应的变化和修正都应属于本发明的权利要求的保护范围。权利要求1.一种字体文件,其特征在于所述字体文件包括文件头、字体信息、BBOX数组、X方向的前进值数组,Y方向的前进值数组,字型数据索引数组、字型数据数组几个部分;其中所述文件头记录每个数组在所述字体文件中的位置和字节长度,所述字体信息存储所述字体文件的字型信息,所述BBOX数组以数组方式存储所述字体文件的各字型的BBOX信息,所述X方向的前进值数组以数组方式存储所述字体文件的各字型在X方向上的前进值信息,所述Y方向的前进值数组以数组方式存储所述字体文件的各字型在Y方向上的前进值信息,所述字型数据索引数组以数组方式存储所述字体文件的各字型的字型数据索引值,所述字型数据数组以数组方式存储所述字体文件的各字型的字型数据。2.如权利要求1所述的字体文件,其特征在于所述字体信息包括描述所述字体文件的第一个字型索引值的,即起始字型码、描述所述字体文件的最后一个字型索引值的,即终止字型码和一个默认字型码。3.如权利要求1所述的字体文件,其特征在于所述文件头还包括文件头长度信息和所述字体文件总体长度信息。4.如权利要求1所述的字体文件,其特征在于所述字体为点阵字体,所述字型数据索引数组和字型数据数组分别为字型位图索引数组和字型位图数组。5.如权利要求4所述的字体文件,其特征在于所述字型位图索引数组以二级索引的方式存储所述字体文件的各字型的字型位图索引值。6.如权利要求1所述的字体文件,其特征在于所述字体为矢量字体。7.如权利要求1-6中任一项所述的字体文件,其特征在于使所有4字节大小的数据以及各数组的开头在所述字体文件中的位置都是4的倍数,不是4的倍数时在该数据或数组的文件头方向添加无用的字节补齐。8.—种字体文件,其特征在于所述字体文件描述一个字符集的一个连续字型段或全部字型,所述字体文件的每一种数据用一个数组表示;所述字体文件的每个字符集都可由其编码方式,通过计算得出各个字符的字型在所述字符集所有字型中的字型索引值,用所述字型索引值访问各个数组得到该字符的各个字型数据。9.如权利要求8所述的字体文件,其特征在于所述字体文件内部的数据4字节对齐。10.如权利要求9所述的字体文件,其特征在于所述对齐的方式为在在所述数据的头文件方向添加对齐数组。全文摘要本发明涉及应用系统中的字体文件
技术领域
,更具体地说,涉及一种以数组及二级数组形式来组织数据的字体文件。本发明的一种字体文件,可以描述一个字符集的一个连续字型段或全部字型,所述字体文件的每一种数据用一个数组表示;所述字体文件的每个字符集都可由其编码方式,通过计算得出各个字符的字型在所述字符集所有字型中的字型索引值,用所述字型索引值访问各个数组得到该字符的各个字型数据。本发明的字体文件通过数组方式组织字型数据,从而可以通过数组索引方式访问,使得字体文件小、访问速度快;而且文件内数据4字节对齐,可以通过内存映射的方式来使用,从而在多进程模式下减少内存的占用,使系统具有更高的运行效率。文档编号G06F17/30GK101593172SQ20081011133公开日2009年12月2日申请日期2008年5月28日优先权日2008年5月28日发明者焦力波,王旭光,董俊杰,闫晓伟,魏永明申请人:北京飞漫软件技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1