在LCD上显示字符图像

  1. 功能描述
  2. 实践要点
    1. freetype移植
      1. 移植过程
    2. freetype库使用流程&关键代码
  3. 附录

功能描述

  • 使用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. 加载字形图像(代码见附录)

附录


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 sigma_poet@126.com

💰

×

Help us with donation