Files
xyou 3662345434 feat: WiFi驱动(ath9k) + TTF字体 + shell命令行 + FirstInit WiFi跳过
新增: ath9k PCIe WiFi驱动(被动扫描/beacon解析), shell命令行(help/clear/echo/version/date/reboot/halt), Consolas 18px TTF字体, render_ascii.py

修改: dkm_net_api扩展scan接口, FirstInit无WiFi设备时跳过, DSK加载shell.elf, 非首次启动直接进shell
2026-07-03 12:59:59 +08:00

55 lines
1.8 KiB
Python

"""render_ascii.py — render ASCII 32-126 from Consolas TTF to grayscale bitmaps
Output: CODE/firstInit/ascii_bitmaps.c (included by main.c)
Glyph cell: 11x18. Consolas 18px has advance=10, ascender top ~3, descender ~18.
ASCII_STEP=11 gives 1px spacing between glyphs (10px glyph + 1px gap).
"""
from PIL import Image, ImageFont, ImageDraw
ttf = r"C:\Windows\Fonts\consola.ttf"
GLYPH_W = 11
GLYPH_H = 18
FONT_SIZE = 18
font = ImageFont.truetype(ttf, FONT_SIZE)
# Verify metrics on first glyph
probe = font.getbbox("A")
print(f"Consolas {FONT_SIZE}px — 'A' bbox={probe}, advance={font.getlength('A')}")
lines = []
lines.append("/* Auto-generated by render_ascii.py - Consolas 18px grayscale */")
lines.append("/* 95 glyphs: ASCII 32 (space) .. 126 (~), cell 11x18 */")
lines.append("/* Do not edit - regenerate via: py render_ascii.py */")
lines.append("")
lines.append(f"static const int g_ascii_w = {GLYPH_W};")
lines.append(f"static const int g_ascii_h = {GLYPH_H};")
lines.append(f"static const unsigned char g_ascii[95][{GLYPH_W}*{GLYPH_H}] = {{")
for cp in range(32, 127):
ch = chr(cp)
img = Image.new("L", (GLYPH_W, GLYPH_H), 0)
draw = ImageDraw.Draw(img)
draw.text((0, 0), ch, font=font, fill=255)
pixels = list(img.tobytes())
if ch.isalnum():
comment = ch
elif ch == ' ':
comment = "space"
else:
comment = f"0x{cp:02x}"
lines.append(f" /* '{comment}' */ {{")
for y_row in range(GLYPH_H):
row = ", ".join(str(pixels[y_row * GLYPH_W + x_col]) for x_col in range(GLYPH_W))
lines.append(f" {row},")
lines.append(" },")
lines.append("};")
lines.append("")
out_path = "CODE/firstInit/ascii_bitmaps.c"
with open(out_path, "w", encoding="ascii") as f:
f.write("\n".join(lines))
print(f"Generated {out_path} ({95*GLYPH_W*GLYPH_H} bytes of glyph data)")