前言
最近在玩0.91吋的oled显示屏,想显示汉字,最开始的想法是编写一个程序,调用freetype库,从Windows的字库文件中抽取出字模。但是freetype在windows上没有安装成功,所以就下载了一个字体编辑软件FontForge,用它从Windows的字库文件中抽取出字模,导出为XBM格式的图片文件,再编写一个程序,将其转换成oled可用的格式。
FontForge
用这个软件打开Windows的字库文件,找到需要的汉字,导出成X Bitmap文件,导出时Pixel Size填写31,这样导出的是32x32点阵的字模。
XBM格式
导出的图片文件用文本编辑打开:
#define uni6E29_SimHei_width 32
#define uni6E29_SimHei_height 32
static unsigned char uni6E29_SimHei_bits[] = {
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x38, 0xf8, 0xff, 0x03,
0x78, 0xf8, 0xff, 0x03,
0xe0, 0x18, 0x00, 0x03,
0xc0, 0x19, 0x00, 0x03,
0x80, 0x18, 0x00, 0x03,
0x00, 0xf8, 0xff, 0x03,
0x00, 0xf8, 0xff, 0x03,
0x0c, 0x18, 0x00, 0x03,
0x3c, 0x18, 0x00, 0x03,
0x70, 0x18, 0x00, 0x03,
0x60, 0xf8, 0xff, 0x03,
0x00, 0xf8, 0xff, 0x03,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00,
0x60, 0xfc, 0xff, 0x07,
0x60, 0xfc, 0xff, 0x07,
0x70, 0x8c, 0x31, 0x06,
0x30, 0x8c, 0x31, 0x06,
0x30, 0x8c, 0x31, 0x06,
0x38, 0x8c, 0x31, 0x06,
0x18, 0x8c, 0x31, 0x06,
0x18, 0x8c, 0x31, 0x06,
0x1c