From: Heinrich Schuchardt Date: Thu, 20 Nov 2025 19:34:48 +0000 (+0100) Subject: video: add DejaVu Mono font X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a9795581eb7d2c7978802d2d91832ce00e0efe4;p=thirdparty%2Fu-boot.git 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 --- 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 00000000000..47c0411c2a5 Binary files /dev/null and b/drivers/video/fonts/dejavu_mono.ttf differ