From 506264fea4e0c77b75d510ed036a919f2f55bb29 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20Wobst?= Date: Sun, 14 Jul 2013 08:13:54 +0000 Subject: [PATCH] use surrogateescape error handling to just copy non-ascii chars into the output git-svn-id: http://svn.code.sf.net/p/pyx/code/branches/py3k/pyx@3391 a4f5e268-e194-4f32-bce1-d30804cbbcc5 --- pyx/font/t1file.py | 10 +++++----- pyx/writer.py | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pyx/font/t1file.py b/pyx/font/t1file.py index 8e37e4b0..46915782 100644 --- a/pyx/font/t1file.py +++ b/pyx/font/t1file.py @@ -1138,7 +1138,7 @@ class T1file: .replace(" ", "")) == "0"*512 + "cleartomark": data3 = "" - data = self.data1.encode("ascii") + data2eexec + data3.encode("ascii") + data = self.data1.encode("ascii", errors="surrogateescape") + data2eexec + data3.encode("ascii", errors="surrogateescape") if writer.compress and haszlib: data = zlib.compress(data) @@ -1168,9 +1168,9 @@ def from_PFA_bytes(bytes): except ValueError: raise FontFormatError - data1 = bytes[:m1].decode("ascii") + data1 = bytes[:m1].decode("ascii", errors="surrogateescape") data2eexec = binascii.a2b_hex(bytes[m1: m2].replace(" ", "").replace("\r", "").replace("\n", "")) - data3 = bytes[m2:].decode("ascii") + data3 = bytes[m2:].decode("ascii", errors="surrogateescape") return T1file(data1, data2eexec, data3) def from_PFA_filename(filename): @@ -1203,7 +1203,7 @@ def from_PFB_bytes(bytes): mark = consume(2) if mark != b"\200\1": raise FontFormatError - data1 = consume(pfblength(consume(4))).decode("ascii") + data1 = consume(pfblength(consume(4))).decode("ascii", errors="surrogateescape") mark = consume(2) if mark != b"\200\2": raise FontFormatError @@ -1213,7 +1213,7 @@ def from_PFB_bytes(bytes): mark = consume(2) if mark != b"\200\1": raise FontFormatError - data3 = consume(pfblength(consume(4))).decode("ascii") + data3 = consume(pfblength(consume(4))).decode("ascii", errors="surrogateescape") mark = consume(2) if mark != b"\200\3": raise FontFormatError diff --git a/pyx/writer.py b/pyx/writer.py index 2a02a85a..2d7f26b2 100644 --- a/pyx/writer.py +++ b/pyx/writer.py @@ -22,12 +22,13 @@ class writer: - def __init__(self, file, encoding="ascii"): + def __init__(self, file, encoding="ascii", errors="surrogateescape"): self.file = file self.encoding = encoding + self.errors = errors def write(self, s): - self.file.write(s.encode(self.encoding)) + self.file.write(s.encode(self.encoding, errors=self.errors)) def write_bytes(self, b): self.file.write(b) -- 2.11.4.GIT