Add bundled bus fonts and shared font favorites
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
"""Compare actual layer output, including old 16px enlarged and new 32px."""
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
import sys
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
sys.path.insert(0, str(ROOT))
|
||||
from app.fonts.store import FontCatalog
|
||||
from app.display.text_renderer import TextOptions, render_text_layer
|
||||
from bus_font_design import CLASSES
|
||||
|
||||
|
||||
def compare(output: Path, old: Path):
|
||||
output.mkdir(parents=True, exist_ok=True)
|
||||
catalog = FontCatalog(output / "data")
|
||||
columns = [(str(old),16,"OLD 16"), ("builtin:walnut-bus-8x16",16,"NEW 16"),
|
||||
(str(old),32,"OLD 16 x2"), ("builtin:walnut-bus-16x32",32,"NEW 32")]
|
||||
samples = ["高铁北站", "花鸟市场", "开往火车", "鹤警藏赢", "口日目田", "由甲申回", "国园圈围", "站铁路湖", "重量喜音", "人入大文", "0O1I", "l5S8", "B2Z6"]
|
||||
sheet = Image.new("RGB", (1056, len(samples) * 148), "#111111")
|
||||
draw = ImageDraw.Draw(sheet)
|
||||
for y, text in enumerate(samples):
|
||||
for x, (font, size, label) in enumerate(columns):
|
||||
layer = render_text_layer(TextOptions(text, font=font, size=size), size=(64, 32), font_resolver=catalog.resolve)
|
||||
scaled = layer.resize((256,128), Image.Resampling.NEAREST)
|
||||
draw.text((x*264+2,y*148+2),label,fill="white")
|
||||
sheet.paste(scaled,(x*264,y*148+18),scaled.getchannel('A'))
|
||||
sheet.save(output / "four-way.png")
|
||||
for kind, characters in CLASSES.items():
|
||||
proof = Image.new("RGB", (len(characters)*48,96), "#111111")
|
||||
labels = ImageDraw.Draw(proof)
|
||||
for index, char in enumerate(characters):
|
||||
layer = render_text_layer(TextOptions(char,font="builtin:walnut-bus-16x32",size=32),size=(16,32),font_resolver=catalog.resolve)
|
||||
big=layer.resize((32,64),Image.Resampling.NEAREST)
|
||||
labels.text((index*48,2),f"{ord(char):04X}",fill="white")
|
||||
proof.paste(big,(index*48+4,20),big.getchannel('A'))
|
||||
proof.save(output / f"class-{kind}.png")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--output", type=Path, required=True)
|
||||
parser.add_argument("--old", type=Path, required=True)
|
||||
args = parser.parse_args()
|
||||
compare(args.output,args.old)
|
||||
Reference in New Issue
Block a user