找回密码
 注册
搜索
查看: 867|回复: 1

MTK字库的问题

[复制链接]
发表于 2006-11-27 21:34:19 | 显示全部楼层 |阅读模式
各位大侠:
    最近有个哥们求我给他弄个MTK的20*20的字库(当然是免费的, 并允远支持资源共享的原则). 可我不知道MTK的字库的显示要求, 他做ID的也不太了解, 所以没办法只能请MTK的大师们给我解释一下: 谢谢!
    他给了我一个16*16的字库参考, 我没看明白一个数组是什么意思, 第一个数组大概是定义字库中所有字库的宽度的. 第二个数组大概是定义字符在字库的相对地址. 第四个数组是字库数据. 第三个数组就不知道干什么的了?是不是跟UNICODE编码有关?
还有两个问题:
1)16*16 既然半角字符的宽度为9,为什么半角字符的象素信息大小只有18个字节, 是竖行定义的,还是只保存了前8个点信息?
2)只定义了一万六千多个字符, 是不是GBK编码的?
有谁有MTK字符显示处理的源代码吗? 发份给我好吗? 谢谢!
zhounw163@163.com
 楼主| 发表于 2008-3-19 15:49:39 | 显示全部楼层
看来这个问题只好我自己回答了, 9 * 16 / 8 = 18
一个字节表示8个象素点, 如第1个象素点有信息且其他7个象素点都没有信息, 则 0x01
这大概跟其硬件加速处理有关,其他的都是为0x80的.这一点就是我刚开始没看出来的原因

字库有3个数组:
FontData[] : 字库信息
Range[], RangeOffset[]: 将UNICODE码不连续的字库集合变得连续起来, 再根据RangeOffset数组得到当前字符的象素信息的首地址.

另外, MTK还用了一个HASH表来存放最近最常用的字符集的基本信息. 这样增加字符的显示速度, 因为字符在显示时,总是先得到字符串的高度和宽度等重复操作.

总之,还是学到了不少东西!
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-28 21:54 , Processed in 0.044451 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表