From cb4292dccfb7eba8d609c99727564b78dedc73e4 Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Sun, 10 Mar 2024 10:02:30 +0100 Subject: [PATCH] Allow to use custom framebuffer fonts --- sdk/xtdk/xtfw.h | 1 + xtoskrnl/hl/efifb.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/sdk/xtdk/xtfw.h b/sdk/xtdk/xtfw.h index ec490e3b..ca518e76 100644 --- a/sdk/xtdk/xtfw.h +++ b/sdk/xtdk/xtfw.h @@ -102,6 +102,7 @@ typedef struct _LOADER_GRAPHICS_INFORMATION_BLOCK UINT PixelsPerScanLine; UINT BitsPerPixel; UINT Pitch; + PVOID Font; } LOADER_GRAPHICS_INFORMATION_BLOCK, *PLOADER_GRAPHICS_INFORMATION_BLOCK; /* Boot Loader information block */ diff --git a/xtoskrnl/hl/efifb.c b/xtoskrnl/hl/efifb.c index ba2b5b89..d110f0ec 100644 --- a/xtoskrnl/hl/efifb.c +++ b/xtoskrnl/hl/efifb.c @@ -7,6 +7,7 @@ */ #include +#include /** @@ -108,6 +109,18 @@ HlInitializeFrameBuffer(VOID) return STATUS_DEVICE_NOT_READY; } + /* Check if custom font provided by bootloader */ + if(KeInitializationBlock->LoaderInformation.FrameBuffer.Font) + { + /* Use custom font */ + HlpFrameBufferData.Font = KeInitializationBlock->LoaderInformation.FrameBuffer.Font; + } + else + { + /* Use default font */ + HlpFrameBufferData.Font = (PVOID)&XtFbDefaultFont; + } + /* Save framebuffer information and mark display as initialized */ HlpFrameBufferData.Address = KeInitializationBlock->LoaderInformation.FrameBuffer.Address; HlpFrameBufferData.Width = KeInitializationBlock->LoaderInformation.FrameBuffer.Width;