From ec7057a56e226095353eed04e0df3eabbd0447a7 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sun, 14 Aug 2022 14:43:11 -0600 Subject: [PATCH] [visitor] Add visitor for TTFont --- Lib/fontTools/misc/visitor.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Lib/fontTools/misc/visitor.py b/Lib/fontTools/misc/visitor.py index 4ee464abd..6c889195a 100644 --- a/Lib/fontTools/misc/visitor.py +++ b/Lib/fontTools/misc/visitor.py @@ -1,3 +1,4 @@ +from fontTools.ttLib import TTFont class Visitor(object): @@ -74,9 +75,19 @@ class Visitor(object): self.visitList(obj, *args, **kwargs) -class OTVisitor(Visitor): +class TTVisitor(Visitor): def visit(self, obj, *args, **kwargs): if hasattr(obj, "ensureDecompiled"): - obj.ensureDecompiled(recurse=False) + obj.ensureDecompiled() super().visit(obj, *args, **kwargs) + +@TTVisitor.register(TTFont) +def visit(visitor, font): + if hasattr(font, 'visited'): + return False + font.visited = True + for tag in font.keys(): + visitor.visit(font[tag]) + del font.visited + return False