Coverage for /usr/lib/python3/dist-packages/fontTools/ttLib/ttVisitor.py: 35%
20 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
1"""Specialization of fontTools.misc.visitor to work with TTFont."""
3from fontTools.misc.visitor import Visitor
4from fontTools.ttLib import TTFont
7class TTVisitor(Visitor):
8 def visitAttr(self, obj, attr, value, *args, **kwargs):
9 if isinstance(value, TTFont):
10 return False
11 super().visitAttr(obj, attr, value, *args, **kwargs)
13 def visit(self, obj, *args, **kwargs):
14 if hasattr(obj, "ensureDecompiled"):
15 obj.ensureDecompiled(recurse=False)
16 super().visit(obj, *args, **kwargs)
19@TTVisitor.register(TTFont)
20def visit(visitor, font, *args, **kwargs):
21 # Some objects have links back to TTFont; even though we
22 # have a check in visitAttr to stop them from recursing
23 # onto TTFont, sometimes they still do, for example when
24 # someone overrides visitAttr.
25 if hasattr(visitor, "font"):
26 return False
28 visitor.font = font
29 for tag in font.keys():
30 visitor.visit(font[tag], *args, **kwargs)
31 del visitor.font
32 return False