summaryrefslogtreecommitdiff
path: root/include/lib/pixelfont/ttf-to-font.py
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2021-11-29 22:08:28 +0100
committerDaniel Friesel <derf@finalrewind.org>2021-11-29 22:08:28 +0100
commite54cf737b446355b5863a7f31fe4d5d89d037ea4 (patch)
tree3bfc88dd2ac97cfe6906937926879925e03780ae /include/lib/pixelfont/ttf-to-font.py
parent131f82839404f176a82330ac7fda20445a97cd88 (diff)
Add Terminus 16-pixel font
Diffstat (limited to 'include/lib/pixelfont/ttf-to-font.py')
-rwxr-xr-xinclude/lib/pixelfont/ttf-to-font.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/lib/pixelfont/ttf-to-font.py b/include/lib/pixelfont/ttf-to-font.py
new file mode 100755
index 0000000..50297e5
--- /dev/null
+++ b/include/lib/pixelfont/ttf-to-font.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+
+import PIL
+import PIL.ImageDraw
+import PIL.ImageFont
+
+if __name__ == "__main__":
+ font = PIL.ImageFont.truetype(
+ "/usr/share/fonts/truetype/terminus/TerminusTTF-4.46.0.ttf", size=14
+ )
+
+ for char in range(0x20, 0x7F):
+ fontimg = PIL.Image.new("1", (16, 16))
+ draw = PIL.ImageDraw.Draw(fontimg)
+ draw.text((0, 0), chr(char), font=font, fill=255)
+
+ bbox = fontimg.getbbox()
+
+ if bbox is None:
+ print(
+ "glyph_line_t GLYPH_ATTR chr_032[] = {0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; // <spac>"
+ )
+ continue
+
+ left, upper, right, lower = bbox
+ fontimg = fontimg.crop((left, 0, right, 15))
+
+ fontimg = fontimg.transpose(PIL.Image.ROTATE_270)
+ fontbytes = fontimg.tobytes()
+
+ glyph_len = len(fontbytes)
+ glyph_data = "{" + ",".join(map(lambda x: f"0x{x:02x}", fontbytes)) + "}"
+
+ print(
+ f"glyph_line_t GLYPH_ATTR chr_{char:03d}[] = {glyph_data}; // {chr(char)}"
+ )