diff mbox series

[v2,1/1] video: add DejaVu Mono font

Message ID 20210301181534.7618-1-xypron.glpk@gmx.de
State Under Review
Delegated to: Anatolij Gustschin
Headers show
Series [v2,1/1] video: add DejaVu Mono font | expand

Commit Message

Heinrich Schuchardt March 1, 2021, 6:15 p.m. UTC
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 <xypron.glpk@gmx.de>
---
v2:
	add two symbols used by GRUB
	add the FontForge script used to generate the reduce font
---
 Licenses/dejavu_font_license.txt    | 187 ++++++++++++++++++++
 drivers/video/console_truetype.c    |   4 +
 drivers/video/fonts/437.ff          | 263 ++++++++++++++++++++++++++++
 drivers/video/fonts/Kconfig         |  10 +-
 drivers/video/fonts/Makefile        |   1 +
 drivers/video/fonts/dejavu_mono.ttf | Bin 0 -> 41104 bytes
 6 files changed, 464 insertions(+), 1 deletion(-)
 create mode 100644 Licenses/dejavu_font_license.txt
 create mode 100755 drivers/video/fonts/437.ff
 create mode 100644 drivers/video/fonts/dejavu_mono.ttf

GIT binary patch
literal 41104
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

literal 0
HcmV?d00001

--
2.30.1
diff mbox series

Patch

