aboutsummaryrefslogtreecommitdiff
path: root/Snippets/subset-fpgm.py
diff options
context:
space:
mode:
Diffstat (limited to 'Snippets/subset-fpgm.py')
-rwxr-xr-xSnippets/subset-fpgm.py51
1 files changed, 26 insertions, 25 deletions
diff --git a/Snippets/subset-fpgm.py b/Snippets/subset-fpgm.py
index d06c3f5f..636e2155 100755
--- a/Snippets/subset-fpgm.py
+++ b/Snippets/subset-fpgm.py
@@ -4,13 +4,13 @@ from fontTools.ttLib import TTFont
import sys
if len(sys.argv) < 2:
- print("usage: subset-fpgm.py fontfile.ttf func-number...")
- sys.exit(1)
+ print("usage: subset-fpgm.py fontfile.ttf func-number...")
+ sys.exit(1)
fontfile = sys.argv[1]
func_nums = [int(x) for x in sys.argv[2:]]
font = TTFont(fontfile)
-fpgm = font['fpgm']
+fpgm = font["fpgm"]
# Parse fpgm
asm = fpgm.program.getAssembly()
@@ -18,39 +18,40 @@ funcs = {}
stack = []
tokens = iter(asm)
for token in tokens:
- if token.startswith("PUSH") or token.startswith("NPUSH"):
- for token in tokens:
- try:
- num = int(token)
- stack.append(num)
- except ValueError:
- break
- if token.startswith("FDEF"):
- num = stack.pop()
- body = []
- for token in tokens:
- if token.startswith("ENDF"):
- break
- body.append(token)
- funcs[num] = body
- continue
- assert 0, "Unexpected token in fpgm: %s" % token
+ if token.startswith("PUSH") or token.startswith("NPUSH"):
+ for token in tokens:
+ try:
+ num = int(token)
+ stack.append(num)
+ except ValueError:
+ break
+ if token.startswith("FDEF"):
+ num = stack.pop()
+ body = []
+ for token in tokens:
+ if token.startswith("ENDF"):
+ break
+ body.append(token)
+ funcs[num] = body
+ continue
+ assert 0, "Unexpected token in fpgm: %s" % token
# Subset!
-funcs = {i:funcs[i] for i in func_nums}
+funcs = {i: funcs[i] for i in func_nums}
# Put it back together:
asm = []
if funcs:
- asm.append("PUSH[ ]")
+ asm.append("PUSH[ ]")
nums = sorted(funcs.keys())
asm.extend(str(i) for i in nums)
for i in nums:
- asm.append("FDEF[ ]")
- asm.extend(funcs[i])
- asm.append("ENDF[ ]")
+ asm.append("FDEF[ ]")
+ asm.extend(funcs[i])
+ asm.append("ENDF[ ]")
import pprint
+
pprint.pprint(asm)
fpgm.program.fromAssembly(asm)