功能描述
- 使用freetype字体引擎,在LCD屏上显示字符
实践要点
freetype移植
- 字体文件格式有很多种:oft、ttf、ttc等。Linux系统中,字体文件通常放在
/usr/share/fonts
目录下,有了字体文件后,只需要解析字体、访问字体文件,从字体文件中读取出字符的位图数据即可。有很多开源的字体引擎可以帮助我们来处理这些复杂的解析过程,譬如freetype。 - freetype官方使用帮助文档地址:
移植过程
-
下载freetype源码,地址:https://download.savannah.gnu.org/releases/freetype
-
交叉编译源码,以2.8版本为例
tar -xvf freetype-2.8.tar.gz cd freetype-2.8 mkdir build
vi include/freetype/config/ftoption.h
打开ftoption.h文件,将下面两个宏定义的注释取消。
#define FT_CONFIG_OPTION_SYSTEM_ZLIB #define FT_CONFIG_OPTION_USE_PNG
输入配置命令
./configure --prefix=yourpath --host=arm-poky-linux-gnueabi --with_zlib=yes --with_bzip2=no \ --with-png=yes --with-harfbuzz=no ZLIB_CFLAGS="-I(zlib的include) -L(zlib的lib)" ZLIB_LIBS=-lz \ LIBPNG_CFLAGS="-I(libpng的include) -L(libpng的lib)" LIBPNG_LIBS=-lpng
make make install
-
移植到开发板,将编译好的libfreetype库拷贝到开发板的/usr/lib中。
freetype库使用流程&关键代码
-
初始化freetype库
FT_Library library; FT_Error error; error = FT_Init_FreeType(&library); if(error) { fprintf(stderr, "Error: failed to initialize FreeType library object\n"); }
-
加载face对象
FT_Face face; error = FT_New_Face(library, "/usr/share/fonts/font.ttf", 0, &face); if(error) { //错误处理逻辑 }
-
设置字体大小
设置字体大小有两种方式
//方法一:(以像素为单位) FT_Set_Pixel_Sizes(face, 50, 50); //我们可以将宽度或高度中的任意一个参数设置为0, //那么意味着设置为0的参数将会与另一个参数保持相等 //方法二:(以1/64点为单位,一个点是1/72英寸,dpi参数设置为0时,表示使用默认值72dpi) FT_Set_Char_Size(face, 16*64, 16*64, 300, 300); //示例为在一个300x300dpi的设备上把字体大小设置为16pt
-
加载字形图像(代码见附录)
附录
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
SigmaPoet
本文地址: [正点原子I.MX6U ALPHA V2.2开发板]——在LCD上显示字符图像
本文地址: [正点原子I.MX6U ALPHA V2.2开发板]——在LCD上显示字符图像