adds --cufo flag to ufocompile for compiling UFO files instead of OTF and TTF files

This commit is contained in:
Rasmus Andersson 2018-09-01 12:59:27 -07:00
parent 50ca3807f7
commit 8c1a4c181e
2 changed files with 36 additions and 22 deletions

View file

@ -72,6 +72,7 @@ class FontProject:
self.buildOTF = False
self.compatible = False
self.generatedFonts = []
self.justCompileUFO = False
def openResource(self, name):
with open(os.path.join(
@ -98,6 +99,7 @@ class FontProject:
f = mix.generateFont(self.basefont, self.deleteList)
else:
f = mix.copy()
if not self.justCompileUFO:
deleteGlyphs(f, self.deleteList)
if italic == True:
@ -137,12 +139,13 @@ class FontProject:
if len(g.components) > 0:
self.predecompose.add(g.name)
if not self.justCompileUFO:
for gname in self.predecompose:
if f.has_key(gname):
decomposeGlyph(f, f[gname])
log(">> Generating glyphs")
generateGlyphs(f, self.diacriticList, self.adobeGlyphList)
self.generateGlyphs(f, self.diacriticList, self.adobeGlyphList)
# log(">> Reading features")
# readFeatureFile(f, f.features.text)
@ -163,6 +166,7 @@ class FontProject:
g.leftMargin = newLeftMargin
g.rightMargin = newRightMargin
if not self.justCompileUFO:
log(">> Decomposing")
# for g in f:
# if len(g.components) > 0:
@ -193,7 +197,8 @@ class FontProject:
'italicAngle': float(getcfg('italicAngle', '-12')),
}, panose)
if not self.compatible:
if not self.compatible and not self.justCompileUFO:
# Remove overlaps etc
cleanCurves(f)
# deleteGlyphs(f, self.deleteList)
@ -202,6 +207,10 @@ class FontProject:
f.save(ufoName)
self.generatedFonts.append(ufoName)
if self.justCompileUFO:
print("wrote %s" % ufoName)
return
# filter glyphorder -- only include glyphs that exists in font
glyphOrder = []
seenGlyphNames = set()
@ -242,6 +251,12 @@ class FontProject:
glyphOrder = [n for n in self.glyphOrder if n in font]
saveOTF(font, ttfName, glyphOrder, truetype=True)
def generateGlyphs(self, f, glyphNames, glyphList={}):
log(">> Generating diacritics")
glyphnames = [gname for gname in glyphNames if not gname.startswith("#") and gname != ""]
for glyphName in glyphNames:
generateGlyph(f, glyphName, glyphList)
# def transformGlyphMembers(g, m):
# g.width = int(g.width * m.a)
@ -290,14 +305,6 @@ def log(msg):
print msg
def generateGlyphs(f, glyphNames, glyphList={}):
log(">> Generating diacritics")
glyphnames = [gname for gname in glyphNames if not gname.startswith("#") and gname != ""]
for glyphName in glyphNames:
generateGlyph(f, glyphName, glyphList)
def deleteGlyphs(f, deleteList):
for name in deleteList:
if f.has_key(name):

View file

@ -81,6 +81,10 @@ def main():
'--no-ttf', dest='no_ttf', action='store_const',
const=True, default=False, help='Do not build TTF files')
argparser.add_argument(
'--cufo', dest='cufo', action='store_const',
const=True, default=False, help='Only compile composite UFO')
argparser.add_argument(
'--out', dest='out', metavar='<dir>', type=str, default=default_out_dir,
help='Write output to <dir> instead of the default (%r)' % default_out_dir)
@ -137,6 +141,9 @@ def main():
rg.font, BASEDIR, os.path.join(srcDir,'fontbuild.cfg'), buildTag=buildTag)
proj.builddir = args.out
if args.cufo:
proj.justCompileUFO = True
# panose for entire family
panose = {
'bFamilyType': 2, # Latin Text
@ -225,7 +232,7 @@ def main():
panose=mkpanose(9))
# generate TTFs
if args.no_ttf == False:
if args.no_ttf == False and args.cufo == False:
proj.generateTTFs()
if not ALL: