#!/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]