Use sys.byteorder, getting rid of ttLib.endian


git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@527 4cde692c-a291-49d1-8350-778aa11640f8
diff --git a/Lib/fontTools/ttLib/__init__.py b/Lib/fontTools/ttLib/__init__.py
index 802dc50..45abfbb 100644
--- a/Lib/fontTools/ttLib/__init__.py
+++ b/Lib/fontTools/ttLib/__init__.py
@@ -42,7 +42,7 @@
 """
 
 #
-# $Id: __init__.py,v 1.49 2008-03-01 09:30:17 jvr Exp $
+# $Id: __init__.py,v 1.50 2008-03-01 11:43:00 jvr Exp $
 #
 
 import sys
@@ -753,24 +753,6 @@
 			self.glyphOrder.append(attrs["name"])
 
 
-def _test_endianness():
-	"""Test the endianness of the machine. This is crucial to know
-	since TrueType data is always big endian, even on little endian
-	machines. There are quite a few situations where we explicitly
-	need to swap some bytes.
-	"""
-	import struct
-	data = struct.pack("h", 0x01)
-	if data == "\000\001":
-		return "big"
-	elif data == "\001\000":
-		return "little"
-	else:
-		assert 0, "endian confusion!"
-
-endian = _test_endianness()
-
-
 def getTableModule(tag):
 	"""Fetch the packer/unpacker module for a table. 
 	Return None when no module is found.
