[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 @@
from fontTools.misc.visitor import TTVisitor
class TestVisitor(OTVisitor): import fontTools.ttLib.tables.otBase as otBase
pass
import fontTools.ttLib.tables.otTables as otTables 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): 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 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 from fontTools.ttLib import TTFont
import sys import sys
font = TTFont(sys.argv[1]) font = TTFont(sys.argv[1])
gsub = font['GSUB']
visitor = TestVisitor() visitor = ScalerVisitor()
visitor.visit(gsub) visitor.visit(font)