点阵字体 BDF 的生成 - 西点肥牛

做点阵字体的原因,是我觉得 Windows 下的 16 点阵的宋体不如原来 DOS 下的好看。在分析点阵字体的时候,就萌生了要把 Windows 下的 TTF 字体转成点阵字体的想法。

在网上查了一些资料,TTF 转点阵字体,绕不开的就是描边矢量化。这个倒是有工具 Potrace 可以做。但是转成的点阵字,是按比例缩放的,在特定的字体大小下,可能会显得模糊,那么就需要针对这个大小的字体,制作 BDF 格式的字体。比如我们编辑一个带有点阵字体的 TTF 文件,会发现它有一个或多个 BMP 字体。

如下图:

于是,我就开始研究 BDF 文件格式。在网上搜索资料,得到以下的内容:

上面的点阵字符,描述的是汉字“啊”,它的点阵用二进制表示就是如下的样子:

看明白了吗?所以 BDF 的字体格式很简单。

上面的字体大小是 16*16,正好是 8 的倍数,那么,如果字体的大小不是 8 的倍数怎么办呢?

看下面的例子:

横向扩展成 8 的倍数,末位补 0 即可。