无法在GOP图形(UE FI)中使用set_pixel函数打印文本

问题描述 投票:0回答:1

实际上我有一个.efi应用程序(打算是一个非常早期的内核),设置图形以及其他东西,我用这个图形来制作一个“set_pixel”函数,几天前我需要打印文本。 经过几天的研究,我发现我唯一的解决方案是用这个“set_pixel”函数和我做的其他一些派生(“draw_line”等)来编写我需要使用的所有字符。 你可以想象,这是一个非常乏味和缓慢的任务,还有另一个解决方案,而不是“手工”写下所有字符?导入字体并使用它的方法?提前致谢!

text fonts operating-system osdev uefi
1个回答
0
投票

这是我自己的解决方案。

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

© www.soinside.com 2019 - 2024. All rights reserved.