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 <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Heinrich Schuchardt
2025-11-20 20:34:48 +01:00
committed by Tom Rini
parent 8de6e8f8a0
commit 3a9795581e
5 changed files with 304 additions and 0 deletions

View File

@@ -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 */
};

291
drivers/video/fonts/437.ff Executable file
View File

@@ -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 <font_in> <font_out.ttf>
#
# 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, " <font_in> <font_out.ttf>")
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)

View File

@@ -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

View File

@@ -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

Binary file not shown.