11ae29591efbb29492ce05378909ccf4028d7c1eeBehdad Esfahbodfrom __future__ import print_function, division, absolute_import 230e691edd056ba22fa8970280e986747817bec3dBehdad Esfahbodfrom fontTools.misc.py23 import * 330e691edd056ba22fa8970280e986747817bec3dBehdad Esfahbodfrom fontTools.misc.textTools import safeEval 42b06aaa2a6bcd363c25fb0c43f6bb906906594bdBehdad Esfahbodfrom . import DefaultTable 57ed91eca1eaa96b79eae780778e89bb9ec44c1eeBehdad Esfahbodimport sys 67842e56b97ce677b83bdab09cda48bc2d89ac75aJustimport array 77842e56b97ce677b83bdab09cda48bc2d89ac75aJust 87842e56b97ce677b83bdab09cda48bc2d89ac75aJust 97842e56b97ce677b83bdab09cda48bc2d89ac75aJustclass table_T_S_I__5(DefaultTable.DefaultTable): 107842e56b97ce677b83bdab09cda48bc2d89ac75aJust 117842e56b97ce677b83bdab09cda48bc2d89ac75aJust def decompile(self, data, ttFont): 127842e56b97ce677b83bdab09cda48bc2d89ac75aJust numGlyphs = ttFont['maxp'].numGlyphs 137842e56b97ce677b83bdab09cda48bc2d89ac75aJust assert len(data) == 2 * numGlyphs 147842e56b97ce677b83bdab09cda48bc2d89ac75aJust a = array.array("H") 157842e56b97ce677b83bdab09cda48bc2d89ac75aJust a.fromstring(data) 16180ace6a5ff1399ec53bc696e8bef7cce6eef39aBehdad Esfahbod if sys.byteorder != "big": 177842e56b97ce677b83bdab09cda48bc2d89ac75aJust a.byteswap() 187842e56b97ce677b83bdab09cda48bc2d89ac75aJust self.glyphGrouping = {} 197842e56b97ce677b83bdab09cda48bc2d89ac75aJust for i in range(numGlyphs): 207842e56b97ce677b83bdab09cda48bc2d89ac75aJust self.glyphGrouping[ttFont.getGlyphName(i)] = a[i] 217842e56b97ce677b83bdab09cda48bc2d89ac75aJust 227842e56b97ce677b83bdab09cda48bc2d89ac75aJust def compile(self, ttFont): 237842e56b97ce677b83bdab09cda48bc2d89ac75aJust glyphNames = ttFont.getGlyphOrder() 247842e56b97ce677b83bdab09cda48bc2d89ac75aJust a = array.array("H") 257842e56b97ce677b83bdab09cda48bc2d89ac75aJust for i in range(len(glyphNames)): 267842e56b97ce677b83bdab09cda48bc2d89ac75aJust a.append(self.glyphGrouping[glyphNames[i]]) 27180ace6a5ff1399ec53bc696e8bef7cce6eef39aBehdad Esfahbod if sys.byteorder != "big": 287842e56b97ce677b83bdab09cda48bc2d89ac75aJust a.byteswap() 297842e56b97ce677b83bdab09cda48bc2d89ac75aJust return a.tostring() 307842e56b97ce677b83bdab09cda48bc2d89ac75aJust 317842e56b97ce677b83bdab09cda48bc2d89ac75aJust def toXML(self, writer, ttFont): 32ac1b4359467ca3deab03186a15eae1d55eb35567Behdad Esfahbod names = sorted(self.glyphGrouping.keys()) 337842e56b97ce677b83bdab09cda48bc2d89ac75aJust for glyphName in names: 347842e56b97ce677b83bdab09cda48bc2d89ac75aJust writer.simpletag("glyphgroup", name=glyphName, value=self.glyphGrouping[glyphName]) 357842e56b97ce677b83bdab09cda48bc2d89ac75aJust writer.newline() 367842e56b97ce677b83bdab09cda48bc2d89ac75aJust 373a9fd301808f5a8991ca9ac44028d1ecb22d307fBehdad Esfahbod def fromXML(self, name, attrs, content, ttFont): 387842e56b97ce677b83bdab09cda48bc2d89ac75aJust if not hasattr(self, "glyphGrouping"): 397842e56b97ce677b83bdab09cda48bc2d89ac75aJust self.glyphGrouping = {} 40180ace6a5ff1399ec53bc696e8bef7cce6eef39aBehdad Esfahbod if name != "glyphgroup": 417842e56b97ce677b83bdab09cda48bc2d89ac75aJust return 427842e56b97ce677b83bdab09cda48bc2d89ac75aJust self.glyphGrouping[attrs["name"]] = safeEval(attrs["value"]) 437842e56b97ce677b83bdab09cda48bc2d89ac75aJust 44