这个项目来自做鸿蒙时的一个具体需求:开机时要在 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 数组文件和头文件。