VxWorks5.5 平台下矢量字体显示的实现
语句pFontDefinition->weight = (pFontDescriptor-> weight.min +pFontDescriptor->weight.max)/2;替换。 4 结论 矢量字库已应用于嵌入式浏览器、嵌入式阅读器等多个软件开发项目,实际工程应用表明,矢量字体的切换速度、显示速度都能满足应用要求,并且字体大小的无级缩放、粗斜体显示、以及旋转显示等效果能使人机界面更加友好,使用更加便捷。 字符编码根据长度分为单字节和双字节两种编码方式,单字节编码包括英文字母、数字和特殊字符等,双字节编码包括汉字和自定义字符等。 WindML 字体显示分双字节显示和单字节显示两种方式,双字节显示是两个字节作为字体编码对字库进行查询,找到字符位图并显示;单字节显示是单个字节作为字体编码对字库进行查询,找到字符位图并显示。当英文字符显示时,可以使用单字节显示或双字节显示,当中文字符显示或中英文混合字符显示时必须使用双字节显示。 VxWorks 下字体采用GB2312 编码,中文字符编码的每个字节都大于0x80,英文字符编码都小于0x80,在进行双字节显示时,需要将单字节字符转换成双字节字符。在字符转换时,先获取整个字符串长度,再判断每个字节是否大于0x80,如果小于0x80,则将单字节扩展成双字节;如果大于0x80,则将这个字节与后个字节组合成一个双字节;计算双字节数并返回,如上图2 所示。 图2 单字节字符转换成双字节字符。 3.3 字体编码转换 VxWorks5.5 下汉字采用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 编码的查找速度,加速了汉字显示。
显示 实现 字体 矢量 平台 VxWorks5 5 相关文章:
- 蓄电池化成控制系统中显示功能的实现(11-05)
- 基于DSP实现的LCD液晶屏显示技术(06-04)
- 军事指挥系统中VxWorks下汉字显示技术(07-16)
- DSP在LED显示中的应用(08-21)
- 基于Android系统的影音播放器开发(03-25)
- 基于MC9S12XS128的单片机开发板的设计(08-13)