[cffLib.specializer] Add programToString and stringToProgram from _test.py
This commit is contained in:
parent
a8b841a4a9
commit
30b804003e
@ -5,6 +5,26 @@
|
||||
from __future__ import print_function, division, absolute_import
|
||||
from fontTools.misc.py23 import *
|
||||
|
||||
|
||||
def stringToProgram(string):
|
||||
if isinstance(string, basestring):
|
||||
string = string.split()
|
||||
program = []
|
||||
for token in string:
|
||||
try:
|
||||
token = int(token)
|
||||
except ValueError:
|
||||
try:
|
||||
token = float(token)
|
||||
except ValueError:
|
||||
pass
|
||||
program.append(token)
|
||||
return program
|
||||
|
||||
def programToString(program):
|
||||
return ' '.join(str(x) for x in program)
|
||||
|
||||
|
||||
def programToCommands(program):
|
||||
"""Takes a T2CharString program list and returns list of commands.
|
||||
Each command is a two-tuple of commandname,arg-list. The commandname might
|
||||
@ -53,7 +73,6 @@ def commandsToProgram(commands):
|
||||
return program
|
||||
|
||||
|
||||
|
||||
def _everyN(el, n):
|
||||
"""Group the list el into groups of size n"""
|
||||
if len(el) % n != 0: raise ValueError(el)
|
||||
@ -496,22 +515,13 @@ if __name__ == '__main__':
|
||||
if len(sys.argv) == 1:
|
||||
import doctest
|
||||
sys.exit(doctest.testmod().failed)
|
||||
program = []
|
||||
for token in sys.argv[1:]:
|
||||
try:
|
||||
token = int(token)
|
||||
except ValueError:
|
||||
try:
|
||||
token = float(token)
|
||||
except ValueError:
|
||||
pass
|
||||
program.append(token)
|
||||
print("Program:"); print(program)
|
||||
program = stringToProgram(sys.argv[1:])
|
||||
print("Program:"); print(programToString(program))
|
||||
commands = programToCommands(program)
|
||||
print("Commands:"); print(commands)
|
||||
program2 = commandsToProgram(commands)
|
||||
print("Program from commands:"); print(program2)
|
||||
print("Program from commands:"); print(programToString(program2))
|
||||
assert program == program2
|
||||
print("Generalized program:"); print(generalizeProgram(program))
|
||||
print("Specialized program:"); print(specializeProgram(program))
|
||||
print("Generalized program:"); print(programToString(generalizeProgram(program)))
|
||||
print("Specialized program:"); print(programToString(specializeProgram(program)))
|
||||
|
||||
|
@ -1,32 +1,15 @@
|
||||
from __future__ import print_function, division, absolute_import
|
||||
from fontTools.cffLib.specializer import generalizeProgram, specializeProgram
|
||||
from fontTools.cffLib.specializer import programToString, stringToProgram, generalizeProgram, specializeProgram
|
||||
import unittest
|
||||
|
||||
|
||||
def charstr2program(string):
|
||||
program = []
|
||||
for token in string.split():
|
||||
try:
|
||||
token = int(token)
|
||||
except ValueError:
|
||||
try:
|
||||
token = float(token)
|
||||
except ValueError:
|
||||
pass
|
||||
program.append(token)
|
||||
return program
|
||||
|
||||
|
||||
def program2charstr(lst):
|
||||
return ' '.join(str(x) for x in lst)
|
||||
|
||||
|
||||
def get_generalized_charstr(charstr):
|
||||
return program2charstr(generalizeProgram(charstr2program(charstr)))
|
||||
return programToString(generalizeProgram(stringToProgram(charstr)))
|
||||
|
||||
|
||||
def get_specialized_charstr(charstr, **kwargs):
|
||||
return program2charstr(specializeProgram(charstr2program(charstr), **kwargs))
|
||||
return programToString(specializeProgram(stringToProgram(charstr), **kwargs))
|
||||
|
||||
|
||||
class CFFGeneralizeProgramTest(unittest.TestCase):
|
||||
|
Loading…
x
Reference in New Issue
Block a user