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)