#!/usr/bin/env python3 import sys import fileinput def main(argv): fonts = {} for line in fileinput.input(): f = line.strip().split(" ") if not f: continue k = f[0] if k == "FontName": fontname = f[1] props = {"FontName": fontname, "Flags": 0} chars = {} fonts[fontname] = (props, chars) elif k == "C": cid = int(f[1]) if 0 <= cid and cid <= 255: width = int(f[4]) chars[cid] = width elif k in ("CapHeight", "XHeight", "ItalicAngle", "Ascender", "Descender"): k = {"Ascender": "Ascent", "Descender": "Descent"}.get(k, k) props[k] = float(f[1]) elif k in ("FontName", "FamilyName", "Weight"): k = {"FamilyName": "FontFamily", "Weight": "FontWeight"}.get(k, k) props[k] = f[1] elif k == "IsFixedPitch": if f[1].lower() == "true": props["Flags"] = 64 elif k == "FontBBox": props[k] = tuple(map(float, f[1:5])) print("# -*- python -*-") print("FONT_METRICS = {") for (fontname, (props, chars)) in fonts.items(): print(" {!r}: {!r},".format(fontname, (props, chars))) print("}") return 0 if __name__ == "__main__": sys.exit(main(sys.argv)) # type: ignore[no-untyped-call]