新闻中心

EEPW首页>嵌入式系统>设计应用> VxWorks5.5 平台下矢量字体显示的实现

VxWorks5.5 平台下矢量字体显示的实现

作者: 时间:2012-09-07 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/148448.htm

  WindML分双字节和单字节两种方式,双字节显示是两个字节作为编码对字库进行查询,找到字符位图并显示;单字节显示是单个字节作为编码对字库进行查询,找到字符位图并显示。当英文字符显示时,可以使用单字节显示或双字节显示,当中文字符显示或中英文混合字符显示时必须使用双字节显示。

  VxWorks 下字体采用GB2312 编码,中文字符编码的每个字节都大于0x80,英文字符编码都小于0x80,在进行双字节显示时,需要将单字节字符转换成双字节字符。在字符转换时,先获取整个字符串长度,再判断每个字节是否大于0x80,如果小于0x80,则将单字节扩展成双字节;如果大于0x80,则将这个字节与后个字节组合成一个双字节;计算双字节数并返回,如上图2 所示。

图2 单字节字符转换成双字节字符。

图2 单字节字符转换成双字节字符。

3.3 字体编码转换

下汉字采用GB2312 编码, 而FreeType 在处理汉字时只能识别UNICode 编码,在处理汉字前需要将GB2312 编码先转换成Unicode 编码,GB2312 与Unicode 的编码转换表采用二维数组保存数据,共有7000 多组对应项,如果采用遍历数组的方式来进行编码转换,那么平均每个汉字编码转换需要做3000 多次的编码比较,这非常影响汉字的处理速度。

  为了提高编码转换的处理速度,编码转换时采用折半查找方式来,使用折半查找需要先将GB2312编码从小到大排列,每个GB2312 编码对应一个Unicode 编码。在使用折半查找时,先取first=0 end=数组长度,然后(first+end)/2 得到一个中间编号,再通过中间编号获取相应的GB2312 编码和显示汉字编码比较大小,如果中间值大,则将first=0 end=中间编码组合再进行折半查找;如果中间值小,则将first=中间编码 end=数组长度 组合再进行折半查找;如果相等,则将GB2312 编码对应的Unicode 编码提交程序处理。

  使用折半查找一个汉字最多只需查找13 次,大大提高了汉字Unicode 编码的查找速度,加速了汉字显示。

矢量控制相关文章:矢量控制原理

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