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