Permalink
Browse files

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

… and TTF files
  • Loading branch information...
rsms committed Sep 1, 2018
1 parent 50ca380 commit 8c1a4c181ef12000179dfec541f1af87e9b03122
Showing with 36 additions and 22 deletions.
  1. +28 −21 misc/pylib/fontbuild/Build.pyx
  2. +8 −1 misc/ufocompile
@@ -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,7 +99,8 @@ class FontProject:
f = mix.generateFont(self.basefont, self.deleteList)
else:
f = mix.copy()
deleteGlyphs(f, self.deleteList)
if not self.justCompileUFO:
deleteGlyphs(f, self.deleteList)
if italic == True:
log(">> Italicizing")
@@ -137,12 +139,13 @@ class FontProject:
if len(g.components) > 0:
self.predecompose.add(g.name)
for gname in self.predecompose:
if f.has_key(gname):
decomposeGlyph(f, f[gname])
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,13 +166,14 @@ class FontProject:
g.leftMargin = newLeftMargin
g.rightMargin = newRightMargin
log(">> Decomposing")
# for g in f:
# if len(g.components) > 0:
# decomposeGlyph(f, g)
for gname in self.decompose:
if f.has_key(gname):
decomposeGlyph(f, f[gname])
if not self.justCompileUFO:
log(">> Decomposing")
# for g in f:
# if len(g.components) > 0:
# decomposeGlyph(f, g)
for gname in self.decompose:
if f.has_key(gname):
decomposeGlyph(f, f[gname])
copyrightHolderName = ''
if self.config.has_option('main', 'copyrightHolderName'):
@@ -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
@@ -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:

0 comments on commit 8c1a4c1

Please sign in to comment.