diff --git a/Tests/misc/visitor_test.py b/Tests/misc/visitor_test.py index 596f6ec28..e3978dba7 100644 --- a/Tests/misc/visitor_test.py +++ b/Tests/misc/visitor_test.py @@ -1,19 +1,37 @@ - -class TestVisitor(OTVisitor): - pass - +from fontTools.misc.visitor import TTVisitor +import fontTools.ttLib.tables.otBase as otBase import fontTools.ttLib.tables.otTables as otTables -@TestVisitor.register(otTables.Lookup) + +class ScalerVisitor(TTVisitor): + + def scale(self, v): + return v // 2 + +@ScalerVisitor.register(otTables.ValueRecord) def visit(visitor, obj): - print(obj) + attrs = ['XAdvance', 'YAdvance', 'XPlacement', 'YPlacement'] + for attr in attrs: + v = getattr(obj, attr, None) + if v is not None: + v = visitor.scale(v) + setattr(obj, attr, v) return False +@ScalerVisitor.register(otTables.Anchor) +def visit(visitor, obj): + attrs = ['XCoordinate', 'YCoordinate'] + for attr in attrs: + v = getattr(obj, attr) + v = visitor.scale(v) + setattr(obj, attr, v) + return False + + from fontTools.ttLib import TTFont import sys font = TTFont(sys.argv[1]) -gsub = font['GSUB'] -visitor = TestVisitor() -visitor.visit(gsub) +visitor = ScalerVisitor() +visitor.visit(font)