diff --git a/Lib/fontTools/misc/visitor.py b/Lib/fontTools/misc/visitor.py index 8c82f8ced..40b545339 100644 --- a/Lib/fontTools/misc/visitor.py +++ b/Lib/fontTools/misc/visitor.py @@ -1,4 +1,5 @@ -from fontTools.ttLib import TTFont +"""Generic visitor pattern implementation for Python objects.""" + import enum @@ -94,21 +95,3 @@ class Visitor(object): self.visitObject(obj, *args, **kwargs) elif isinstance(obj, list): self.visitList(obj, *args, **kwargs) - - -class TTVisitor(Visitor): - def visit(self, obj, *args, **kwargs): - if hasattr(obj, "ensureDecompiled"): - obj.ensureDecompiled(recurse=False) - super().visit(obj, *args, **kwargs) - - -@TTVisitor.register(TTFont) -def visit(visitor, font): - if hasattr(visitor, "font"): - return False - visitor.font = font - for tag in font.keys(): - visitor.visit(font[tag]) - del visitor.font - return False diff --git a/Lib/fontTools/ttLib/ttVisitor.py b/Lib/fontTools/ttLib/ttVisitor.py new file mode 100644 index 000000000..d07118579 --- /dev/null +++ b/Lib/fontTools/ttLib/ttVisitor.py @@ -0,0 +1,22 @@ +"""Specialization of fontTools.misc.visitor to work with TTFont.""" + +from fontTools.misc.visitor import Visitor +from fontTools.ttLib import TTFont + + +class TTVisitor(Visitor): + def visit(self, obj, *args, **kwargs): + if hasattr(obj, "ensureDecompiled"): + obj.ensureDecompiled(recurse=False) + super().visit(obj, *args, **kwargs) + + +@TTVisitor.register(TTFont) +def visit(visitor, font): + if hasattr(visitor, "font"): + return False + visitor.font = font + for tag in font.keys(): + visitor.visit(font[tag]) + del visitor.font + return False diff --git a/Snippets/scale-upem.py b/Snippets/scale-upem.py index a6c816326..d10c0f5e4 100644 --- a/Snippets/scale-upem.py +++ b/Snippets/scale-upem.py @@ -1,4 +1,4 @@ -from fontTools.misc.visitor import TTVisitor +from fontTools.ttLib.ttVisitor import TTVisitor import fontTools.ttLib as ttLib import fontTools.ttLib.tables.otBase as otBase import fontTools.ttLib.tables.otTables as otTables