我需要对像素缓冲区做一些基本的文本渲染,我认为有一个由 char 索引的表,并将字母表示为二进制数组就足够了......任何人都知道一个免费的标题就这样?
例子:
char data[256][8][8];
void init()
{
data['a'] = {
{0,0,1,1,1,0,0,0},
{0,1,0,0,0,1,0,0},
{0,0,0,0,0,0,1,0},
{0,0,1,1,1,0,1,0},
{0,1,0,0,0,1,1,0},
{0,1,0,0,0,0,1,0},
{0,1,0,0,0,1,1,0},
{0,0,1,1,1,0,1,0},
};
}
我可以继续学习字母表的其余部分,但那样我就不需要问...¡但这给了我一个主意!如果没有现成可用的带有位图字体的免费标题,每个答案都可以实现一个字母,我可以在这里组装整个文件 ^_^
最佳答案
更新:我试过这种方法,结果字符相当扭曲。 Nimbus 可能是一个糟糕的字体选择。
使用 imagemagick 方法。你可以用这个生成每个字符:
convert -resize 7x13\! -font Nimbus-Mono-Regular -pointsize 10 label:A A.xbm
A.xbm 看起来像:
#define A_width 7
#define A_height 13
static char A_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x00, 0x3C, 0x00, 0x66, 0x00, 0x00,
0x00, };
遍历所需的字符并将其组装到单个头文件中。
尽管 Nimbus-Mono-Regular 是一种等宽字体,但有时字符宽度会偏离一个像素。转换选项“-resize 7x13!”强制 7x13 输出大小。同样,这可能是 Nimbus 字体特有的问题。
关于带有位图字体的 C 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2156572/