diff --git a/Snippets/decompose-ttf.py b/Snippets/decompose-ttf.py new file mode 100644 index 000000000..baac8c4df --- /dev/null +++ b/Snippets/decompose-ttf.py @@ -0,0 +1,28 @@ +import sys +from fontTools.ttLib import TTFont +from fontTools.pens.recordingPen import DecomposingRecordingPen +from fontTools.pens.ttGlyphPen import TTGlyphPen + + +if len(sys.argv) != 3: + print("usage: decompose-ttf.py fontfile.ttf outfile.ttf") + sys.exit(1) + + +src = sys.argv[1] +dst = sys.argv[2] + +with TTFont(src) as f: + glyfTable = f["glyf"] + glyphSet = f.getGlyphSet() + + for glyphName in glyphSet.keys(): + if not glyfTable[glyphName].isComposite(): + continue + dcPen = DecomposingRecordingPen(glyphSet) + glyphSet[glyphName].draw(dcPen) + ttPen = TTGlyphPen(None) + dcPen.replay(ttPen) + glyfTable[glyphName] = ttPen.glyph() + + f.save(dst)