LVGL原生字体显示

  • 字库转换工具
  1. LVGL官网提供的在线字库转换工具
    https://lvgl.io/tools/fontconverter
    在这里插入图片描述
  2. LvglFontTool
    LvglFontTool是一款非常好用的汉字字库转换工具,可以生成.c文件和.bin文件。并且可以免费使用,在此非常感谢作者:里飞网阿里的无偿奉献。
    里飞网
    里飞网论坛
    在这里插入图片描述
    在这里插入图片描述
  • “选择字体”设置字体及字体大小等参数;
  • 要转换的文字可以通过“导入TXT文本”,“加入常用汉字”,“加入所有汉字”等方式添加;
  • “清除重复”可以删除导入的重复字符;
  • “插入awesome图标”可以添加字符图标,如下图共有670多个图标:
    调用方法是直接用图标对应的编码,如"\uF000",“ABC\uF001”,“中\uF003国”。
    在这里插入图片描述
    转换生成字库.c文件《myFontKaiTi14.c》,字库文件名可根据C语言变量定义语法随便定义。
  1. 修改代码
  • 将字库myFontKaiTi14.c文件拷贝到lvgl源码font目录下
    在这里插入图片描述
  • lv_conf.h 通过宏LV_FONT_DECLARE声明添加的字库,可以添加多个自定义字库
    #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(myFontKaiTi14)
  • lv_conf.h 配置LV_FONT_FMT_TXT_LARGE(当字体索引超过范围才需要设为1)
    #define LV_FONT_FMT_TXT_LARGE 1
    在这里插入图片描述
    LV_FONT_FMT_TXT_LARGE 为0是bitmap_index 位域定义为20位最大索引=2的20次方个
    在这里插入图片描述
    测试代码
  • 方法1,通过lv_obj_set_style_text_font()设置字体
	lv_obj_t *label1 = lv_label_create(lv_scr_act());
    lv_obj_set_style_text_font(label1, &myFontKaiTi14, 0);
    lv_label_set_text(label1, "abc\uF001中华人民共和国\uF004ABC");
    lv_obj_align(label1, LV_ALIGN_CENTER, 0, 0);

在这里插入图片描述

  • 方法2,通过style设置字体
    static lv_style_t style_font;
    lv_style_init(&style_font);   // 初始化样式
    lv_style_set_text_font(&style_font, &myFontKaiTi14); // 样式设置字体
    lv_style_set_text_color(&style_font, lv_palette_main(LV_PALETTE_RED));

    lv_obj_t *label = lv_label_create(lv_scr_act());
    lv_obj_add_style(label, &style_font, LV_STATE_DEFAULT);
    lv_label_set_text(label, "中华人民共和国万岁\uF2D6");
    
    lv_obj_t *lable2 = lv_label_create(lv_scr_act());
    lv_obj_add_style(lable2, &style_font, LV_STATE_DEFAULT);
    lv_obj_align_to(lable2, label, LV_ALIGN_TOP_LEFT, 0, 20);
    lv_label_set_text(lable2, "测试文本");

在这里插入图片描述

FreeType矢量字库

待续。。。

Tiny TTF矢量字库

待续。。。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