py23 tostr()/tobytes() and using them
ttf->xml seems to be mostly working now.
diff --git a/Lib/fontTools/misc/xmlWriter.py b/Lib/fontTools/misc/xmlWriter.py
index 4efd3f6..a1ba65f 100644
--- a/Lib/fontTools/misc/xmlWriter.py
+++ b/Lib/fontTools/misc/xmlWriter.py
@@ -2,6 +2,7 @@
from __future__ import print_function, division
from fontTools.misc.py23 import *
+import sys
import string
import struct
@@ -122,17 +123,18 @@
def escape(data):
+ data = tostr(data)
data = data.replace("&", "&")
data = data.replace("<", "<")
return data
def escapeattr(data):
- data = data.replace("&", "&")
- data = data.replace("<", "<")
+ data = escape(data)
data = data.replace('"', """)
return data
def escape8bit(data):
+ data = tostr(data)
def escapechar(c):
n = byteord(c)
if c in "<&":
@@ -146,13 +148,11 @@
return "&#" + repr(n) + ";"
return "".join(map(escapechar, data))
-needswap = struct.pack("h", 1) == "\001\000"
-
def escape16bit(data):
import array
a = array.array("H")
a.fromstring(data)
- if needswap:
+ if sys.byteorder != "big":
a.byteswap()
def escapenum(n, amp=byteord("&"), lt=byteord("<")):
if n == amp:
@@ -160,7 +160,7 @@
elif n == lt:
return "<"
elif 32 <= n <= 127:
- return bytechr(n)
+ return chr(n)
else:
return "&#" + repr(n) + ";"
return "".join(map(escapenum, a))