专为 U8g2 图形库打造的中文字库自动生成工具,可从 C/C++ 源代码中智能提取中文字符,自动生成适用于嵌入式开发的定制化字库文件。
本工具致力于解决嵌入式开发中使用 U8g2 显示中文时的字库生成难题。通过扫描项目源代码自动提取所需中文字符,结合自定义 TTF 字体文件,一键生成 U8g2 可直接使用的 C 语言字库代码,大幅提升开发效率。
- 智能字符提取:自动从 C/C++ 源代码中提取所有中文字符,包括汉字和中文标点符号
- 智能预处理:自动识别并去除 C/C++ 注释(// 和 /* */),确保只提取有效文本
- 灵活的文件匹配:支持单文件、目录递归、通配符模式多种方式指定源代码
- 多编码支持:自动尝试 UTF-8、GBK、GB2312、UTF-16 编码,兼容不同项目
- 完全定制化:支持自定义字体、大小、DPI、字间距等所有参数
- 智能字符过滤:可选择过滤 ASCII 字符,生成纯中文字库以节省存储空间
- 一键生成:自动生成 .map 字符映射、.bdf 字体文件、.c 字库代码三套完整文件
- 使用 U8g2 图形库的嵌入式项目需要显示中文
- MCU 存储/Flash 空间有限,需要精确控制字库大小
- 项目中有大量中文菜单、提示信息需要字库支持
- 需要使用自定义字体风格的项目
- JSON配置文件支持 - 所有参数通过配置文件设置,无需交互式输入
- 自动提取中文 - 从C/C++源代码文件中自动提取中文字符
- 自动去除注释 - 预处理阶段自动移除C/C++注释
- 多文件批量处理 - 支持文件、目录、通配符模式
- 多编码支持 - 自动尝试utf-8、gbk、gb2312、utf-16编码
- 命令行参数支持 - 可直接指定配置文件路径
- 自定义文本或从源代码提取
- 文本自动去重
- ASCII字符可选过滤
- 自定义TTF字体
- 自定义字体大小和DPI
- 字间距调整
- JSON配置文件
创建或编辑 config.json 配置文件:
{
"font_name": "myFont",
"font_path": "./example/font/MapleMono-NF-CN-Light.ttf",
"font_dpi": 72,
"font_size_px": 16,
"font_spacing_percent": 100,
"filter_ascii": true,
"map_include_ascii": false,
"output_dir": "./example",
"file_paths": [
"./example/*.c"
]
}python main.py config.json或直接运行后输入配置文件路径:
python main.py程序会在以下目录生成文件:
./example/map/- 字符映射文件 (.map)./example/bdf/- BDF字体文件 (.bdf)./example/code/- C语言字库代码 (.c)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
font_name |
string | ✅ | 生成的字库名称 |
font_path |
string | ✅ | TTF字体文件路径 |
font_dpi |
int | ✅ | 字体DPI值 |
font_size_px |
int | ✅ | 字体大小(像素) |
font_spacing_percent |
int | ✅ | 字体间距(百分比) |
filter_ascii |
bool | ❌ | 是否过滤ASCII字符(默认true) |
map_include_ascii |
bool | ❌ | MAP映射文件是否包含ASCII(默认false) |
output_dir |
string | ❌ | 输出目录(可选,默认为当前目录子目录) |
file_paths |
array | ✅ | 需要处理的文件路径列表 |
- 单个文件:
"code/main_font_9.c" - 整个目录:
"code/"- 递归处理所有.c/.cpp/.h/.hpp文件 - 通配符:
"**/*.h"- 当前目录及子目录下所有.h文件 - 混合使用: 同时支持多种格式
- 读取配置 - 从JSON配置文件加载所有参数
- 文件扫描 - 根据
file_paths配置扫描所有目标文件 - 预处理 - 读取文件并去除所有C/C++注释
- 中文提取 - 从预处理后的代码中提取中文字符
- 字符去重 - 对提取的字符进行去重处理
- 生成MAP - 创建字符映射文件
- 生成BDF - 使用otf2bdf生成BDF字体文件
- 生成代码 - 使用bdfconv生成C语言字库代码
main.py 适用于 GPL3.0 协议
| 名称 | 来源 |
|---|---|
| bdfconv | https://github.com/olikraus/u8g2 |
| otf2bdf | http://sofia.nmsu.edu/~mleisher/Software/otf2bdf/ |
- 确保
bdfconv.exe和otf2bdf.exe与main.py在同一目录 - 字体文件路径可以是相对路径或绝对路径
- 支持的源代码编码:UTF-8、GBK、GB2312、UTF-16
- 如果遇到编码问题,程序会自动尝试其他编码格式
Email: createskyblue@outlook.com
