实际上我有一个.efi应用程序(打算是一个非常早期的内核),设置图形以及其他东西,我用这个图形来制作一个“set_pixel”函数,几天前我需要打印文本。 经过几天的研究,我发现我唯一的解决方案是用这个“set_pixel”函数和我做的其他一些派生(“draw_line”等)来编写我需要使用的所有字符。 你可以想象,这是一个非常乏味和缓慢的任务,还有另一个解决方案,而不是“手工”写下所有字符?导入字体并使用它的方法?提前致谢!
这是我自己的解决方案。
我以头文件的形式创建了一个简单的字体(现在不完整......)。然后我使用这个函数来将一个字符绘制到GOP缓冲区中:
void drawChar(uint32_t *buffer, uint32_t x, uint32_t y, uint32_t color, wchar_t charcode) {
extern wchar_t font_system_8x16[KAOS_FONTS_SIZE];
wchar_t p = charcode * 128 - 128; // Size of a font's character
for (int l = 0; l < 16; l++) {
for (int c = 0; c < 8; c++) {
if (font_system_8x16[p] == 1) {
drawPoint(buffer, x + c, y + l, color);
}
p++;
}
}
}
随意获得灵感。
编辑:要更快地生成头文件,请查看此C header file with bitmapped fonts