summaryrefslogtreecommitdiffstats
path: root/contrib/python/fonttools/fontTools/misc/psCharStrings.py
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2025-08-29 11:40:50 +0300
committerrobot-piglet <[email protected]>2025-08-29 12:04:59 +0300
commiteb4fa69a58c58a2f36a4cda1b61972ad7037eee6 (patch)
tree35d7c1d1f7ce3cb83cd04bedd711ab451719882c /contrib/python/fonttools/fontTools/misc/psCharStrings.py
parentccfbaaf1ad9afe621cb75dc5296d2e0de0e758b4 (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.py19
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,