#! /usr/bin/env python

from __future__ import print_function, division, absolute_import
from fontTools.misc.py23 import *
from fontTools.ttLib import TTFont
import sys

if len(sys.argv) < 2:
	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']

# Parse fpgm
asm = fpgm.program.getAssembly()
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

# Subset!
funcs = {i:funcs[i] for i in func_nums}

# Put it back together:
asm = []
if funcs:
	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[ ]")

import pprint
pprint.pprint(asm)

fpgm.program.fromAssembly(asm)
# Make sure it compiles
fpgm.program.getBytecode()
