Files
Civic-Segments/tooling/bdf-to-pngs.py
T
2026-05-16 21:30:35 -04:00

43 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python3
from subprocess import run
from bdfparser import Font
from PIL import Image
font = Font("civic-segments.bdf")
print(
f"This font's global size is "
f"{font.headers['fbbx']} x {font.headers['fbby']} (pixel), "
f"it contains {len(font)} glyphs."
)
chars_to_export = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
for char_str in chars_to_export:
char = font.glyph(char_str)
bitmap = char.draw()
im = Image.frombytes(
"RGBA",
(bitmap.width(), bitmap.height()),
bitmap.tobytes(
"RGBA",
bytesdict={
0: b"\x00\x00\x00\x00", # transparent background
1: b"\xff\xff\xff\xff", # white glyph
},
),
)
output_path = f"../resources/{char_str}.png"
im.save(output_path, "PNG")
run(
[
"zopflipng",
"-y",
"--iterations=500",
"--filters=01234mepb",
"--lossy_8bit",
"--lossy_transparent",
output_path,
output_path,
]
)