Save tool scripts like parse_font.py in a scripts dir

This commit is contained in:
Justin C. Miller
2018-04-12 09:02:56 -07:00
parent 1f396ced8e
commit 656d5dfedf

46
scripts/parse_font.py Normal file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env python3
MAGIC = (0x72, 0xb5, 0x4a, 0x86)
from collections import namedtuple
PSF2 = namedtuple("PSF2", ["version", "offset", "flags", "count", "charsize", "height", "width"])
def read_header(data):
from struct import unpack_from, calcsize
fmt = "BBBBIIIIIII"
values = unpack_from(fmt, data)
if values[:len(MAGIC)] != MAGIC:
raise Exception("Bad magic number in header")
return PSF2(*values[len(MAGIC):])
def print_glyph(header, data):
bw = (header.width + 7) // 8
fmt = "{:08b}" * bw
for y in range(header.height):
b = data[y*bw:(y+1)*bw]
s = fmt.format(*b).replace("0", " ").replace("1", "*")
print(s)
print("")
def display_font(filename):
data = open(filename, 'rb').read()
header = read_header(data)
print(header)
c = header.charsize
for i in range(0, header.count):
n = i * c + header.offset
print("Glyph {}:".format(i))
print_glyph(header, data[n:n+c])
if __name__ == "__main__":
import sys
for filename in sys.argv[1:]:
display_font(filename)