Bdf字库制作方法

文档序号:6606456阅读:471来源:国知局
专利名称:Bdf字库制作方法
技术领域
本发明涉及一种字库制作方法,特别是涉及一种BDF (Glypn Bitmap Distribution format,Adobe公司制定的点阵字体文件格式)字库制作方法。
背景技术
在MTK平台(联发科技股份有限公司出品的手机平台)中,若想添加某种语言的字库以及相应的输入法,例如添加保加利亚和匈牙利两国语言的字库以及输入法,一般都是采用MCT工具(MTK平台的字库转换工具)调用相应语言的BDF字库文件来实现的。通常情况下,各种语言的BDF字库文件均需要由语言供应商来提供,而针对每个语言的BDF字库便均需要向语言供应商支付一定的制作费用,这对于手机开发而言,便意味着开发成本的上升。

发明内容
本发明要解决的技术问题是为了克服现有技术中必须从语言供应商处购买BDF 字库的缺陷,提供一种能够较为便捷地自行制作BDF字库的BDF字库制作方法。本发明是通过下述技术方案来解决上述技术问题的一种BDF字库制作方法,其特点在于,其包括=S1、将要制作进BDF字库的多个字符以文本格式保存;S2、将保存的该文本导入一字模提取软件,以将该多个字符取模为多个点阵数组,并将该多个点阵数组保存为一编程软件能够识别的格式;S3、查找每个字符的UNIC0DE(统一码、万国码、单一码,一种在计算机上使用的通用字符编码)十进制索引;S4、在该编程软件中编写一 BDF字库生成程序,该BDF字库生成程序调用该多个点阵数组的数据、并将每个字符与该字符的UNICODE十进制索引进行关联,以生成一 BDF字库文件。较佳地,该BDF字库生成程序对每个字符左侧和/或右侧的留白进行删减或消除。较佳地,该字模提取软件为HZDotReader。较佳地,在HZDotReader中对取模字体、取模方式以及输出格式进行设置。较佳地,该编程软件为C++编辑器。本发明的积极进步效果在于通过采用本发明的该BDF字库制作方法,开发商无需再从语言供应商处购买各种语言的BDF字库,只需经过较为便捷的制作流程,开发商便能够自行地制作获得任何语言的BDF字库,这将能够显著地降低开发成本。


