51上TOP

栏目

TOOLS / 嵌入式

LVGL v8 字体工具

将手工 glyph JSON 转换为 LVGL v8 plain 1bpp 字体 C 结构。

浏览器本地计算glyph 位图编码

快速理解

如何使用「LVGL v8 字体工具」

3 步指南 +
  1. 填写参数按照字段说明输入数值、单位或本地文件;不确定时先阅读输入提示。
  2. 执行计算点击“计算”,结果区会显示关键数值、公式、单位和模型提醒。
  3. 判断边界结合假设与限制确认结果是否适合当前问题,不把前期估算当成仿真、综合或实测。

输入

参数

A
Glyph 输入
输入数组中的每个 glyph 包含 codePoint、width、height、advanceWidth 和按行排列的 0/1 bitmap;也可粘贴 {"glyphs": [...]}。
LVGL 字体参数
输出的 C 标识符;必须是合法 C 标识符,不能使用 C 关键字。
px
写入 lv_font_t.line_height;应覆盖字体中最高 glyph 的绘制范围。
px
按 LVGL v8 约定从行顶计算,范围 0 到行高。
px
写入 int8_t underline_position;负数表示下划线位于基线下方。
px
写入 int8_t underline_thickness;不影响 glyph 位图。
输出格式
只影响 glyph_bitmap 中 0x 字节的 A–F 大小写。
勾选后输出可直接保存为 C 源文件的头部;关闭后只输出代码片段。
byte
只影响 C 代码排版,范围 1–64;每个 glyph 的行补齐规则不变。

输出

计算结果

B
正在加载当前工具…
计算结果会显示在这里。

本机操作

计算在当前浏览器完成,不上传参数。

更多操作

知识回忆

概念速记

NOTE

概念、关系和工程边界。

01 / 30 秒回忆

LVGL v8 plain 1bpp 字体由 glyph 位图、字形描述符和 Unicode cmap 组成。位图按行主序连续打包,glyph id 0 保留给缺字,字符映射决定 LVGL 查找哪个描述符。

02 / 核心关系

每个 glyph 的 bitmap 字节数为 ceil(width×height/8);adv_w 使用 8.4 定点格式,存储值为 round(advanceWidth×16),非连续码点拆成多个 format0 tiny 范围。

03 / 使用判断

先固定字体行高、基线、字框和 advanceWidth,再用 A、空格和一个非连续码点检查位图、进位和 cmap;编译时确认目标 LVGL 版本与宏配置一致。

常见误区

把 bitmap 当成每行都单独补齐的字节流,或把 Unicode 码点顺序直接当成 glyph id。U+0000、制表符映射和代理项边界也不能只靠浏览器字符串处理。

工程提醒

本工具只接收已栅格化的 0/1 glyph JSON,不解析 TTF/OTF、不生成 kerning、不处理压缩字体;输出需在目标 LVGL 工程中编译并用实际屏幕核对。

公式计算依据
  • 每个 glyph 的 bitmap 字节数为 ceil(width×height/8);adv_w 使用 8.4 定点格式,存储值为 round(advanceWidth×16),非连续码点拆成多个 format0 tiny 范围。
边界假设与限制
  • 本工具只接收已栅格化的 0/1 glyph JSON,不解析 TTF/OTF、不生成 kerning、不处理压缩字体;输出需在目标 LVGL 工程中编译并用实际屏幕核对。