1from __future__ import print_function, division, absolute_import 2from fontTools.misc.py23 import * 3from fontTools.misc.textTools import safeEval 4from . import DefaultTable 5import sys 6import array 7 8 9class table_T_S_I__5(DefaultTable.DefaultTable): 10 11 def decompile(self, data, ttFont): 12 numGlyphs = ttFont['maxp'].numGlyphs 13 assert len(data) == 2 * numGlyphs 14 a = array.array("H") 15 a.fromstring(data) 16 if sys.byteorder != "big": 17 a.byteswap() 18 self.glyphGrouping = {} 19 for i in range(numGlyphs): 20 self.glyphGrouping[ttFont.getGlyphName(i)] = a[i] 21 22 def compile(self, ttFont): 23 glyphNames = ttFont.getGlyphOrder() 24 a = array.array("H") 25 for i in range(len(glyphNames)): 26 a.append(self.glyphGrouping[glyphNames[i]]) 27 if sys.byteorder != "big": 28 a.byteswap() 29 return a.tostring() 30 31 def toXML(self, writer, ttFont): 32 names = sorted(self.glyphGrouping.keys()) 33 for glyphName in names: 34 writer.simpletag("glyphgroup", name=glyphName, value=self.glyphGrouping[glyphName]) 35 writer.newline() 36 37 def fromXML(self, name, attrs, content, ttFont): 38 if not hasattr(self, "glyphGrouping"): 39 self.glyphGrouping = {} 40 if name != "glyphgroup": 41 return 42 self.glyphGrouping[attrs["name"]] = safeEval(attrs["value"]) 43 44