msx-font/createfont.py

47 lines
1.2 KiB
Python
Raw Normal View History

#!/usr/bin/env python
import fontforge
2016-09-15 13:16:09 -04:00
import argparse
import sys
import os
2016-09-15 13:16:09 -04:00
parser = argparse.ArgumentParser()
parser.add_argument('charmap')
parser.add_argument('svgdir')
parser.add_argument('--fontname')
2016-09-15 13:16:09 -04:00
parser.add_argument('--fullname')
parser.add_argument('--familyname')
parser.add_argument('--width', type=int)
2016-09-15 13:16:09 -04:00
parser.add_argument('--output-sfd')
parser.add_argument('--output-woff')
parser.add_argument('--output-ttf')
args = parser.parse_args()
font = fontforge.font()
2016-09-15 13:16:09 -04:00
font.ascent = 1024 - 128
font.descent = 128
font.fontname = args.fontname
2016-09-15 13:16:09 -04:00
font.fullname = args.fullname
font.familyname = args.familyname
font.copyright = "Created by Andy Teijelo with FontForge 2.0 (http://fontforge.sf.net)"
2016-09-15 13:16:09 -04:00
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)
2016-09-15 13:16:09 -04:00
glyph.importOutlines(os.path.join(args.svgdir, svgfile))
glyph.width = args.width
2016-09-15 13:16:09 -04:00
glyph.simplify()
glyph.simplify(1.02, "forcelines")
2016-09-15 13:16:09 -04:00
glyph.autoHint()
2016-09-15 13:16:09 -04:00
font.save(args.output_sfd)
font.generate(args.output_woff)
font.generate(args.output_ttf)