图1为本发明中采用的HZDotReader软件的第一界面截图。图2为本发明中采用的HZDotReader软件的第二界面截图。图3为本发明中采用的HZDotReader软件的第三界面截图。图4为本发明中采用的HZDotReader软件的第四界面截图。图5为本发明中采用的MCT工具的界面截图。
具体实施例方式下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。在对本发明的该BDF字库制作方法展开详细说明之前,首先对由语言供应商提供的标准BDF字库文件的文件格式进行初步的分析。如下所示地,每个BDF字库文件都具备一个索引头,该索引头用于记录每个语言的DBF字库文件的大致内容信息STARTF0NT 1.0FONTSIZE 14 72 72F0NTB0UND INDEX 15 1400STARTPROPERTIES 2F0NT_ASCENT 12F0NT_DESCENT 2ENDPROPERTIESCHARS 95以上所示的该索引头仅以14*14尺寸的字符点阵为例,在该索引头中,F0NTB0UND INDEX项目的第一个数值15表示的是这个BDF字库文件中所有字符的最大宽度,即15个像素,而第二个数值14表示的则是所有字符的高度;F0NT_ACENT与F0NT_DESCENT的数值之和便表示字符的宽度;而CHARS的数值则表示这个BDF字库文件中的字符个数。接下来,再对标准的BDF字库文件中每个字符的数据进行初步分析。由于在任何 BDF字库文件中,均是按照十进制排序的顺序对各个字符进行索引的,以下便以某个BDF字库中十进制索引为33的字符为例,对其数据格式进行说明STARTCHAR 33
ENDING 33
SffIDTH 5200
DffIDTH 22
BBX 214 00
BITMAP
00
00
80
80
80
80
80
80
00
80
80
4
000000ENDCHAR在该BDF字库文件中,十进制索引为33的该字符为“ ! ”,由上述数据可以看出,字符“ !,,在该BDF字库文件中的宽度数值为2,而高度数值则为14,这与“ !,,细长的形态完全对应。“BITMAP”之后的一串“00”或“80”的数据则为该字符的完整的点阵数组,此处的 “00”或“80”均为16进制,即“00”表示一个“00000000”的8位二进制数组,“80”表示一个 “10000000”的8位二进制数组,当二进制数组中的某一位为1时则意味着与该位相应的像素为有效数据,而当二进制数组中的某一位为0时则意味着与该位相应的像素为空白。具体观察该串数据可知,其中在起始处、中间处以及结束处分别出现了“00”的数据,起始处的 “00”表示的便是“! ”上方的留白,中间处的“00”表示的便是“! ”中的竖线与圆点之间的空白,而结束处的“00”则表示“! ”下方的留白。由上述分析可知,只要能够将某语言中的各个字符转换为以上的点阵数组,便可以基于这些点阵数组来自行制作该语言的BDF字库文件了。因此,本发明的该BDF字库制作方法主要包括以下步骤S1、将要制作进BDF字库的多个字符以文本格式保存;&、将保存的该文本导入一字模提取软件,以将该多个字符取模为多个点阵数组, 并将该多个点阵数组保存为一编程软件能够识别的格式;&、查找每个字符的UNICODE十进制索引;、、在该编程软件中编写一BDF字库生成程序,该BDF字库生成程序调用该多个点阵数组的数据、并将每个字符与该字符的UNICODE十进制索引进行关联,以生成一 BDF字库文件。以下将以保加利亚文为例对上述步骤进行详细说明,其中,在该实施例中将选用 C++编辑器作为编程软件,但显然选用其它编程语言的编辑器也是可行的。对于步骤S1,将保加利亚文的全部字符保存为文本格式,具体的字符可以从网上查询获得,也可以利用Word软件中的“插入- >字符”功能完成。对于步骤&,现有的字模提取软件有很多种,在该实施例中选用HZDotReader软件,在此软件基础上,步骤&将具体包括以下步骤S21、点击该软件菜单中的“文”,以将步骤S1中生成的文本文件导入;S22、对该软件的“取模字体”参数进行设置,如图1所示,例如设置每个字符的输出字体、点阵大小、特殊效果等等;S23、对该软件的“取模方式”参数进行设置,如图2所示,该设置应当根据最后生成的BDF字库的应用平台在输出字符时的点阵打印顺序来选择,针对MTK平台,参照图2进行设置即可;S24、对该软件的“输出格式”参数进行设置,如图3所示,例如可以选择为“C格式 8列”,此处的C格式指的便是C语言的格式,以在后续步骤中利用C++编辑器来调用该软件输出的点阵数组数据;S25、对转换完毕的各个字符所对应的多个点阵数组进行保存,如图4所示,例如另存为一保加利亚字库数据.CPP文件,当然在其它实施例的情况下也可以保存为.C或.txt 格式;S26、该将保加利亚字库数据.cpp文件中的“unsigned char code hzdot [1764] ”中的“code”字样删除,然后复制到C++编辑器中新建的一 project (工程)的RESOURCE. CPP 中,并将数组大小“ 1764”填写给F0NT_HZD0T_NUMBER,并预先填写好最终将要输出的BDF字库文件的文件名,例如OUTPUT_BDF_FILE_NAME。对于步骤&,如上所述地,BDF字库文件中的每个字符均需要建立一个对应的十进制索引,而获得每个字符的UNICODE十进制索引的方法有许多中,例如,通过在Word软件中插入某个字符,便可以在插入界面中直接得到该字符的TOIC0DE索引值。以保加利亚字库为例,该字库中的第一个字符的索引值便为十进制的1040,而如果需要制作的字库中仅包含某一国语言的话,则这个字库中的所有字符的索引值将连续分布在一个固定的数值范围内,例如保加利亚字库的索引值便在1040-1102,而即使需要制作的字库中还穿插有一些常用的符号和数字等等,也可以很容易地分别获得该些符号和数字的索引值。对于步骤S4,可以在C++编辑器中编写一段小程序,该程序将调用在步骤^5中得到的.cpp文件,并将每个字符与其索引值相互关联,从而最终生成保加利亚字库的BDF字库文件。如上所述地,若需要制作进字库的字符仅为某一国语言,例如由于已知保加利亚字库的起始索引值为1040,因此可以直接在该程序中将kiseindex赋值为1040,即可利用程序语句自动地连续地将每个字符与其索引值关联;而若还需要在其中穿插一些符号以及数字等等,也可以通过编写一个简单的判断语句来实现。该小程序的编写过程对于熟知C++ 编程原理的本领域技术人员而言应当是较为容易的,故其实现过程在此不做赘述。至此,便已经制作获得了例如保加利亚文的BDF字库文件了,如图5所示,可以在 MCT工具中测试一下获得的该BDF字库文件,由图中可知,通过上述步骤添加的保加利亚字库的全部字符均已经成功生成了,并且每个字符的索引值也与上文中查询到的UNICODE索引值相一致,其中每个字符的行标与列标之和便为该字符的索引值的16进制数值。另外,由于由字模提取软件获得的数据均是以8位保存的,而在最终生成的BDF字库文件中,每个字符的数据又是以8位或者16位来显示的,因此在显示时每个字符的左侧和右侧均会留有空白区域。为了使字符间距不过大从而影响美观,可以进一步地选择将每个字符的有效点阵的左侧和/或右侧的留白加以删减或是完全消除。为了实现上述目的,先建立一个16位的数组,用来保存一个字符的数据,在计算得到该字符的有效点阵数据的具体位置后,通过修改程序语句的手段将有效点阵整体左移几个像素,这样就可以删减或是消除字符左侧的空白了。这也就是需要先建立一个16位数组的原因,因为如果先建立的数组是8位的,则在有效点阵的左移过程中,有效数据就可能会移出界,从而导致数据丢失!较佳地,在消除掉左侧的空白之后,再利用移位的算法来计算右侧的空白,但右侧的空白位数可以仅进行记录而不进行去除,以防止显示时字符间距过近,在BDF字库文件中,只需要将相应的字符宽度记录下,然后在生成该BDF字库文件的时候填写进去就可以了。在该实施例中,处于美观的考虑仍然预留了一个像素,如果不需要,同样可以在project中进行修改。综上所述,本发明能够省去向语言供应商购买BDF字库的费用,降低开发成本。虽然以上描述了本发明的具体实施方式
,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
权利要求
1.一种BDF字库制作方法,其特征在于,其包括S1、将要制作进BDF字库的多个字符以文本格式保存;S2、将保存的该文本导入一字模提取软件,以将该多个字符取模为多个点阵数组,并将该多个点阵数组保存为一编程软件能够识别的格式;S3、查找每个字符的UNICODE十进制索引;、、在该编程软件中编写一 BDF字库生成程序,该BDF字库生成程序调用该多个点阵数组的数据、并将每个字符与该字符的UNICODE十进制索引进行关联,以生成一 BDF字库文件。
2.如权利要求1所述的BDF字库制作方法,其特征在于,该BDF字库生成程序对每个字符左侧和/或右侧的留白进行删减或消除。
3.如权利要求1或2所述的BDF字库制作方法,其特征在于,该字模提取软件为 HZDotReader0
4.如权利要求3所述的BDF字库制作方法,其特征在于,在HZDotReader中对取模字体、取模方式以及输出格式进行设置。
5.如权利要求1或2所述的BDF字库制作方法,其特征在于,该编程软件为C++编辑器。
全文摘要
本发明公开了一种BDF字库制作方法,其包括S1、将要制作进BDF字库的多个字符以文本格式保存;S2、将保存的该文本导入一字模提取软件,以将该多个字符取模为多个点阵数组,并将该多个点阵数组保存为一编程软件能够识别的格式;S3、查找每个字符的UNICODE十进制索引;S4、在该编程软件中编写一BDF字库生成程序,该BDF字库生成程序调用该多个点阵数组的数据、并将每个字符与该字符的UNICODE十进制索引进行关联,以生成一BDF字库文件。本发明能够省去向语言供应商购买BDF字库文件的费用,降低开发成本。
文档编号G06F17/30GK102339287SQ20101023450
公开日2012年2月1日 申请日期2010年7月23日 优先权日2010年7月23日
发明者连俊杰 申请人:上海晨兴希姆通电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1