在 GOP 图形 (UEFI) 中使用 set_pixel 函数打印文本时出现问题

Trouble printing text with a set_pixel function in GOP graphics (UEFI)

实际上我有一个 .efi 应用程序(打算成为一个非常早期的内核),它可以设置图形和其他东西,我用这个图形来制作一个 "set_pixel" 函数,几天前我有打印文字的需求。
经过几天的研究,我发现我唯一的解决方案是编写我需要使用这个 "set_pixel" 函数和我所做的一些其他推导("draw_line" 等)的所有字符
可以想象,这是一项非常繁琐且缓慢的任务,除了写出所有字符 "by hand" 之外还有另一种解决方案吗?一种导入字体并使用它的方法?提前致谢!

这是我自己的解决方案。

我以头文件的形式创建了一个简单的字体(暂时不完整...)。 然后我使用这个函数将一个字符绘制到 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++;
        }
    }
}

https://bitbucket.org/cgerardin/kaos/src/0e6c92e02d549969ae8c8c7ee58af32e78ad1206/src/fonts/system-8x16.h?at=master&fileviewer=file-view-default

随时获取灵感。

编辑:要更快地生成头文件,请查看此 C header file with bitmapped fonts