diff --git a/Lib/fontTools/ttLib/sfnt.py b/Lib/fontTools/ttLib/sfnt.py
index e94a516..cc1a022 100644
--- a/Lib/fontTools/ttLib/sfnt.py
+++ b/Lib/fontTools/ttLib/sfnt.py
@@ -12,6 +12,7 @@
 a table's length chages you need to rewrite the whole file anyway.
 """
 
+import sys
 import struct, sstruct
 import Numeric
 import os
@@ -215,7 +216,7 @@
 	if remainder:
 		data = data + '\0' * (4-remainder)
 	a = Numeric.fromstring(struct.pack(">l", start) + data, Numeric.Int32)
-	if ttLib.endian <> "big":
+	if sys.byteorder <> "big":
 		a = a.byteswapped()
 	return Numeric.add.reduce(a)
 
diff --git a/Lib/fontTools/ttLib/tables/G_P_K_G_.py b/Lib/fontTools/ttLib/tables/G_P_K_G_.py
index 42214bf..501a9b2 100644
--- a/Lib/fontTools/ttLib/tables/G_P_K_G_.py
+++ b/Lib/fontTools/ttLib/tables/G_P_K_G_.py
@@ -1,3 +1,4 @@
+import sys
 import DefaultTable
 import sstruct
 import array
@@ -25,7 +26,7 @@
 		GMAPoffsets = array.array("L")
 		endPos = (self.numGMAPs+1) * 4
 		GMAPoffsets.fromstring(newData[:endPos])
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			GMAPoffsets.byteswap()
 		self.GMAPs = []
 		for i in range(self.numGMAPs):
@@ -36,7 +37,7 @@
 		endPos = pos + (self.numGlyplets + 1)*4
 		glyphletOffsets = array.array("L")
 		glyphletOffsets.fromstring(newData[pos:endPos])
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			glyphletOffsets.byteswap()
 		self.glyphlets = []
 		for i in range(self.numGlyplets):
@@ -59,7 +60,7 @@
 			pos += len(self.GMAPs[i-1])
 			GMAPoffsets[i] = pos
 		gmapArray = Numeric.array(GMAPoffsets, Numeric.UInt32)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			gmapArray = gmapArray.byteswapped()
 		dataList.append(gmapArray.tostring())
 
@@ -68,7 +69,7 @@
 			pos += len(self.glyphlets[i-1])
 			glyphletOffsets[i] = pos
 		glyphletArray = Numeric.array(glyphletOffsets, Numeric.UInt32)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			glyphletArray = glyphletArray.byteswapped()
 		dataList.append(glyphletArray.tostring())
 		dataList += self.GMAPs
diff --git a/Lib/fontTools/ttLib/tables/T_S_I__5.py b/Lib/fontTools/ttLib/tables/T_S_I__5.py
index 35b9ee1..f714b82 100644
--- a/Lib/fontTools/ttLib/tables/T_S_I__5.py
+++ b/Lib/fontTools/ttLib/tables/T_S_I__5.py
@@ -1,3 +1,4 @@
+import sys
 import DefaultTable
 import array
 from fontTools import ttLib
@@ -11,7 +12,7 @@
 		assert len(data) == 2 * numGlyphs
 		a = array.array("H")
 		a.fromstring(data)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			a.byteswap()
 		self.glyphGrouping = {}
 		for i in range(numGlyphs):
@@ -22,7 +23,7 @@
 		a = array.array("H")
 		for i in range(len(glyphNames)):
 			a.append(self.glyphGrouping[glyphNames[i]])
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			a.byteswap()
 		return a.tostring()
 	
diff --git a/Lib/fontTools/ttLib/tables/_c_m_a_p.py b/Lib/fontTools/ttLib/tables/_c_m_a_p.py
index f416e61..d17c66e 100644
--- a/Lib/fontTools/ttLib/tables/_c_m_a_p.py
+++ b/Lib/fontTools/ttLib/tables/_c_m_a_p.py
@@ -1,3 +1,4 @@
+import sys
 import DefaultTable
 import struct
 import array
@@ -267,7 +268,7 @@
 		allKeys = array.array("H")
 		allKeys.fromstring(data[:512])
 		data = data[512:]
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			allKeys.byteswap()
 		subHeaderKeys = [ key/8 for key in allKeys]
 		maxSubHeaderindex = max(subHeaderKeys)
@@ -283,7 +284,7 @@
 			giDataPos = pos + subHeader.idRangeOffset-2
 			giList = array.array("H")
 			giList.fromstring(data[giDataPos:giDataPos + subHeader.entryCount*2])
-			if ttLib.endian <> "big":
+			if sys.byteorder <> "big":
 				giList.byteswap()
 			subHeader.glyphIndexArray = giList
 			subHeaderList.append(subHeader)
@@ -640,7 +641,7 @@
 		allCodes.fromstring(data)
 		self.data = data = None
 
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			allCodes.byteswap()
 		
 		# divide the data
@@ -798,7 +799,7 @@
 		charCodeArray = Numeric.array( endCode + [0] + startCode, Numeric.UInt16)
 		idDeltaeArray = Numeric.array(idDelta, Numeric.Int16)
 		restArray = Numeric.array(idRangeOffset + glyphIndexArray, Numeric.UInt16)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			charCodeArray = charCodeArray.byteswapped()
 			idDeltaeArray = idDeltaeArray.byteswapped()
 			restArray = restArray.byteswapped()
@@ -841,7 +842,7 @@
 		#assert len(data) == 2 * entryCount  # XXX not true in Apple's Helvetica!!!
 		glyphIndexArray = array.array("H")
 		glyphIndexArray.fromstring(data[:2 * int(entryCount)])
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			glyphIndexArray.byteswap()
 		self.data = data = None
 
@@ -870,7 +871,7 @@
 			valueList = map(operator.getitem, [cmap]*lenCodes, codes)
 			valueList = map(ttFont.getGlyphID, valueList)
 			glyphIndexArray = Numeric.array(valueList, Numeric.UInt16)
-			if ttLib.endian <> "big":
+			if sys.byteorder <> "big":
 				glyphIndexArray = glyphIndexArray.byteswapped()
 			data = glyphIndexArray.tostring()
 		else:
diff --git a/Lib/fontTools/ttLib/tables/_c_v_t.py b/Lib/fontTools/ttLib/tables/_c_v_t.py
index ced5523..be08ca3 100644
--- a/Lib/fontTools/ttLib/tables/_c_v_t.py
+++ b/Lib/fontTools/ttLib/tables/_c_v_t.py
@@ -1,3 +1,4 @@
+import sys
 import DefaultTable
 import array
 from fontTools import ttLib
@@ -8,13 +9,13 @@
 	def decompile(self, data, ttFont):
 		values = array.array("h")
 		values.fromstring(data)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			values.byteswap()
 		self.values = values
 	
 	def compile(self, ttFont):
 		values = self.values[:]
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			values.byteswap()
 		return values.tostring()
 	
diff --git a/Lib/fontTools/ttLib/tables/_g_l_y_f.py b/Lib/fontTools/ttLib/tables/_g_l_y_f.py
index f9dda8d..80c1c02 100644
--- a/Lib/fontTools/ttLib/tables/_g_l_y_f.py
+++ b/Lib/fontTools/ttLib/tables/_g_l_y_f.py
@@ -14,6 +14,7 @@
 SCALE_COMPONENT_OFFSET_DEFAULT = 0   # 0 == MS, 1 == Apple
 
 
+import sys
 import struct, sstruct
 import DefaultTable
 from fontTools import ttLib
@@ -351,7 +352,7 @@
 	def decompileCoordinates(self, data):
 		endPtsOfContours = array.array("h")
 		endPtsOfContours.fromstring(data[:2*self.numberOfContours])
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			endPtsOfContours.byteswap()
 		self.endPtsOfContours = endPtsOfContours.tolist()
 		
@@ -468,7 +469,7 @@
 		assert len(self.coordinates) == len(self.flags)
 		data = ""
 		endPtsOfContours = array.array("h", self.endPtsOfContours)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			endPtsOfContours.byteswap()
 		data = data + endPtsOfContours.tostring()
 		instructions = self.program.getBytecode()
diff --git a/Lib/fontTools/ttLib/tables/_h_m_t_x.py b/Lib/fontTools/ttLib/tables/_h_m_t_x.py
index 2675a29..ff5a9a5 100644
--- a/Lib/fontTools/ttLib/tables/_h_m_t_x.py
+++ b/Lib/fontTools/ttLib/tables/_h_m_t_x.py
@@ -1,3 +1,4 @@
+import sys
 import DefaultTable
 import Numeric
 from fontTools import ttLib
@@ -15,7 +16,7 @@
 		numberOfMetrics = int(getattr(ttFont[self.headerTag], self.numberOfMetricsName))
 		metrics = Numeric.fromstring(data[:4 * numberOfMetrics], 
 				Numeric.Int16)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			metrics = metrics.byteswapped()
 		metrics.shape = (numberOfMetrics, 2)
 		data = data[4 * numberOfMetrics:]
@@ -28,7 +29,7 @@
 					Numeric.Int16)
 			sideBearings = Numeric.fromstring(data[:2 * numberOfSideBearings], 
 					Numeric.Int16)
-			if ttLib.endian <> "big":
+			if sys.byteorder <> "big":
 				sideBearings = sideBearings.byteswapped()
 			data = data[2 * numberOfSideBearings:]
 			additionalMetrics = Numeric.array([advances, sideBearings], 
@@ -62,12 +63,12 @@
 		setattr(ttFont[self.headerTag], self.numberOfMetricsName, len(metrics))
 		
 		metrics = Numeric.array(metrics, Numeric.Int16)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			metrics = metrics.byteswapped()
 		data = metrics.tostring()
 		
 		additionalMetrics = Numeric.array(additionalMetrics, Numeric.Int16)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			additionalMetrics = additionalMetrics.byteswapped()
 		data = data + additionalMetrics.tostring()
 		return data
diff --git a/Lib/fontTools/ttLib/tables/_l_o_c_a.py b/Lib/fontTools/ttLib/tables/_l_o_c_a.py
index ca3bda6..bcbd00b 100644
--- a/Lib/fontTools/ttLib/tables/_l_o_c_a.py
+++ b/Lib/fontTools/ttLib/tables/_l_o_c_a.py
@@ -1,3 +1,4 @@
+import sys
 import DefaultTable
 import array
 import Numeric
@@ -16,7 +17,7 @@
 			format = "H"
 		locations = array.array(format)
 		locations.fromstring(data)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			locations.byteswap()
 		locations = Numeric.array(locations, Numeric.Int32)
 		if not longFormat:
@@ -33,7 +34,7 @@
 			ttFont['head'].indexToLocFormat = 0
 		else:
 			ttFont['head'].indexToLocFormat = 1
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			locations = locations.byteswapped()
 		return locations.tostring()
 	
diff --git a/Lib/fontTools/ttLib/tables/_p_o_s_t.py b/Lib/fontTools/ttLib/tables/_p_o_s_t.py
index f627384..3911863 100644
--- a/Lib/fontTools/ttLib/tables/_p_o_s_t.py
+++ b/Lib/fontTools/ttLib/tables/_p_o_s_t.py
@@ -1,3 +1,4 @@
+import sys
 from fontTools.ttLib.standardGlyphOrder import standardGlyphOrder
 import DefaultTable
 import struct, sstruct
@@ -77,7 +78,7 @@
 		data = data[2:]
 		indices = array.array("H")
 		indices.fromstring(data[:2*numGlyphs])
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			indices.byteswap()
 		data = data[2*numGlyphs:]
 		self.extraNames = extraNames = unpackPStrings(data)
@@ -143,7 +144,7 @@
 				extraDict[psName] = len(extraNames)
 				extraNames.append(psName)
 			indices.append(index)
-		if ttLib.endian <> "big":
+		if sys.byteorder <> "big":
 			indices.byteswap()
 		return struct.pack(">H", numGlyphs) + indices.tostring() + packPStrings(extraNames)