diff options
author | robot-piglet <[email protected]> | 2025-08-29 11:40:50 +0300 |
---|---|---|
committer | robot-piglet <[email protected]> | 2025-08-29 12:04:59 +0300 |
commit | eb4fa69a58c58a2f36a4cda1b61972ad7037eee6 (patch) | |
tree | 35d7c1d1f7ce3cb83cd04bedd711ab451719882c /contrib/python/fonttools/fontTools/misc/psCharStrings.py | |
parent | ccfbaaf1ad9afe621cb75dc5296d2e0de0e758b4 (diff) |
Intermediate changes
commit_hash:efca680e102a12bb0a656779dafefc81261b3eac
Diffstat (limited to 'contrib/python/fonttools/fontTools/misc/psCharStrings.py')
-rw-r--r-- | contrib/python/fonttools/fontTools/misc/psCharStrings.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/contrib/python/fonttools/fontTools/misc/psCharStrings.py b/contrib/python/fonttools/fontTools/misc/psCharStrings.py index 5d881c5816c..db837248dea 100644 --- a/contrib/python/fonttools/fontTools/misc/psCharStrings.py +++ b/contrib/python/fonttools/fontTools/misc/psCharStrings.py @@ -338,7 +338,7 @@ class SimpleT2Decompiler(object): self.numRegions = 0 self.vsIndex = 0 - def execute(self, charString): + def execute(self, charString, *, pushToStack=None): self.callingStack.append(charString) needsDecompilation = charString.needsDecompilation() if needsDecompilation: @@ -346,7 +346,8 @@ class SimpleT2Decompiler(object): pushToProgram = program.append else: pushToProgram = lambda x: None - pushToStack = self.operandStack.append + if pushToStack is None: + pushToStack = self.operandStack.append index = 0 while True: token, isOperator, index = charString.getToken(index) @@ -551,6 +552,20 @@ t1Operators = [ ] +class T2StackUseExtractor(SimpleT2Decompiler): + + def execute(self, charString): + maxStackUse = 0 + + def pushToStack(value): + nonlocal maxStackUse + self.operandStack.append(value) + maxStackUse = max(maxStackUse, len(self.operandStack)) + + super().execute(charString, pushToStack=pushToStack) + return maxStackUse + + class T2WidthExtractor(SimpleT2Decompiler): def __init__( self, |