WGPU is coming
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Bake an 8x16 1-bpp bitmap font (ASCII 32..127) from DejaVu Sans Mono 13px.
|
||||
|
||||
Output: Go source file with the atlas. One byte per glyph row, bit n = pixel
|
||||
at column n (LSB = leftmost), matching the kernel's (row >> col) & 1 lookup.
|
||||
"""
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
|
||||
FONT = "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf"
|
||||
SIZE = 13
|
||||
BASELINE = 12 # baseline row inside the 16px cell
|
||||
THRESH = 110
|
||||
|
||||
font = ImageFont.truetype(FONT, SIZE)
|
||||
atlas = []
|
||||
for c in range(32, 128):
|
||||
img = Image.new("L", (8, 16), 0)
|
||||
d = ImageDraw.Draw(img)
|
||||
d.text((0, BASELINE), chr(c), font=font, fill=255, anchor="ls")
|
||||
px = img.load()
|
||||
for y in range(16):
|
||||
b = 0
|
||||
for x in range(8):
|
||||
if px[x, y] >= THRESH:
|
||||
b |= 1 << x
|
||||
atlas.append(b)
|
||||
|
||||
def art(c):
|
||||
print(f"--- '{chr(c)}' ---")
|
||||
for y in range(16):
|
||||
row = atlas[(c - 32) * 16 + y]
|
||||
print("".join("#" if (row >> x) & 1 else "." for x in range(8)))
|
||||
|
||||
for c in "AgM%m0(":
|
||||
art(ord(c))
|
||||
|
||||
lines = []
|
||||
for i in range(0, len(atlas), 16):
|
||||
chunk = ", ".join(f"0x{b:02X}" for b in atlas[i:i+16])
|
||||
lines.append(f"\t{chunk},")
|
||||
body = "\n".join(lines)
|
||||
|
||||
src = f'''package generator
|
||||
|
||||
// 8x16 1-bpp bitmap font baked from DejaVu Sans Mono {SIZE}px (public-domain
|
||||
// style console glyphs). ASCII 32..127, one byte per row, LSB = leftmost pixel.
|
||||
var fontAtlas8x16 = [96 * 16]byte{{
|
||||
{body}
|
||||
}}
|
||||
'''
|
||||
with open("internal/generator/font.go", "w") as f:
|
||||
f.write(src)
|
||||
print("wrote internal/generator/font.go,", len(atlas), "bytes of glyph data")
|
||||
Reference in New Issue
Block a user