bilibili-视频演示
以下内容
-
使用fontTools提取字体子集
-
使用lvgl加载字体并显示中文手写字体
参考内容
官方文档
https://docs.lvgl.io/8.3/libs/freetype.html
https://docs.lvgl.io/8.3/overview/font.html?highlight=font
官方在线字体转换
https://lvgl.io/tools/fontconverter
安装fontTools
pip install fonttools
使用pyftsubset
pyftsubset <字体文件> –text=<字符串> –output-file=<输出文件>
pyftsubset muyao.ttf --text=哔哩哔哩粉丝 --output-file=bilibili_fans.ttf
把bilibili_fans.ttf字体文件使用ampy传输到ESP32-S3中
参考文章
《MicroPython 工具 Ampy:给ESP32传送JPG,GIF等文件》
lvgl加载字体文件
右侧的20为字号,字体大小
font_bilibili = lv.tiny_ttf_create_file("S:bilibili_fans.ttf", 20)
设置字体样式
label.set_style_text_font(font_bilibili, 0)
总结如下
-
使用python的库fontTools中的pyftsubset 来提取字体子集文件
-
使用lvgl加载ttf字体文件
-
显示中文手写字体在屏幕上
这是合集中描述的第二种中文字体设置方式
一种是font_load加载bin的文件
一种是tiny_ttf_create_file加载ttf字体文件
同样的字符串(哔哩哔哩粉丝),bin的文件为265字节(0.25kb),ttf子集为3.25kb
目前差异对比
-
bin文件体积大小比ttf小很多(虽然ttf暂时没有做优化)
-
ttf的字体大小可以在代码中指定和修改,但是bin文件字体是在lv_font_conv处理字体时就指定了固定大小
-
一个是实时渲染字形,一个是闪存存储字体位图,各有优势
往期内容
《MicroPython[ESP32-S3]:硬件定时器设置日期刷新文字显示》
《MicroPython[ESP32-S3]:LVGL显示GIF+http request显示哔哩哔哩粉丝计数》
《MicroPython[ESP32-S3]:使用lv_font_conv制作中文字体文件然后加载和显示》
END