-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfont.py
77 lines (66 loc) · 5.03 KB
/
font.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Convert glyph bitmaps to uint32 literals
# https://github.com/sevmeyer/textshader
# SPDX-License-Identifier: 0BSD
BITMAPS = (
" ..... ..1.. .1.1. .1.1. ..1.. .11.. .111. ..1.. ...1. .1... ..1.. ..... ..... ..... ..... ...1. "
" ..... ..1.. .1.1. 11111 .1111 .11.1 1.... ..1.. ..1.. ..1.. 11111 ..1.. ..... ..... ..... ...1. "
" ..... ..1.. .1.1. .1.1. 1.... ...1. .1111 ..1.. ..1.. ..1.. ..1.. ..1.. ..... ..... ..... ..1.. "
" ..... ..1.. ..... .1.1. .111. ..1.. 1..1. ..... ..1.. ..1.. .1.1. 11111 ..... 11111 ..... ..1.. "
" ..... ..... ..... 11111 ....1 .1.11 1..1. ..... ..1.. ..1.. ..... ..1.. ..11. ..... ..11. .1... "
" ..... ..1.. ..... .1.1. 1111. ...11 .111. ..... ..1.. ..1.. ..... ..1.. ..11. ..... ..11. .1... "
" ..... ..... ..... ..... ..1.. ..... ..... ..... ...1. .1... ..... ..... ...1. ..... ..... ..... "
" .111. ...1. .111. 1111. ...11 11111 .111. 11111 .111. .111. ..... ..... ..... ..... ..... .111. "
" 1...1 ..11. 1...1 ....1 ..1.1 1.... 1.... ....1 1...1 1...1 ..11. ..11. ...1. ..... .1... ....1 "
" 1...1 .1.1. ....1 ..11. .1..1 1111. 1111. ...1. .111. 1...1 ..11. ..11. ..1.. 11111 ..1.. ....1 "
" 1...1 ...1. .111. ....1 1...1 ....1 1...1 ...1. 1...1 .1111 ..... ..... .1... ..... ...1. ..11. "
" 1...1 ...1. 1.... 1...1 11111 1...1 1...1 ..1.. 1...1 ....1 ..11. ..11. ..1.. 11111 ..1.. ..... "
" .111. ...1. 11111 .111. ....1 .111. .111. ..1.. .111. .111. ..11. ..11. ...1. ..... .1... ..1.. "
" ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ...1. ..... ..... ..... ..... "
" .111. .111. 1111. .111. 1111. 11111 11111 .1111 1...1 11111 .1111 1...1 1.... 1...1 1...1 .111. "
" 1...1 1...1 1...1 1...1 1...1 1.... 1.... 1.... 1...1 ..1.. ....1 1..1. 1.... 11.11 11..1 1...1 "
" 1.111 1...1 1111. 1.... 1...1 1111. 1.... 1.111 11111 ..1.. ....1 1.1.. 1.... 1.1.1 1.1.1 1...1 "
" 1.1.1 11111 1...1 1.... 1...1 1.... 1111. 1...1 1...1 ..1.. ....1 111.. 1.... 1...1 1..11 1...1 "
" 1.111 1...1 1...1 1...1 1...1 1.... 1.... 1...1 1...1 ..1.. 1...1 1..1. 1.... 1...1 1...1 1...1 "
" 1.... 1...1 1111. .111. 1111. 11111 1.... .1111 1...1 11111 .111. 1...1 11111 1...1 1...1 .111. "
" .111. ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... "
" 1111. .111. 1111. .1111 11111 1...1 1...1 1...1 1...1 1...1 11111 .111. .1... .111. ..1.. ..... "
" 1...1 1...1 1...1 1.... ..1.. 1...1 1...1 1...1 .1.1. 1...1 ...1. .1... .1... ...1. .1.1. ..... "
" 1...1 1...1 1...1 .111. ..1.. 1...1 1...1 1.1.1 ..1.. .1.1. ..1.. .1... ..1.. ...1. 1...1 ..... "
" 1111. 1.1.1 1111. ....1 ..1.. 1...1 .1.1. 1.1.1 ..1.. ..1.. .1... .1... ..1.. ...1. ..... ..... "
" 1.... 1..1. 1..1. 1...1 ..1.. 1...1 .1.1. .1.1. .1.1. ..1.. 1.... .1... ...1. ...1. ..... ..... "
" 1.... .11.1 1...1 .111. ..1.. .111. ..1.. .1.1. 1...1 ..1.. 11111 .1... ...1. ...1. ..... ..... "
" ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... ..... .111. ..... .111. ..... 11111 "
" .1... ..... 1.... ..... ....1 ..... .111. ..... 1.... ...1. ....1 1.... 111.. ..... ..... ..... "
" ..1.. .111. 1111. .111. .1111 .111. 1...1 .1111 1111. ..... ..... 1...1 ..1.. 1111. 1111. .111. "
" ...1. ....1 1...1 1...1 1...1 1...1 1.... 1...1 1...1 1111. .1111 1..1. ..1.. 1.1.1 1...1 1...1 "
" ..... .1111 1...1 1.... 1...1 11111 1111. 1...1 1...1 ...1. ....1 1.1.. ..1.. 1.1.1 1...1 1...1 "
" ..... 1...1 1...1 1...1 1...1 1.... 1.... .1111 1...1 ...1. ....1 11.1. ..1.. 1.1.1 1...1 1...1 "
" ..... .1111 1111. .111. .1111 .111. 1.... ....1 1...1 ...1. 1...1 1...1 ...11 1.1.1 1...1 .111. "
" ..... ..... ..... ..... ..... ..... ..... .111. ..... ..... .111. ..... ..... ..... ..... ..... "
" ..... ..... ..... ..... 1.... ..... ..... ..... ..... ..... ..... ..11. ..1.. .11.. ..... ..... "
" 1111. .1111 1111. .1111 1111. 1...1 1...1 1...1 1...1 1...1 11111 .1... ..1.. ...1. ..... ..... "
" 1...1 1...1 1...1 1.... 1.... 1...1 1...1 1.1.1 .1.1. 1...1 ...1. .1... ..1.. ...1. .1..1 ..... "
" 1...1 1...1 1.... .111. 1.... 1...1 .1.1. 1.1.1 ..1.. 1...1 ..1.. 1.... ..1.. ....1 1.1.1 ..... "
" 1111. .1111 1.... ....1 1...1 1...1 .1.1. .1.1. .1.1. .1111 .1... .1... ..1.. ...1. 1..1. ..... "
" 1.... ....1 1.... 1111. .111. .1111 ..1.. .1.1. 1...1 ....1 11111 .1... ..1.. ...1. ..... ..... "
" 1.... ....1 ..... ..... ..... ..... ..... ..... ..... .111. ..... ..11. ..1.. .11.. ..... ..... ").split()
ROWS = 6
COLS = 16
NEWLINE_EVERY = 6
out = ""
for row in range(ROWS):
for col in range(COLS):
start = row*COLS*7 + col
lines = [BITMAPS[start + y*COLS] for y in range(7)]
lines = [line[::-1].replace(".", "0") for line in lines]
bits = ""
if lines[6] == "00000": bits = "00" + "".join(lines[:6])
elif lines[0] == "00000": bits = "01" + "".join(lines[1:])
elif lines[0] == lines[6]: bits = "10" + "".join(lines[1:])
elif lines[3] == lines[4]: bits = "11" + "".join(lines[5:] + lines[:4])
if len(bits) != 32:
raise ValueError(f"Invalid bitmap: {chr(0x20 + row*COLS + col)}")
out += f"0x{int(bits, 2):08X},"
if (row*COLS + col) % NEWLINE_EVERY == NEWLINE_EVERY - 1:
out += "\n"
print(out)