本系统实现了ESP32上的中文字体显示支持,使用点阵字体并通过SD卡动态加载,以解决内存限制问题。
tools/font_generator.py: 点阵字体生成工具tools/sample_chars.txt: 示例中文字符集font.h/cpp: 字体加载和管理类display.h/cpp: 显示控制类(已集成中文支持)
- 安装Python依赖:
pip install pillow- 准备中文TTF字体文件(建议使用开源字体如文泉驿)
cd tools
python font_generator.py your_font.ttf sample_chars.txt这将在font_data目录下生成:
- 点阵字体文件 (*.font)
- 索引文件 (index_*.json)
- 在SD卡根目录创建
font_data文件夹 - 将生成的所有.font和.json文件复制到此文件夹
// 初始化字体系统
Font::getInstance().begin();
// 显示中文文本
display.drawText("你好世界", 10, 10, 2); // size=2对应32x32点阵
// 居中显示
display.drawCenteredText("加载中", x, y, width, height, 2);- size=1: 16x16点阵
- size=2: 32x32点阵(推荐用于标准文本)
- size=3: 48x48点阵(适用于标题)
- 字体数据按需从SD卡加载
- 索引文件分片存储
- 使用固定大小缓冲区
- 确保SD卡正确初始化
- 使用前检查font_data目录存在
- ASCII字符仍使用内置字体,无需加载点阵
- 建议将常用字符添加到sample_chars.txt以生成点阵数据