From a9ff306231162a2a62d1dec67ac09da2169679fc Mon Sep 17 00:00:00 2001 From: James Godfrey-Kittle Date: Fri, 18 Sep 2015 18:33:33 -0700 Subject: Reduce code outside of decomposeGlyph's recursion. --- scripts/lib/fontbuild/decomposeGlyph.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'scripts/lib/fontbuild') diff --git a/scripts/lib/fontbuild/decomposeGlyph.py b/scripts/lib/fontbuild/decomposeGlyph.py index b3cc8ea..94b9404 100644 --- a/scripts/lib/fontbuild/decomposeGlyph.py +++ b/scripts/lib/fontbuild/decomposeGlyph.py @@ -2,23 +2,20 @@ def decomposeGlyph(font, glyphName): """Moves the components of a glyph to its outline.""" glyph = font[glyphName] - for component in glyph.components: - decompose(font, glyphName, component.baseGlyph, - component.offset, component.scale) - glyph.clear(contours=False, anchors=False, guides=False) + decompose(font, glyph, glyph, (0, 0), (1, 1)) + glyph.clearComponents() -def decompose(font, parentName, componentName, offset, scale): +def decompose(font, parent, component, offset, scale): """Copy contours to parent from component, including nested components.""" - parent = font[parentName] - component = font[componentName] - for nested in component.components: - decompose(font, parentName, nested.baseGlyph, + decompose(font, parent, font[nested.baseGlyph], (offset[0] + nested.offset[0], offset[1] + nested.offset[1]), (scale[0] * nested.scale[0], scale[1] * nested.scale[1])) + if component == parent: + return for contour in component: contour = contour.copy() contour.scale(scale) -- cgit v1.2.3