[visitor_test] Make it into the start of a font rescaler

This commit is contained in:
Behdad Esfahbod 2022-08-14 14:43:28 -06:00
parent ec7057a56e
commit e31b214089

View File

@ -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)