From 3a9795581eb7d2c7978802d2d91832ce00e0efe4 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Thu, 20 Nov 2025 20:34:48 +0100 Subject: [PATCH] video: add DejaVu Mono font A TrueType font for U-Boot should fulfill the following requirements: * mono spaced * support full code page 437 * easily readable Unfortunately none of the fonts provided with U-Boot fulfills all of these requirements. Let's add the DejaVu Mono font. To reduce the code size the characters are limited to code page 437. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- drivers/video/console_truetype.c | 4 + drivers/video/fonts/437.ff | 291 ++++++++++++++++++++++++++++ drivers/video/fonts/Kconfig | 8 + drivers/video/fonts/Makefile | 1 + drivers/video/fonts/dejavu_mono.ttf | Bin 0 -> 44508 bytes 5 files changed, 304 insertions(+) create mode 100755 drivers/video/fonts/437.ff create mode 100644 drivers/video/fonts/dejavu_mono.ttf diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c index 6d2c2c2e177..eaf169e8386 100644 --- a/drivers/video/console_truetype.c +++ b/drivers/video/console_truetype.c @@ -528,6 +528,7 @@ FONT_DECL(nimbus_sans_l_regular); FONT_DECL(ankacoder_c75_r); FONT_DECL(rufscript010); FONT_DECL(cantoraone_regular); +FONT_DECL(dejavu_mono); static struct font_info font_table[] = { #ifdef CONFIG_CONSOLE_TRUETYPE_NIMBUS @@ -541,6 +542,9 @@ static struct font_info font_table[] = { #endif #ifdef CONFIG_CONSOLE_TRUETYPE_CANTORAONE FONT_ENTRY(cantoraone_regular), +#endif +#ifdef CONFIG_CONSOLE_TRUETYPE_DEJAVU + FONT_ENTRY(dejavu_mono), #endif {} /* sentinel */ }; diff --git a/drivers/video/fonts/437.ff b/drivers/video/fonts/437.ff new file mode 100755 index 00000000000..a6e3b9efc8f --- /dev/null +++ b/drivers/video/fonts/437.ff @@ -0,0 +1,291 @@ +#!/usr/bin/fontforge +# SPDX-License-Identifier: GPL-2.0-or-later +# +# This script uses FontForge to strip unused symbols from a TrueType font. +# Only symbols in code page 437 and two glyphs used by GRUB are left in. +# +# Usage +# +# ./437.ff +# +# e.g. +# +# ./437.ff dejavu-fonts-2.37/src/DejaVuSansMono.sfd dejavu_mono.ttf +# +# or +# +# ./437.ff /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf dejavu_mono.ttf + +Print() +Print("Strip unused symbols from TrueType font") +if ($argc != 3) + Print() + Print("Usage:") + Print($0, " ") + return +endif + +Print("Loading ", $1) +Open($1) + +# Code page 437 +SelectMore("u263A") # WHITE SMILING FACE +SelectMore("u263B") # BLACK SMILING FACE +SelectMore("u2665") # BLACK HEART SUIT +SelectMore("u2666") # BLACK DIAMOND SUIT +SelectMore("u2663") # BLACK CLUB SUIT +SelectMore("u2660") # BLACK SPADE SUIT +SelectMore("u2022") # BULLET +SelectMore("u25D8") # INVERSE BULLET +SelectMore("u25CB") # WHITE CIRCLE +SelectMore("u25D9") # INVERSE WHITE CIRCLE +SelectMore("u2642") # MALE SIGN +SelectMore("u2640") # FEMALE SIGN +SelectMore("u266A") # EIGHTH NOTE +SelectMore("u266B") # BEAMED EIGHTH NOTES +SelectMore("u263C") # WHITE SUN WITH RAYS +SelectMore("u25BA") # BLACK RIGHT-POINTING POINTER +SelectMore("u25C4") # BLACK LEFT-POINTING POINTER +SelectMore("u2195") # UP DOWN ARROW +SelectMore("u203C") # DOUBLE EXCLAMATION MARK +SelectMore("u00B6") # PILCROW SIGN +SelectMore("u00A7") # SECTION SIGN +SelectMore("u25AC") # BLACK RECTANGLE +SelectMore("u21A8") # UP DOWN ARROW WITH BASE +SelectMore("u2191") # UPWARDS ARROW +SelectMore("u2193") # DOWNWARDS ARROW +SelectMore("u2192") # RIGHTWARDS ARROW +SelectMore("u2190") # LEFTWARDS ARROW +SelectMore("u221F") # RIGHT ANGLE +SelectMore("u2194") # LEFT RIGHT ARROW +SelectMore("u25B2") # BLACK UP-POINTING TRIANGLE +SelectMore("u25BC") # BLACK DOWN-POINTING TRIANGLE +SelectMore("u0020") # SPACE +SelectMore("u0021") +SelectMore("u0022") +SelectMore("u0023") +SelectMore("u0024") +SelectMore("u0025") +SelectMore("u0026") +SelectMore("u0027") +SelectMore("u0028") +SelectMore("u0029") +SelectMore("u002a") +SelectMore("u002b") +SelectMore("u002c") +SelectMore("u002d") +SelectMore("u002e") +SelectMore("u002f") +SelectMore("u0030") +SelectMore("u0031") +SelectMore("u0032") +SelectMore("u0033") +SelectMore("u0034") +SelectMore("u0035") +SelectMore("u0036") +SelectMore("u0037") +SelectMore("u0038") +SelectMore("u0039") +SelectMore("u003a") +SelectMore("u003b") +SelectMore("u003c") +SelectMore("u003d") +SelectMore("u003e") +SelectMore("u003f") +SelectMore("u0040") +SelectMore("u0041") +SelectMore("u0042") +SelectMore("u0043") +SelectMore("u0044") +SelectMore("u0045") +SelectMore("u0046") +SelectMore("u0047") +SelectMore("u0048") +SelectMore("u0049") +SelectMore("u004a") +SelectMore("u004b") +SelectMore("u004c") +SelectMore("u004d") +SelectMore("u004e") +SelectMore("u004f") +SelectMore("u0050") +SelectMore("u0051") +SelectMore("u0052") +SelectMore("u0053") +SelectMore("u0054") +SelectMore("u0055") +SelectMore("u0056") +SelectMore("u0057") +SelectMore("u0058") +SelectMore("u0059") +SelectMore("u005a") +SelectMore("u005b") +SelectMore("u005c") +SelectMore("u005d") +SelectMore("u005e") +SelectMore("u005f") +SelectMore("u0060") +SelectMore("u0061") +SelectMore("u0062") +SelectMore("u0063") +SelectMore("u0064") +SelectMore("u0065") +SelectMore("u0066") +SelectMore("u0067") +SelectMore("u0068") +SelectMore("u0069") +SelectMore("u006a") +SelectMore("u006b") +SelectMore("u006c") +SelectMore("u006d") +SelectMore("u006e") +SelectMore("u006f") +SelectMore("u0070") +SelectMore("u0071") +SelectMore("u0072") +SelectMore("u0073") +SelectMore("u0074") +SelectMore("u0075") +SelectMore("u0076") +SelectMore("u0077") +SelectMore("u0078") +SelectMore("u0079") +SelectMore("u007a") +SelectMore("u007b") +SelectMore("u007c") +SelectMore("u007d") +SelectMore("u007e") +SelectMore("u00c7") +SelectMore("u00fc") +SelectMore("u00e9") +SelectMore("u00e2") +SelectMore("u00e4") +SelectMore("u00e0") +SelectMore("u00e5") +SelectMore("u00e7") +SelectMore("u00ea") +SelectMore("u00eb") +SelectMore("u00e8") +SelectMore("u00ef") +SelectMore("u00ee") +SelectMore("u00ec") +SelectMore("u00c4") +SelectMore("u00c5") +SelectMore("u00c9") +SelectMore("u00e6") +SelectMore("u00c6") +SelectMore("u00f4") +SelectMore("u00f6") +SelectMore("u00f2") +SelectMore("u00fb") +SelectMore("u00f9") +SelectMore("u00ff") +SelectMore("u00d6") +SelectMore("u00dc") +SelectMore("u00a2") +SelectMore("u00a3") +SelectMore("u00a5") +SelectMore("u20a7") +SelectMore("u0192") +SelectMore("u00e1") +SelectMore("u00ed") +SelectMore("u00f3") +SelectMore("u00fa") +SelectMore("u00f1") +SelectMore("u00d1") +SelectMore("u00aa") +SelectMore("u00ba") +SelectMore("u00bf") +SelectMore("u2310") +SelectMore("u00ac") +SelectMore("u00bd") +SelectMore("u00bc") +SelectMore("u00a1") +SelectMore("u00ab") +SelectMore("u00bb") +SelectMore("u2591") +SelectMore("u2592") +SelectMore("u2593") +SelectMore("u2502") +SelectMore("u2524") +SelectMore("u2561") +SelectMore("u2562") +SelectMore("u2556") +SelectMore("u2555") +SelectMore("u2563") +SelectMore("u2551") +SelectMore("u2557") +SelectMore("u255d") +SelectMore("u255c") +SelectMore("u255b") +SelectMore("u2510") +SelectMore("u2514") +SelectMore("u2534") +SelectMore("u252c") +SelectMore("u251c") +SelectMore("u2500") +SelectMore("u253c") +SelectMore("u255e") +SelectMore("u255f") +SelectMore("u255a") +SelectMore("u2554") +SelectMore("u2569") +SelectMore("u2566") +SelectMore("u2560") +SelectMore("u2550") +SelectMore("u256c") +SelectMore("u2567") +SelectMore("u2568") +SelectMore("u2564") +SelectMore("u2565") +SelectMore("u2559") +SelectMore("u2558") +SelectMore("u2552") +SelectMore("u2553") +SelectMore("u256b") +SelectMore("u256a") +SelectMore("u2518") +SelectMore("u250c") +SelectMore("u2588") +SelectMore("u2584") +SelectMore("u258c") +SelectMore("u2590") +SelectMore("u2580") +SelectMore("u03b1") +SelectMore("u00df") +SelectMore("u0393") +SelectMore("u03c0") +SelectMore("u03a3") +SelectMore("u03c3") +SelectMore("u00b5") +SelectMore("u03c4") +SelectMore("u03a6") +SelectMore("u0398") +SelectMore("u03a9") +SelectMore("u03b4") +SelectMore("u221e") +SelectMore("u03c6") +SelectMore("u03b5") +SelectMore("u2229") +SelectMore("u2261") +SelectMore("u00b1") +SelectMore("u2265") +SelectMore("u2264") +SelectMore("u2320") +SelectMore("u2321") +SelectMore("u00f7") +SelectMore("u2248") +SelectMore("u00b0") +SelectMore("u2219") +SelectMore("u00b7") +SelectMore("u221a") +SelectMore("u207f") +SelectMore("u00b2") +SelectMore("u25a0") +SelectMore("u00a0") + +SelectInvert() +DetachAndRemoveGlyphs() + +Print("Saving ", $2) +Generate($2) diff --git a/drivers/video/fonts/Kconfig b/drivers/video/fonts/Kconfig index c692fa9602f..2568e48ecf2 100644 --- a/drivers/video/fonts/Kconfig +++ b/drivers/video/fonts/Kconfig @@ -49,4 +49,12 @@ config CONSOLE_TRUETYPE_CANTORAONE License: SIL Open Font Licence http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL +config CONSOLE_TRUETYPE_DEJAVU + bool "DejaVu Sans Mono Regular" + depends on CONSOLE_TRUETYPE + help + This mono spaced font contains all code page 437 characters. + From https://sourceforge.net/projects/dejavu/ + License: DejaVu Font License + endmenu diff --git a/drivers/video/fonts/Makefile b/drivers/video/fonts/Makefile index 4fca120b73c..1111f92a2c6 100644 --- a/drivers/video/fonts/Makefile +++ b/drivers/video/fonts/Makefile @@ -7,3 +7,4 @@ obj-$(CONFIG_CONSOLE_TRUETYPE_NIMBUS) += nimbus_sans_l_regular.o obj-$(CONFIG_CONSOLE_TRUETYPE_ANKACODER) += ankacoder_c75_r.o obj-$(CONFIG_CONSOLE_TRUETYPE_RUFSCRIPT) += rufscript010.o obj-$(CONFIG_CONSOLE_TRUETYPE_CANTORAONE) += cantoraone_regular.o +obj-$(CONFIG_CONSOLE_TRUETYPE_DEJAVU) += dejavu_mono.o diff --git a/drivers/video/fonts/dejavu_mono.ttf b/drivers/video/fonts/dejavu_mono.ttf new file mode 100644 index 0000000000000000000000000000000000000000..47c0411c2a52d130a732151b1540e5d0f799b72c GIT binary patch literal 44508 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