47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
|
#!/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 = "{:03d}.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)
|
||
|
|