11ae29591efbb29492ce05378909ccf4028d7c1eeBehdad Esfahbodfrom __future__ import print_function, division, absolute_import 27ed91eca1eaa96b79eae780778e89bb9ec44c1eeBehdad Esfahbodfrom fontTools.misc.py23 import * 330e691edd056ba22fa8970280e986747817bec3dBehdad Esfahbodfrom fontTools import cffLib 430e691edd056ba22fa8970280e986747817bec3dBehdad Esfahbodfrom . import DefaultTable 57842e56b97ce677b83bdab09cda48bc2d89ac75aJust 67842e56b97ce677b83bdab09cda48bc2d89ac75aJust 72a9c630193ea7fc1f9aa01bef1eb99a5036c1331jvrclass table_C_F_F_(DefaultTable.DefaultTable): 87842e56b97ce677b83bdab09cda48bc2d89ac75aJust 97842e56b97ce677b83bdab09cda48bc2d89ac75aJust def __init__(self, tag): 107842e56b97ce677b83bdab09cda48bc2d89ac75aJust DefaultTable.DefaultTable.__init__(self, tag) 112a9c630193ea7fc1f9aa01bef1eb99a5036c1331jvr self.cff = cffLib.CFFFontSet() 12dc87372c88dfd3bb4418c4113d9301102324359eBehdad Esfahbod self._gaveGlyphOrder = False 137842e56b97ce677b83bdab09cda48bc2d89ac75aJust 147842e56b97ce677b83bdab09cda48bc2d89ac75aJust def decompile(self, data, otFont): 154e5af60930726d06a58a30bae45bb27ae50aea77jvr self.cff.decompile(StringIO(data), otFont) 16357d71b4385418a6d28290300581ad49d67daf15jvr assert len(self.cff) == 1, "can't deal with multi-font CFF tables." 177842e56b97ce677b83bdab09cda48bc2d89ac75aJust 184e5af60930726d06a58a30bae45bb27ae50aea77jvr def compile(self, otFont): 194e5af60930726d06a58a30bae45bb27ae50aea77jvr f = StringIO() 204e5af60930726d06a58a30bae45bb27ae50aea77jvr self.cff.compile(f, otFont) 214e5af60930726d06a58a30bae45bb27ae50aea77jvr return f.getvalue() 227842e56b97ce677b83bdab09cda48bc2d89ac75aJust 23a2a75b348da46073cdd1dea50915384eabfff7c9jvr def haveGlyphNames(self): 24357d71b4385418a6d28290300581ad49d67daf15jvr if hasattr(self.cff[self.cff.fontNames[0]], "ROS"): 25dc87372c88dfd3bb4418c4113d9301102324359eBehdad Esfahbod return False # CID-keyed font 26a2a75b348da46073cdd1dea50915384eabfff7c9jvr else: 27dc87372c88dfd3bb4418c4113d9301102324359eBehdad Esfahbod return True 28a2a75b348da46073cdd1dea50915384eabfff7c9jvr 297842e56b97ce677b83bdab09cda48bc2d89ac75aJust def getGlyphOrder(self): 307842e56b97ce677b83bdab09cda48bc2d89ac75aJust if self._gaveGlyphOrder: 317842e56b97ce677b83bdab09cda48bc2d89ac75aJust from fontTools import ttLib 32cd5aad92f23737ff93a110d5c73d624658a28da8Behdad Esfahbod raise ttLib.TTLibError("illegal use of getGlyphOrder()") 33dc87372c88dfd3bb4418c4113d9301102324359eBehdad Esfahbod self._gaveGlyphOrder = True 34357d71b4385418a6d28290300581ad49d67daf15jvr return self.cff[self.cff.fontNames[0]].getGlyphOrder() 357842e56b97ce677b83bdab09cda48bc2d89ac75aJust 367842e56b97ce677b83bdab09cda48bc2d89ac75aJust def setGlyphOrder(self, glyphOrder): 37357d71b4385418a6d28290300581ad49d67daf15jvr pass 38357d71b4385418a6d28290300581ad49d67daf15jvr # XXX 39357d71b4385418a6d28290300581ad49d67daf15jvr #self.cff[self.cff.fontNames[0]].setGlyphOrder(glyphOrder) 407842e56b97ce677b83bdab09cda48bc2d89ac75aJust 417842e56b97ce677b83bdab09cda48bc2d89ac75aJust def toXML(self, writer, otFont, progress=None): 424e5af60930726d06a58a30bae45bb27ae50aea77jvr self.cff.toXML(writer, progress) 437842e56b97ce677b83bdab09cda48bc2d89ac75aJust 443a9fd301808f5a8991ca9ac44028d1ecb22d307fBehdad Esfahbod def fromXML(self, name, attrs, content, otFont): 454e5af60930726d06a58a30bae45bb27ae50aea77jvr if not hasattr(self, "cff"): 464e5af60930726d06a58a30bae45bb27ae50aea77jvr self.cff = cffLib.CFFFontSet() 473a9fd301808f5a8991ca9ac44028d1ecb22d307fBehdad Esfahbod self.cff.fromXML(name, attrs, content) 487842e56b97ce677b83bdab09cda48bc2d89ac75aJust 49