[U-Boot] [PATCH 6/8] video/console: Convert UTF-8 codes to CP437 code points

Alexander Graf agraf at csgraf.de
Sun Mar 31 18:28:29 UTC 2019


On 31.03.19 04:18, Simon Glass wrote:
> Hi Andre,
>
> On Fri, 22 Mar 2019 at 19:32, Andre Przywara <andre.przywara at arm.com> wrote:
>> The character set used by U-Boot's built-in fonts is the old "code
>> page 437" (from the original IBM PC).
>> However people would probably expect UTF-8 on a terminal these days, the
>> UEFI code definitely does.
>>
>> Provide a conversion routine to convert a UTF-8 byte stream into a CP437
>> character code. This uses a combination of arrays and switch/case
>> statements to provide an efficient way of translating the large Unicode
>> character range to the 8 bits used for CP437.
>>
>> This fixes UEFI display on the DM_VIDEO console, which were garbled for
>> any non-ASCII characters, for instance for the block graphic characters
>> used by Grub to display the menu.
>>
>> Signed-off-by: Andre Przywara <andre.przywara at arm.com>
>> ---
>>  drivers/video/Makefile            |   1 +
>>  drivers/video/utf8_cp437.c        | 170 ++++++++++++++++++++++++++++++++++++++
>>  drivers/video/vidconsole-uclass.c |   8 +-
>>  include/video_console.h           |   9 ++
>>  4 files changed, 186 insertions(+), 2 deletions(-)
>>  create mode 100644 drivers/video/utf8_cp437.c
> OMG unicode comes to U-Boot. This might be the beginning of the end.
>
> Can we make this a Kconfig option to avoid increasing code size? We
> can imply it when EFI is enabled.


This looks vaguely familiar. Take a look at include/cp437.h. We even
have a Kconfig option for it already :).

Alex


>
> Regards,
> Simon


More information about the U-Boot mailing list