首页 > 分享 > LittleVGL踩坑指南02:LVGL添加内置字库支持中文

LittleVGL踩坑指南02:LVGL添加内置字库支持中文

文章版本7.10,LVGL更新极快,不同版本配置方法可能存在差异

  这几天想为LVGL添加汉字,在网上翻了很多教程,碰到一些坑,花了两天时间终于实现;本期为大家分享一下内置字库的添加方法,先上一张成果图:
在这里插入图片描述

大佬做的工具:LvglFontTool(v0.4)、Arduino IDE、支持C语言的编辑器(不需要编译功能)

  内置字体库是将字体的位图数据,通过C语言的某种数据结构保存,并被编译器编译放进ROM里。
  因为下位机ROM通常很小,而且庞大的字体库会显著增加编译时间,所以不建议内置字体库放入所有常用汉字。

在这里插入图片描述

  打开LvglFontTool,新版本支持TTF字体包了;有字体包就勾选使用FreeType TTF,然后点击选择字体,选择字体包文件并设置大小,注意大小太小的话可能会乱码。
  不想用字体包就把勾去掉,点击选择字体就会变成挑选系统自带字体的界面,选好字体和字号即可。

  选好字体后,就要添加内置字体库里需要的文字。我选择把程序要用到的字手动输进去,当然下面可以选加入常用汉字或所有汉字(不过我的芯片那点FLASH哪个都接受不了)。

  输入字体名,包含先不改,然后点击开始转换,把生成的.C文件先找个地方放着。
  坑出现了:软件生成的文件名和字体名是相同的,但其实字体名和文件名没关系。前文说了,内置字体库是需要编译器编译的,哪个C语言编译器会管文件名叫啥,真正的字体名定义在.c文件内部,如果想改字体名,别只改个文件名哦。
  那么怎么查看和修改字体名呢?我们打开这个文件,直接看最后有这么一段:

//HYChenMeiZiW,,-1 //字模高度:43 //内部字体 //使用排序和二分查表 lv_font_t myfont1 = { .dsc = &font_dsc, .get_glyph_bitmap = __user_font_get_bitmap, .get_glyph_dsc = __user_font_get_glyph_dsc, .line_height = 43, .base_line = 0, };

这里的myfont1就是字体名,想修改字体名来这里就好了

  字体文件到位,那么接下来就要配置一下让lvgl接受它了。

  进入lvgl库文件夹,把字体文件放进/src/lv_font目录,打开文件,根据和lvgl.h文件的相对位置修改include路径:

#include "../../lvgl.h"

  个人比较喜欢这种方法,虽然每个文件都要声明字体,并到控件的样式中去调用,比较麻烦;但在多字体的情况下为不同控件分配字体非常简单。
  打开写有控件的c文件,在include下方添加字体声明:

LV_FONT_DECLARE(myfont1)

  添加声明后可以在该文件中调用这一字体,用样式(style)来选择和调用字体,举个栗子:

lv_style_init(&style); lv_style_set_text_font(&style,LV_STATE_DEFAULT,&myfont1); lv_obj_add_style(label,LV_LABEL_PART_MAIN,&style);

  如果懒得一个一个设置,也可以简单粗暴地把字体设置为全局默认,这样所有控件都会使用这一字体
  在库文件夹中打开lvgl_conf.h文件,先声明字体(大概在420行左右位置,按注释寻找):

#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(myfont1)

然后修改默认字体(只修改LV_THEME_DEFAULT_FONT_NORMAL这一项,其他都是文件自带的,不是手打的哦):

#define LV_THEME_DEFAULT_INCLUDE <stdint.h> #define LV_THEME_DEFAULT_INIT lv_theme_material_init #define LV_THEME_DEFAULT_COLOR_PRIMARY lv_color_hex(0x01a2b1) #define LV_THEME_DEFAULT_COLOR_SECONDARY lv_color_hex(0x44d1b6) #define LV_THEME_DEFAULT_FLAG LV_THEME_MATERIAL_FLAG_LIGHT #define LV_THEME_DEFAULT_FONT_SMALL &lv_font_montserrat_14 #define LV_THEME_DEFAULT_FONT_NORMAL &myfont1 #define LV_THEME_DEFAULT_FONT_SUBTITLE &lv_font_montserrat_14 #define LV_THEME_DEFAULT_FONT_TITLE &lv_font_montserrat_14

完成

相关知识

LVGL font 字库管理(lv
SquareLine Studio 1.3.1 添加中文字体库并生成嵌入式点阵字体
字库简介
网购鲜花避坑指南。养鲜花不间断一年有余,踩过不少坑,特写
winCE改变字库方法(WINCE字库更新)
ArkTs api8 开发踩坑记录及解决方案
花卉论坛—全球最大的中文花卉论坛花博网
ESP32 LVGL开发板例程使用记录:更改字体及显示内容
字库制作
2024年中国研究生数学建模什么时候出成绩(附避坑指南)

网址: LittleVGL踩坑指南02:LVGL添加内置字库支持中文 https://m.huajiangbk.com/newsview742076.html

所属分类:花卉
上一篇: 前端开发项目中使用字体库
下一篇: 结构字体库