基于FreeType的VxWorks中文显示方案

2022-09-11

Wind River公司的VxWorks作为性能优秀的嵌入式实时操作系统, 不论在可靠性、实时性、可裁减性方面, 还是在开放性、易用性等方面都是相当不错的。但W i n d River公司没有提供中文显示方案, 然而在国内应用中文显示是必不可少的。本文在对VxWorks操作系统进行分析的基础上, 介绍了基于FreeType实现中文显示的机理, 并给出了具体的实现方案。

1 VxWorks介绍

VxWorks是由美国Wind River公司开发的一套微内核、高可靠性、可裁减的嵌入式实时操作系统[1]。VxWorks实时内核wind提供了基本的多任务环境及对任务的管理。多任务使得许多程序在表面上表现为并发执行, 而事实上内核是根据基本的调度算法使他们分段执行。每个明显独立的程序被设置成为一个任务。每个任务拥有自己的上下文, 其中包含内核调度使该任务执行的时候它所看到的CPU环境和系统资源。

2 TrueType简介

TrueType字库是由苹果公司和微软公司联合提出的一种新型数学字形描述技术。它用数学函数描述字体轮廓外形, 含有字形构造、颜色填充、数字描述函数、流程条件控制、栅格处理控制、附加提示控制等指令[2]。TrueType采用几何学中二次Bezier曲线及直线来描述字体的外形轮廓, 其特点是:TrueType既可以作打印字体, 又可以用作屏幕显示;由于它是由指令对字形进行描述, 因此它与分辨率无关, 输出时总是按照打印机的分辨率输出。无论放大或缩小, 字符总是光滑的, 不会有锯齿出现。

3 绘制中文字符的原理

处理中文输出采用的思路是:解析中文字符的编码;根据中文字符编码装载中文字符的形状;输出中文字符的形状。

3.1 中文字符的编码

由于西文字符与中文字符在计算机内的编码方式是不同的, 所以在处理字符串时需要对中文字符进行正确的解码操作。目前, 我国一般是采用GB2312编码。它所收录的汉字已经覆盖99.75%的使用频率, 基本满足了中文的计算机处理需要。U n i c o d e编码是一个国际标准编码, 与ASCII兼容, 与GB码并不兼容。例如“汉”字的Unicode编码是6C49, 而GB码是BABA。GB码到Unicode编码的转换一般可以通过标准的编码映射表来完成。

3.2 提取字型

中文字符的字型一般都是保存在各种字库文件中。这里我们使用上文中提到的TrueType字库, 它对应的字库后缀名为.ttf[3]。

如上文中介绍的那样TrueType字库有很多优势, 但是它的具体格式比较复杂, 编程实现对TrueType字库的提取也相对困难。目前, 一个开源的字库文件处理库FreeType提供了对TrueType字库操作的基本API, 可以方便实现从TrueType字库中提取字型轮廓的操作。FreeType是一个跨平台的字库文件处理库, 可以在Windows、Linux、VxWorks等多种平台下编译使用。

用FreeType的API提取一个字符的过程如下:

FreeType库的使用过程一般是先初始化库 (FT_Init_FreeType) , 然后从字库生成一个字体 (FT_New_Face) , 然后根据字符的Unicode编码从字库中装载字体。具体的细节在代码注释中已经给出。这里需要强调的是, 上面的代码中m_face->glyph->bitmap对应的是当前装载字体的位图。

3.3 绘制中文字符

上节中提取的字型对应的是字型的位图 (m_face->glyph->bitmap) , 因此直接把字符对应的位图像素绘制到影像中即可。实现代码如下:

drawCharacter在实现代码中还需要处理IplImage影像的origin标志和ROI结构, 这里为了简化省略了具体代码。

4 结语

在VxWorks中使用TrueType字库的方法已经成功地应用于VxWorks嵌入式空中交通管制系统中, 由于采用开源的FreeType提取字库, 因此可以很好地推广到其它操作系统和其它不同国家区域的字符集系统。

摘要:本文在对VxWorks研究的基础上, 介绍了TrueType技术的基本原理及在VxWorks系统中如何通过FreeType应用TrueType字库。该方法和传统的中文显示处理方法相比, 有很好的可移植性, 可运行于Windows、Linux等系统。

关键词:VxWorks,中文显示,TrueType,FreeType

参考文献

[1] 王榕, 许磊, 樊宇涛, 姚敏立.基于WindML的VxWorks汉字显示方案[J].微计算机信息, 2007, 4, 2:51~53.

[2] TrueType字体http://baike.baidu.com/view/333247.html.

[3] TrueType http://zh.wikipedia.org/wiki/TrueType.

上一篇:大S拉钩在子宫下段剖宫产娩头中的应用下一篇:浅谈如何确保GC2压力管道安装质保体系在外出施工时的有效运行