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