msx-font/createfont.py

47 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python
import fontforge
import argparse
import sys
import os
parser = argparse.ArgumentParser()
parser.add_argument('charmap')
parser.add_argument('svgdir')
parser.add_argument('--fontname')
parser.add_argument('--fullname')
parser.add_argument('--familyname')
parser.add_argument('--width', type=int)
parser.add_argument('--output-sfd')
parser.add_argument('--output-woff')
parser.add_argument('--output-ttf')
args = parser.parse_args()
font = fontforge.font()
font.ascent = 1024 - 128
font.descent = 128
font.fontname = args.fontname
font.fullname = args.fullname
font.familyname = args.familyname
font.copyright = "Created by Andy Teijelo with FontForge 2.0 (http://fontforge.sf.net)"
f = open(args.charmap)
for line in f:
codepoint, msxcode = line.strip().split()
codepoint = int(codepoint)
msxcode = int(msxcode)
glyph = font.createChar(codepoint)
svgfile = "{}.svg".format(msxcode)
glyph.importOutlines(os.path.join(args.svgdir, svgfile))
glyph.width = args.width
glyph.simplify()
glyph.simplify(1.02, "forcelines")
glyph.autoHint()
font.save(args.output_sfd)
font.generate(args.output_woff)
font.generate(args.output_ttf)