Turi 的 AI 实验室

把 ASCII 字符转换成像素位图数组,并直接生成 C 头文件。为的是在 bootloader 里——字体驱动还没加载的时候——把字显示出来。

PythonC嵌入式

这个项目来自做鸿蒙时的一个具体需求:开机时要在 bootloader 里显示一句话。

麻烦在于,那个阶段字符驱动还没加载。系统里没有字体、没有文字渲染能力,你能操作的只有一块显存——想显示什么,就得自己一个像素一个像素地点。

所以需要一个东西,把「我要显示的这句话」提前转换成像素阵列,编译进固件里直接用。

#它做什么

把每个 ASCII 字符渲染到一张预定义尺寸的位图上。位图是个二维数组,每个元素代表一个像素——遍历数组,1 画黑点,0 画白点,字就出来了。

字符大小可以指定,比如每个字用 8×8 或 16×16 的方块表示。

#几个实用功能

自动找最大字号。 给定尺寸后,算出能容纳全部 ASCII 字符的最大公共字号。比如在 16×24 的框里,答案是 21 号——这一步省掉了手工试错。

预览。 可以先看每个字符的位图长什么样,也可以模拟整句话打印在屏幕上的效果,确认排布和间距没问题再往下走。

直接产出 C 数组。 最终生成 video_font_data.h 这样的头文件,包含紧凑版的位图数组,拿过去就能编译进固件,不需要再做格式转换。

#用法

pip install pillow
python auto_gen.py

输出包括位图文本、预览图、C 数组文件和头文件。

分享这篇文章