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