diff --git a/Licenses/dejavu_font_license.txt b/Licenses/dejavu_font_license.txt
new file mode 100644
index 0000000000..8d71958606
--- /dev/null
+++ b/Licenses/dejavu_font_license.txt
@@ -0,0 +1,187 @@ 
+Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
+Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
+
+
+Bitstream Vera Fonts Copyright
+------------------------------
+
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
+a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of the fonts accompanying this license ("Fonts") and associated
+documentation files (the "Font Software"), to reproduce and distribute the
+Font Software, including without limitation the rights to use, copy, merge,
+publish, distribute, and/or sell copies of the Font Software, and to permit
+persons to whom the Font Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright and trademark notices and this permission notice shall
+be included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular
+the designs of glyphs or characters in the Fonts may be modified and
+additional glyphs or characters may be added to the Fonts, only if the fonts
+are renamed to names not containing either the words "Bitstream" or the word
+"Vera".
+
+This License becomes null and void to the extent applicable to Fonts or Font
+Software that has been modified and is distributed under the "Bitstream
+Vera" names.
+
+The Font Software may be sold as part of a larger software package but no
+copy of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
+FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
+ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
+FONT SOFTWARE.
+
+Except as contained in this notice, the names of Gnome, the Gnome
+Foundation, and Bitstream Inc., shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this Font Software
+without prior written authorization from the Gnome Foundation or Bitstream
+Inc., respectively. For further information, contact: fonts at gnome dot
+org.
+
+Arev Fonts Copyright
+------------------------------
+
+Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the fonts accompanying this license ("Fonts") and
+associated documentation files (the "Font Software"), to reproduce
+and distribute the modifications to the Bitstream Vera Font Software,
+including without limitation the rights to use, copy, merge, publish,
+distribute, and/or sell copies of the Font Software, and to permit
+persons to whom the Font Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright and trademark notices and this permission notice
+shall be included in all copies of one or more of the Font Software
+typefaces.
+
+The Font Software may be modified, altered, or added to, and in
+particular the designs of glyphs or characters in the Fonts may be
+modified and additional glyphs or characters may be added to the
+Fonts, only if the fonts are renamed to names not containing either
+the words "Tavmjong Bah" or the word "Arev".
+
+This License becomes null and void to the extent applicable to Fonts
+or Font Software that has been modified and is distributed under the
+"Tavmjong Bah Arev" names.
+
+The Font Software may be sold as part of a larger software package but
+no copy of one or more of the Font Software typefaces may be sold by
+itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
+TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+Except as contained in this notice, the name of Tavmjong Bah shall not
+be used in advertising or otherwise to promote the sale, use or other
+dealings in this Font Software without prior written authorization
+from Tavmjong Bah. For further information, contact: tavmjong @ free
+. fr.
+
+TeX Gyre DJV Math
+-----------------
+Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
+
+Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski
+(on behalf of TeX users groups) are in public domain.
+
+Letters imported from Euler Fraktur from AMSfonts are (c) American
+Mathematical Society (see below).
+Bitstream Vera Fonts Copyright
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera
+is a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of the fonts accompanying this license (“Fonts”) and associated
+documentation
+files (the “Font Software”), to reproduce and distribute the Font Software,
+including without limitation the rights to use, copy, merge, publish,
+distribute,
+and/or sell copies of the Font Software, and to permit persons  to whom
+the Font Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright and trademark notices and this permission notice
+shall be
+included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular
+the designs of glyphs or characters in the Fonts may be modified and
+additional
+glyphs or characters may be added to the Fonts, only if the fonts are
+renamed
+to names not containing either the words “Bitstream” or the word “Vera”.
+
+This License becomes null and void to the extent applicable to Fonts or
+Font Software
+that has been modified and is distributed under the “Bitstream Vera”
+names.
+
+The Font Software may be sold as part of a larger software package but
+no copy
+of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
+FOUNDATION
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
+SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN
+ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
+INABILITY TO USE
+THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
+Except as contained in this notice, the names of GNOME, the GNOME
+Foundation,
+and Bitstream Inc., shall not be used in advertising or otherwise to promote
+the sale, use or other dealings in this Font Software without prior written
+authorization from the GNOME Foundation or Bitstream Inc., respectively.
+For further information, contact: fonts at gnome dot org.
+
+AMSFonts (v. 2.2) copyright
+
+The PostScript Type 1 implementation of the AMSFonts produced by and
+previously distributed by Blue Sky Research and Y&Y, Inc. are now freely
+available for general use. This has been accomplished through the
+cooperation
+of a consortium of scientific publishers with Blue Sky Research and Y&Y.
+Members of this consortium include:
+
+Elsevier Science IBM Corporation Society for Industrial and Applied
+Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS)
+
+In order to assure the authenticity of these fonts, copyright will be
+held by
+the American Mathematical Society. This is not meant to restrict in any way
+the legitimate use of the fonts, such as (but not limited to) electronic
+distribution of documents containing these fonts, inclusion of these fonts
+into other public domain or commercial font collections or computer
+applications, use of the outline data to create derivative fonts and/or
+faces, etc. However, the AMS does require that the AMS copyright notice be
+removed from any derivative versions of the fonts which have been altered in
+any way. In addition, to ensure the fidelity of TeX documents using Computer
+Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces,
+has requested that any alterations which yield different font metrics be
+given a different name.
+
+$Id$
diff --git a/drivers/video/console_truetype.c b/drivers/video/console_truetype.c
index 293b3a5ef4..b9caf2dd0c 100644
--- a/drivers/video/console_truetype.c
+++ b/drivers/video/console_truetype.c
@@ -490,6 +490,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
@@ -503,6 +504,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 0000000000..065709a218
--- /dev/null
+++ b/drivers/video/fonts/437.ff
@@ -0,0 +1,263 @@ 
+#!/usr/bin/fontforge
+# SPDX-License-Identifier: GPL-2.0+
+#
+# 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
+
+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("u0020")
+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")
+
+# Characters used by GRUB
+
+# BLACK UP-POINTING TRIANGLE
+SelectMore("u25b2")
+# BLACK DOWN-POINTING TRIANGLE
+SelectMore("u25bc")
+
+SelectInvert()
+DetachAndRemoveGlyphs()
+
+Print("Saving ", $2)
+Generate($2)
diff --git a/drivers/video/fonts/Kconfig b/drivers/video/fonts/Kconfig
index c692fa9602..f0cc963fb6 100644
--- a/drivers/video/fonts/Kconfig
+++ b/drivers/video/fonts/Kconfig
@@ -7,7 +7,6 @@  menu "TrueType Fonts"
 config CONSOLE_TRUETYPE_NIMBUS
 	bool "Nimbus Sans Regular"
 	depends on CONSOLE_TRUETYPE
-	default y
 	help
 	  Nimbus Sans L is a version of Nimbus Sans using Adobe font sources.
 	  It was designed in 1987. A subset of Nimbus Sans L were released
@@ -49,4 +48,13 @@  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
+	default y
+	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 4fca120b73..1111f92a2c 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..2d03f87ebabfd3750d85390dd696e360540aaafe