diff --git a/Lib/fontTools/misc/xmlWriter.py b/Lib/fontTools/misc/xmlWriter.py index 746462382..11e828900 100644 --- a/Lib/fontTools/misc/xmlWriter.py +++ b/Lib/fontTools/misc/xmlWriter.py @@ -41,33 +41,29 @@ class XMLWriter: """Writes text in a CDATA section.""" self._writeraw("") - def writeutf16be(self, data): - """Writes a UTF-16 bytes() sequence into the XML - as native Unicode. When this is read in xmlReader, - the original bytes can be recovered by encoding to - 'utf-16-be'.""" - self._writeraw(escape(data.decode('utf-16-be'))) - - def write8bit(self, data): + def write8bit(self, data, strip=False): """Writes a bytes() sequence into the XML, escaping non-ASCII bytes. When this is read in xmlReader, the original bytes can be recovered by encoding to 'latin-1'.""" - self._writeraw(escape8bit(data)) + self._writeraw(escape8bit(data), strip=strip) - def write16bit(self, data): - self._writeraw(escape16bit(data)) + def write16bit(self, data, strip=False): + self._writeraw(escape16bit(data), strip=strip) def write_noindent(self, string): """Writes text without indentation.""" self._writeraw(escape(string), indent=False) - def _writeraw(self, data, indent=True): + def _writeraw(self, data, indent=True, strip=False): """Writes bytes, possibly indented.""" if indent and self.needindent: self.file.write(self.indentlevel * self.indentwhite) self.needindent = 0 - self.file.write(tostr(data, encoding="utf-8")) + s = tostr(data, encoding="utf-8") + if (strip): + s = s.strip() + self.file.write(s) def newline(self): self.file.write("\n") diff --git a/Lib/fontTools/ttLib/tables/_n_a_m_e.py b/Lib/fontTools/ttLib/tables/_n_a_m_e.py index 9ea5f764f..dad85b9af 100644 --- a/Lib/fontTools/ttLib/tables/_n_a_m_e.py +++ b/Lib/fontTools/ttLib/tables/_n_a_m_e.py @@ -102,11 +102,11 @@ class NameRecord: if len(self.string) % 2: # no, shouldn't happen, but some of the Apple # tools cause this anyway :-( - writer.write16bit(self.string + b"\0") + writer.write16bit(self.string + b"\0", strip=True) else: - writer.write16bit(self.string) + writer.write16bit(self.string, strip=True) else: - writer.write8bit(self.string) + writer.write8bit(self.string, strip=True) writer.newline() writer.endtag("namerecord") writer.newline()