功能描述

  • 使用freetype字体引擎,在LCD屏上显示字符

实践要点

freetype移植

移植过程

  1. 下载freetype源码,地址:https://download.savannah.gnu.org/releases/freetype

  2. 交叉编译源码,以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
  3. 移植到开发板,将编译好的libfreetype库拷贝到开发板的/usr/lib中。

freetype库使用流程&关键代码

  1. 初始化freetype库

    FT_Library library;
    FT_Error error;
    
    error = FT_Init_FreeType(&library);
    if(error) {
       fprintf(stderr, "Error: failed to initialize FreeType library object\n");
    }
  2. 加载face对象

    FT_Face face;
    
    error = FT_New_Face(library, "/usr/share/fonts/font.ttf", 0, &face);
    if(error) {
       //错误处理逻辑
    }
  3. 设置字体大小

    设置字体大小有两种方式

    //方法一:(以像素为单位)
    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
  4. 加载字形图像(代码见附录)

附录

说点什么
请文明发言!
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...