[visitor_test] Make it into the start of a font rescaler
This commit is contained in:
parent
ec7057a56e
commit
e31b214089
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user