def getCharString(self, private=None, globalSubrs=None, var_model=None, optimize=True): commands = self._commands commands = self.reorder_blend_args(commands) if optimize: commands = specializeCommands(commands, generalizeFirst=False, maxstack=maxStackLimit) program = self.mergeCommandsToProgram(commands, var_model=var_model, round_func=self.roundNumber) charString = CFF2Subr(program=program, private=private, globalSubrs=globalSubrs) return charString
def getCharString(self, private=None, globalSubrs=None, var_model=None, optimize=True): commands = self._commands commands = self.reorder_blend_args(commands) if optimize: commands = specializeCommands(commands, generalizeFirst=False, maxstack=maxStackLimit) program = self.mergeCommandsToProgram(commands, var_model=var_model, round_func=self.roundNumber) charString = T2CharString(program=program, private=private, globalSubrs=globalSubrs) return charString
def getCharString( self, private=None, globalSubrs=None, var_model=None, optimize=True): commands = self._commands commands = self.reorder_blend_args(commands, partial (var_model.getDeltas, round=self.round)) if optimize: commands = specializeCommands( commands, generalizeFirst=False, maxstack=maxStackLimit) program = commandsToProgram(commands) charString = T2CharString( program=program, private=private, globalSubrs=globalSubrs) return charString
def getCharString(self, private=None, globalSubrs=None, optimize=True): commands = self._commands if optimize: maxstack = 48 if not self._CFF2 else 513 commands = specializeCommands(commands, generalizeFirst=False, maxstack=maxstack) program = commandsToProgram(commands) if self._width is not None: assert not self._CFF2, "CFF2 does not allow encoding glyph width in CharString." program.insert(0, otRound(self._width)) if not self._CFF2: program.append('endchar') charString = T2CharString( program=program, private=private, globalSubrs=globalSubrs) return charString
def test_blend_round_trip(self): ttx_path = self.getpath('TestSparseCFF2VF.ttx') ttf_font = TTFont(recalcBBoxes=False, recalcTimestamp=False) ttf_font.importXML(ttx_path) fontGlyphList = ttf_font.getGlyphOrder() topDict = ttf_font['CFF2'].cff.topDictIndex[0] charstrings = topDict.CharStrings for glyphName in fontGlyphList: cs = charstrings[glyphName] cs.decompile() cmds = programToCommands(cs.program, getNumRegions=cs.getNumRegions) cmds_g = generalizeCommands(cmds) cmds = specializeCommands(cmds_g, generalizeFirst=False) program = commandsToProgram(cmds) self.assertEqual(program, cs.program) program = specializeProgram(program, getNumRegions=cs.getNumRegions) self.assertEqual(program, cs.program) program_g = generalizeProgram(program, getNumRegions=cs.getNumRegions) program = commandsToProgram(cmds_g) self.assertEqual(program, program_g)
def test_blend_round_trip(self): otfvf_path = self.get_test_input('TestSparseCFF2VF.otf') ttf_font = TTFont(otfvf_path) fontGlyphList = ttf_font.getGlyphOrder() topDict = ttf_font['CFF2'].cff.topDictIndex[0] charstrings = topDict.CharStrings for glyphName in fontGlyphList: print(glyphName) cs = charstrings[glyphName] cs.decompile() cmds = programToCommands(cs.program, getNumRegions=cs.getNumRegions) cmds_g = generalizeCommands(cmds) cmds = specializeCommands(cmds_g, generalizeFirst=False) program = commandsToProgram(cmds) self.assertEqual(program, cs.program) program = specializeProgram(program, getNumRegions=cs.getNumRegions) self.assertEqual(program, cs.program) program_g = generalizeProgram(program, getNumRegions=cs.getNumRegions) program = commandsToProgram(cmds_g) self.assertEqual(program, program_g)