Skip to content

Commit

Permalink
adds --cufo flag to ufocompile for compiling UFO files instead of OTF…
Browse files Browse the repository at this point in the history
… and TTF files
  • Loading branch information
rsms committed Sep 1, 2018
1 parent 50ca380 commit 8c1a4c1
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 22 deletions.
49 changes: 28 additions & 21 deletions misc/pylib/fontbuild/Build.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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")
Expand Down Expand Up @@ -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)

Expand All @@ -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'):
Expand All @@ -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)

Expand All @@ -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()
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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):
Expand Down
9 changes: 8 additions & 1 deletion misc/ufocompile
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 8c1a4c1

Please sign in to comment.