LiteOS组件尝鲜-玩转FreeType

举报
Lionlace 发表于 2021/09/18 11:41:22 2021/09/18
【摘要】 -

基本介绍

FreeType库是一个开源免费的高质量字体引擎,提供了统一的接口用于访问多种字体格式文件。FreeType库使用ANSI C开发,但是采用了面向对象的思想。此外,FreeType库是一个高度模块化的程序库,用户可以灵活地根据需要进行裁剪。

流程介绍

FreeType的典型使用流程如下图所示:

图1 流程框图

LiteOS下使用FreeType


主要接口描述

接口名称

接口描述

FT_New_Face

创建一个face对象

FT_Get_Char_Index

查找字形索引

FT_Load_Glyph

装载字形图像到字形槽中

FT_Get_Glyph

存储字符的字形图像


获取LiteOS源码

这里我们使用Linux作为LiteOS编译环境,可以通过以下方式下载工程代码:

git clone https://gitee.com/LiteOS/LiteOS.git

FreeType组件的示例Demo源码路径为:

https://gitee.com/LiteOS/LiteOS/tree/master/demos/utility/freetype

下面介绍该组件及示例Demo的使能过程。


使能 FreeType Demo

该Demo示例通过加载预置字体库,生成英文字符对应字形点阵数据,通过使用野火开发板Cloud_STM32F429IGTx_FIRE运行Demo程序并展示其结果。下面介绍该Demo的使能流程。

在LiteOS源码根目录下,拷贝开发板的默认配置文件,并重命名为.config。

cp tools/build/config/Cloud_STM32F429IGTx_FIRE.config .config

执行make menuconfig,按如下菜单路径使能各组件:

Components  --->
        FileSystem  --->
               -*- Enable FATFS (NEW)
                     Choose Peripheral Driver (SD Card)
Demos  --->
       Utility Demo  --->
               [*] Enable FreeType Demo (NEW)

注:使用FATFS文件系统挂载SD卡的方式,用于读取字库测试文件。

在LiteOS源码根目录下执行make clean ; make -j命令进行编译完成后,将在out/Cloud_STM32F429IGTx_FIRE/lib目录下生成组件库文件libfreetype.a和此Demo库文件libfreetype_demo.a,系统镜像文件为out/Cloud_STM32F429IGTx_FIRE/Huawei_LiteOS.bin。


运行FreeType Demo

提供的字库测试文件inkree.ttf位于LiteOS/demos/utility/freetype目录下。

操作步骤如下:

1. 将测试字体文件拷贝到SD卡的根目录中,然后安装到开发板的SD卡槽内。

2. 烧录Huawei_LiteOS.bin到开发板中。

3. 重启开发板,查看运行结果。

FreeType Demo程序运行时,通过调用FreeType库相关接口,加载预置字体库inkree.ttf,根据传入的测试字符参数“H”,生成该字符对应的字形点阵数据。

通过调试串口输出字符“H” 对应测试字库的点阵数据。

1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 
1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 
1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 
1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 
1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 
1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 
1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 
1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 
1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 
1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 
1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 
1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 
1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 
1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 
1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 
1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 
1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 
1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 
0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 
1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1

至此,我们介绍了FreeType组件使能及示例Demo运行的整个过程。如果在使用LiteOS构建应用的过程中遇到问题,可以及时在https://gitee.com/LiteOS/LiteOS/issues页面上提交相关issue,LiteOS的工程师们会为您及时答疑解惑。

参考资料

[1] https://github.com/freetype/freetype

结语

未来我们还会持续新增更多组件开发板架构特性等。

感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:

https://gitee.com/LiteOS/LiteOS/issues

为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。

-end-

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。