From 855258147e88b6023c8c6c4ecdb726fcb406c44a Mon Sep 17 00:00:00 2001 From: Rasmus Andersson Date: Wed, 4 Oct 2017 23:38:06 -0700 Subject: fontbuild: optimize glyphorder data per font and check for duplicates --- misc/pylib/fontbuild/Build.pyx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'misc') diff --git a/misc/pylib/fontbuild/Build.pyx b/misc/pylib/fontbuild/Build.pyx index 939122658..554003b50 100644 --- a/misc/pylib/fontbuild/Build.pyx +++ b/misc/pylib/fontbuild/Build.pyx @@ -173,11 +173,22 @@ class FontProject: f.save(ufoName) self.generatedFonts.append(ufoName) + # filter glyphorder -- only include glyphs that exists in font + glyphOrder = [] + seenGlyphNames = set() + missingGlyphs = [] + for glyphName in self.glyphOrder: + if glyphName in f: + if glyphName in seenGlyphNames: + raise Exception('Duplicate glyphname %r in glyphorder' % glyphName) + seenGlyphNames.add(glyphName) + glyphOrder.append(glyphName) + if self.buildOTF: log(">> Generating OTF file") newFont = OpenFont(ufoName) otfName = self.generateOutputPath(f, "otf") - saveOTF(newFont, otfName, self.glyphOrder) + saveOTF(newFont, otfName, glyphOrder) def generateTTFs(self): """Build TTF for each font generated since last call to generateTTFs.""" @@ -199,7 +210,8 @@ class FontProject: for font in fonts: ttfName = self.generateOutputPath(font, "ttf") log(os.path.basename(ttfName)) - saveOTF(font, ttfName, self.glyphOrder, truetype=True) + glyphOrder = [n for n in self.glyphOrder if n in font] + saveOTF(font, ttfName, glyphOrder, truetype=True) # def transformGlyphMembers(g, m): -- cgit v1.2.3