From 2cf70c06dc35830ebdd2fbcf4c9e458413f5acd5 Mon Sep 17 00:00:00 2001 From: Kostas Bartsokas Date: Mon, 20 Jan 2020 20:11:33 +0200 Subject: [PATCH 1/2] Update decompose-transformed-components.py - Opens a new tab with affected glyphs - Corrects path direction. --- Google Fonts/decompose-transformed-components.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Google Fonts/decompose-transformed-components.py b/Google Fonts/decompose-transformed-components.py index f6c0f75..bd34c43 100644 --- a/Google Fonts/decompose-transformed-components.py +++ b/Google Fonts/decompose-transformed-components.py @@ -20,6 +20,8 @@ def main(): if not bad_components: print "Skipping. No transformed components" return + tabString = "/"+"/".join(bad_components) + font.newTab(tabString) for idx, master in enumerate(font.masters): for name in bad_components: @@ -27,7 +29,7 @@ def main(): name, master.name ) font.glyphs[name].layers[idx].decomposeComponents() - + font.glyphs[name].layers[idx].correctPathDirection() if __name__ == "__main__": main() From 14043f8a84890651ef86196dada287a7fde27562 Mon Sep 17 00:00:00 2001 From: Kostas Bartsokas Date: Tue, 21 Jan 2020 18:03:05 +0200 Subject: [PATCH 2/2] Update decompose-transformed-components.py --- .../decompose-transformed-components.py | 53 ++++++++++++------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/Google Fonts/decompose-transformed-components.py b/Google Fonts/decompose-transformed-components.py index bd34c43..1da0d6b 100644 --- a/Google Fonts/decompose-transformed-components.py +++ b/Google Fonts/decompose-transformed-components.py @@ -1,36 +1,51 @@ -#MenuTitle: Decompose Transformed Components +#MenuTitle: Decompose Transformed Components (Including Brace/Bracket Layers) """TTFautohint doesn't like components which have been flipped""" -def find_transformed_component_glyphs(font): - found = set() - for idx, master in enumerate(font.masters): - for glyph in font.glyphs: - components = glyph.layers[idx].components - for comp in components: - if sum(comp.scale) != 2.0: - found.add(glyph.name) - if comp.rotation != 0.0: - found.add(glyph.name) - return found +bad_components = [] +bad_components_ls = [] + +def check_for_only_one_comp(glyph): + for thisLayer in glyph.layers: + for thisComponent in thisLayer.components: + if sum(thisComponent.scale) != 2.0: + print glyph + bad_components.append(glyph) + bad_components_ls.append(glyph.name) + return + elif thisComponent.rotation != 0.0: + print glyph + bad_components.append(glyph) + bad_components_ls.append(glyph.name) + return + +def find_transformed_component_glyphs(font): + for thisGlyph in font.glyphs: + check_for_only_one_comp(thisGlyph) def main(): font = Glyphs.font - bad_components = find_transformed_component_glyphs(font) + find_transformed_component_glyphs(font) if not bad_components: print "Skipping. No transformed components" return - tabString = "/"+"/".join(bad_components) + tabString = "/"+"/".join(bad_components_ls) font.newTab(tabString) - for idx, master in enumerate(font.masters): - for name in bad_components: + + for thisGlyph in bad_components: + for thisLayer in thisGlyph.layers: + print thisLayer print "Decomposing transformed %s in %s" % ( - name, master.name + thisGlyph, thisLayer ) - font.glyphs[name].layers[idx].decomposeComponents() - font.glyphs[name].layers[idx].correctPathDirection() + thisLayer.decomposeComponents() + thisLayer.correctPathDirection() + if __name__ == "__main__": main() + + +