Skip to content

Commit

Permalink
[visitor_test] Make it into the start of a font rescaler
Browse files Browse the repository at this point in the history
  • Loading branch information
behdad committed Aug 14, 2022
1 parent ec7057a commit e31b214
Showing 1 changed file with 26 additions and 8 deletions.
34 changes: 26 additions & 8 deletions Tests/misc/visitor_test.py
@@ -1,19 +1,37 @@
from fontTools.misc.visitor import TTVisitor
import fontTools.ttLib.tables.otBase as otBase
import fontTools.ttLib.tables.otTables as otTables

class TestVisitor(OTVisitor):
pass

import fontTools.ttLib.tables.otTables as otTables
class ScalerVisitor(TTVisitor):

@TestVisitor.register(otTables.Lookup)
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)

0 comments on commit e31b214

Please sign in to comment.