这几天老板闲着没事看了一下拨号界面的字体,就抛了"这字也太小看不到了"。晕,这上面原来的字已经是36X23了,再大都不知道像个啥样子了,看 来现在也不是每个人都追求精细啊,没办法找了一个52X32的给看一下,还是那句"不够大"...这已经是现成字库里做的最大的了,没办法还得自己琢磨着 生成一个了,想着原来虽然没弄过大号字体,但做过别小号汉字字体,想想应该没问题吧,就按着原先做中文字库的方法(这里就不详细说了,大家可以看"MTK 如何生成新字库http://itfun.blog.sohu.com/104703188.html ") 做了一个64X64的先试试,结果用MCT生成出来的FontRes.c和数据.h怎么看也不对劲,不但结构里面的偏移量还是 Font_64X64_Data[]数据个数都不对(因为是拨号字体,总共也就那么15个很容易看出来)。一开始以为是自己生成的BDF不支持这么大的字 体,但打开BDF文件研究了一下感觉到一点问题也没有,因为自己试过用最蠢的画图的方式然后用MCT把bmp转为BDF文件再生成字库也有这样的问题,这 下彻底晕了...
BDF文件没问题,想着肯定是MCT这个工具的问题了,本来想看看有没有更新版本的MCT,goolge搜了一下无果后只能查查生成的数据到底哪里不对了,后面发现问题主要有几个方面
1.sCustFontData Font_64X64里面的nCharBytes不对,因为64X64号字体每个字符占了512个字节了,超界了,只好把nCharBytes改为U16
2.Font_64X64_RangeOffset数组生成的也有问题,这个倒是手工可以修改过来,反正也就只有15个字符,算一下偏移量也很简单 的事情,至于数组的偏移量就要看具体你生成的Font_64X64_RangeData[]来决定了,把连续的字体个数*nCharBytes就是间隔啦
3.最后也是最麻烦的就是Font_64X64_Data[]这个生成的真正的子模数据也有问题,生成不全,还好并不是每个字都生成的有问题,前面 的几个字符还是没问题的,这样就只能分段的生成了,俺比较的不想问题,也懒得管它到底哪里出的问题了,反正也就15个字符,估计用分段生成的蠢办法和自己 写一个BDF转FontRes和数据的小程序也要花差不多的时间了,最后皇天不负有心人终于给我把数据凑齐了 ..
下面贴一个刚做的80X64的字体,界面还没有调整,只能看到部分,呵呵,大家有什么好的方法记得告诉我哦
最新发现,原来生成的Font数据出现了下半部分看不到的情况,查了原因是因为生成的BDF文件每个字符里面还有一个关于字体高度的属性不对,把错误纠正后就没问题了