背景
Micropython lvgl默认是不支持展示中文的,需要加载字体才行。
加载字体的方法
全局加载方式
font_simsun_16_cjk = lv.binfont_create("S:/font.bin")
if font_simsun_16_cjk:
# 方法1:设置全局默认字体样式
default_style = lv.style_t()
default_style.init()
default_style.set_text_font(font_simsun_16_cjk)
# 应用到屏幕,所有子组件都会继承
scrn.add_style(default_style, 0)
局部加载方式
label.set_style_text_font(font_simsun_16_cjk, 0)
存在的问题
全量字体文件大多是上几M的,加载字体对小硬件来说是个不小的负担,加载很慢,几秒到十几秒的时间都用来加载字体,这对于嵌入式来说是不能接受的。
优化方法
我们可以为硬件上用到的文字单独生成一个字体库。
步骤一:安装工具
npm i lv_font_conv -g
步骤二:下载个ttf字体
https://www.fonts.net.cn/font-37310347287.html
步骤三:执行生成命令
lv_font_conv \
--size 20 \
--format bin \
--bpp 1 \
--font b.ttf \
--symbols "硬件里面要展示什么1234567890AI " \
--no-compress \
-o font.bin
这里注意字体文件一定要是ttf的,symbols就是要展示什么字就写什么字,空格算字体。正常的情况下就能生成font.bin的文件。
推荐阅读