如果你只需要 数字 0~9 和冒号 :
,并使用字体 JetBrains Mono ,可以按下面方式用 lv_font_conv
生成最小化字体文件,非常适合做 翻页时钟或数字显示屏。
✅ 第一步:准备字体文件
去 JetBrains 官网下载字体:
🔗 https://www.jetbrains.com/lp/mono/
下载后得到 JetBrainsMono-Regular.ttf
文件(或其他变种)。
✅ 第二步:运行命令转换字体
确保你已经装好 lv_font_conv
:
bash
npm install -g lv_font_conv
然后执行:
bash
lv_font_conv \
--font "JetBrainsMono-Regular.ttf" \
--size 48 \
--bpp 4 \
--format lvgl \
--range 0x30-0x39,0x3A \
-o lv_font_jetmono_48_digits.c
含义:
--size 48
:字体大小,和你设计中翻页数字一样高;--range 0x30-0x39,0x3A
:只包含'0'
到'9'
以及':'
;--bpp 4
:使用 4-bit 色深(灰度抗锯齿);-o lv_font_jetmono_48_digits.c
:输出为 C 文件。
✅ 第三步:在 LVGL 中使用
在代码中添加:
c
extern lv_font_t lv_font_jetmono_48_digits;
// 设置到 label
lv_obj_set_style_text_font(label, &lv_font_jetmono_48_digits, LV_PART_MAIN);
注意别忘记将 .c
文件添加进你的工程编译脚本中(RT-Thread 下记得改 SConscript
)。
✅ 第四步:修改lvgl_conf 字体配置
修改 lvg_conf.h 字体选项
C
/* 可选地在这里声明自定义字体。
* 你可以把这些字体设置为默认字体,
* 这样它们就能全局使用。
* 例如:#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) LV_FONT_DECLARE(my_font_2)
*/
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(lv_font_jetmono_100)
/* 启用对大字体和/或包含大量字符的字体的支持。
* 支持的大小限制取决于字体大小、字体样式和每像素位数(bpp)。
* 如果字体需要此支持而未启用,编译时会报错。
*/
#define LV_FONT_FMT_TXT_LARGE 1 //0
/* 启用或禁用压缩字体的支持。 */
#define LV_USE_FONT_COMPRESSED 1 //0
Examples
Merge english from Roboto Regular and icons from Font Awesome, and show debug info:
bash
env DEBUG=* lv_font_conv --font Roboto-Regular.ttf -r 0x20-0x7F --font FontAwesome.ttf -r 0xFE00=>0x81 --size 16 --format bin --bpp 3 --no-compress -o output.font
Merge english & russian from Roboto Regular, and show debug info:
bash
env DEBUG=* lv_font_conv --font Roboto-Regular.ttf -r 0x20-0x7F -r 0x401,0x410-0x44F,0x451 --size 16 --format bin --bpp 3 --no-compress -o output.font
Dump all Roboto glyphs to inspect icons and font details:
bash
lv_font_conv --font Roboto-Regular.ttf -r 0x20-0x7F --size 16 --format dump --bpp 3 -o ./dump
Note. Option --no-compress exists temporary, to avoid confusion until LVGL adds compression support.