通过矢量字库制作点阵字库

1、字库导出步骤

        涉及软件:FontEditor 1.3.3

        FontEditor 为一款功能强大的字体编辑和字体格式转换工具,支持制作 32*32 的全字库。能将 TTF,OTF 矢量字库转换为 BDF 字符,可以很方便的将Windows 已经安装到系统的矢量字库转换为 BDF 字库,并能将 TTF,OTF 文件直接转换成 BDF 格式,并支持 BDF,FNT,FNB 文件格式的互转换,随心所欲将 windows字体应用于各种嵌入式系统中。并支持将 GB2312,BIG5,GBK 转换为 UCS2,UTF8,并支持 UCS2,UTF8 编码的互转换。

        导出步骤:

        a:导入 windows 字体,选择字体大小以及字形。

        b:T 出没用的字符

        c:选中需要保存的字符保存,可以直接保存为bdf 或者导出位图文件(每个字符的 bmp 图,用于生成 bdf)。

        步骤如下图所示:


       通过矢量字库制作点阵字库_第1张图片


       通过矢量字库制作点阵字库_第2张图片


       通过矢量字库制作点阵字库_第3张图片


       通过矢量字库制作点阵字库_第4张图片


       通过矢量字库制作点阵字库_第5张图片


       通过矢量字库制作点阵字库_第6张图片


       通过矢量字库制作点阵字库_第7张图片


2、字符修改
        涉及软件:MCT6.0、FontEditor 1.3.3
        a、用 MCT6.0 打开生成好的 bdf 文件,对要求不符的字库进行修改。
        b、选择 tools->font tools->font viewer 打开:

       通过矢量字库制作点阵字库_第8张图片

       c、单击 open bdf file ,选择自己要使用的字库资源,这时候可以看到字库里包含的所有元素。                                 
      通过矢量字库制作点阵字库_第9张图片

       d、点击 font edit,Edit UCS2,输入需要修改的字符的unicode 码,如下图所示:

       通过矢量字库制作点阵字库_第10张图片

       其中,几个参数需要注意。第一是 DWIDTH 的值,此值的意思是下一个字符相对此字符的距离,举个例子,若 dwidth 是 10,字符宽度为 10,则下一个字符是紧挨着这个字符。一般 DWIDTH 的值要小于等于字符本身的宽度。第二个是 BBX,BBX 中的前 2 个参数的意思分别为字符宽高,此 2 个值要与 FONTBOUNDINGBOX 的前 2 个值进行区别,FONTBOUNDINGBOX 的前 2 个值是字库中字符的最大宽高。这几个值修改好之后,对左边框框内的字符进行重新绘制,绘制完后保存。注:修改字符不建议使用 fonteditor 软件,保存时会自动修改字符部分参数。


3、调整基准线

       如上图所示:一般的字库中的字符都有一条基准线,有了这条基准线,字符显示才能有规则,显得整齐。调整方法如下:

方法一:可以直接修改 bdf 内 BITMAP 下数组:

       通过矢量字库制作点阵字库_第11张图片

方法二:用 fontedit 打开字符,直接上移下移调整

       通过矢量字库制作点阵字库_第12张图片

4、点阵字库,如何检查BDF 文件的规范性

       可从以下几个方面来查看该字库文件是否有错误,bdf 文件的规范与否会直接影响字符的显示。

       a 检查字符是否等高,目前mct 只支持等高的情况。查看每一个字符的BBX 第二个参数,若不相等则说明该字库不符合规范,建议更换;(目前遇到的问题主要是客户用的点阵字体是用矢量字体转换而来的,因此打开bdf 文件后很清晰地看到字符的高度不一致,这样显示多会出现乱码。)

       b 查看sCustFontData 数组中第五个参数若为0 表示非等宽,若为1 表示等宽。若为等宽情况则每一个字符BBX 中的一个参数即字符宽度都应该相同;

       c 检查sCustFontData 数组中信息是否正确:

       如sCustFontData Pluto_Small = {

       12, 12, 7, 2, 0, 14, 500,

       (U8*)UH9x9_4p_Width,

       (U8*)UH9x9_4p_Width, (U32*)UH9x9_4p_Offset,(U8*)UH9x9_4p_Data,

       (U32*)UH9x9_4p_RangeOffset,

       „„.}

       此例出现的现象就是字符显示间隔较大,长宽均为12,与宽度数组、偏移量数组中9*9 的不符,第六个参数是该字符的字节数,数值上应等于(长×宽)/8.

       d 若添加字库后字符间距很大,除了考虑以上几个方面外,还应查看bdf 文件中FONTBOUNDINGBOX第三个参数,应与BBX 第三个相近或相同,若相差太大,MCT 处理时会根据FONTBOUNDINGBOX 的大小进行填充,这样也会出现字符间距很大的现象。

       e 若为印度语系,如泰古拉语、孟加拉语,需检查bdf文件中参数DWIDTH,该参数表示字符的显示宽度,应小于等于字符本身的宽度,否则不能正确显示出连字的效果。



你可能感兴趣的:(其它)