Hi Andre, On Sun, 9 Jan 2022 at 17:57, Andre Przywara <andre.przyw...@arm.com> wrote: > > The bitmap fonts (VGA 8x16 and friends) we import from Linux use the > 437 code page to map their glyphs. For U-Boot's own purposes this is > probably fine, but UEFI applications output Unicode, which only matches > in the very basic first 127 characters. > > Add a function that converts UTF-8 character sequences into the > respective CP437 code point, as far as the characters defined in there > allow this. This includes quite some international and box drawing > characters, which are used by UEFI applications. > > Signed-off-by: Andre Przywara <andre.przyw...@arm.com> > --- > drivers/video/Makefile | 1 + > drivers/video/utf8_cp437.c | 169 ++++++++++++++++++++++++++++++ > drivers/video/vidconsole-uclass.c | 6 +- > include/video_console.h | 9 ++ > 4 files changed, 184 insertions(+), 1 deletion(-) > create mode 100644 drivers/video/utf8_cp437.c >
[..] This code should only be enabled if UEFI is being used, to reduce code size. > diff --git a/include/video_console.h b/include/video_console.h > index a908f1412e8..f2d05e7f4e7 100644 > --- a/include/video_console.h > +++ b/include/video_console.h > @@ -83,6 +83,7 @@ struct vidconsole_priv { > int escape_len; > int row_saved; > int col_saved; > + u32 ucs; > bool cursor_visible; > char escape_buf[32]; > }; > @@ -304,6 +305,14 @@ static inline int vidconsole_memmove(struct udevice > *dev, void *dst, > return 0; > } > > +/* > + * Convert an UTF-8 byte into the corresponding character in the CP437 > + * code page. Returns 0 if that character is part of a multi-byte sequence. > + * for which *esc holds the state of. Repeatedly feed in more bytes until > + * the return value returns a non-0 character. > + */ > +uint8_t convert_utf8_to_cp437(uint8_t c, uint32_t *esc); Just a note that this should be below the next #endif : > + > #endif <here> > > #endif > -- > 2.17.6 > Regards, Simon