38 lines
824 B
Python
38 lines
824 B
Python
import fontforge
|
|
import argparse
|
|
import sys
|
|
import os
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('charmap')
|
|
parser.add_argument('svgdir')
|
|
parser.add_argument('--fullname')
|
|
parser.add_argument('--output-sfd')
|
|
parser.add_argument('--output-woff')
|
|
parser.add_argument('--output-ttf')
|
|
|
|
args = parser.parse_args()
|
|
print(args)
|
|
|
|
font = fontforge.font()
|
|
|
|
font.ascent = 1024 - 128
|
|
font.descent = 128
|
|
|
|
font.fullname = args.fullname
|
|
|
|
f = open(args.charmap)
|
|
for line in f:
|
|
codepoint, msxcode = line.strip().split()
|
|
codepoint = int(codepoint)
|
|
msxcode = int(msxcode)
|
|
glyph = font.createChar(codepoint)
|
|
svgfile = "{:03d}.svg".format(msxcode)
|
|
glyph.importOutlines(os.path.join(args.svgdir, svgfile))
|
|
glyph.simplify()
|
|
glyph.autoHint()
|
|
|
|
font.save(args.output_sfd)
|
|
font.generate(args.output_woff)
|
|
|