のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters

import defcon
import extractor

ufo = defcon.Font()
extractor.extractUFO("./font.otf", ufo)
ufo.save("./font_otf.ufo")

pypi.org

UnicodeかAscii以外の文字があるから、エラーなのかな?

myExtracotr2.py
Traceback (most recent call last):
  File "fontTools\ufoLib\__init__.py", line 181, in _writePlist
    plistlib.dump(obj, fp)
  File "fontTools\misc\plistlib.py", line 472, in dump
    pretty_print=pretty_print,
  File "fontTools\misc\plistlib.py", line 409, in totree
    return _make_element(value, context)
  File "Python37_64\lib\functools.py", line 840, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
  File "fontTools\misc\plistlib.py", line 323, in _dict_element
    el.append(_make_element(value, ctx))
  File "Python37_64\lib\functools.py", line 840, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
  File "fontTools\misc\plistlib.py", line 284, in _string_element
    el.text = value
  File "src\lxml\etree.pyx", line 1025, in lxml.etree._Element.text.__set__
  File "src\lxml\apihelpers.pxi", line 734, in lxml.etree._setNodeText
  File "src\lxml\apihelpers.pxi", line 722, in lxml.etree._createTextNode
  File "src\lxml\apihelpers.pxi", line 1527, in lxml.etree._utf8
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "myExtracotr2.py", line 7, in <module>
    ufo.save("./AP-OTF-A1GothicStd-Regular_otf.ufo")
  File "\defcon\objects\font.py", line 851, in save
    self._saveInfo(writer=writer, saveAs=saveAs, progressBar=progressBar)
  File "\defcon\objects\font.py", line 890, in _saveInfo
    self.saveInfo(writer)
  File "\defcon\objects\font.py", line 901, in saveInfo
    writer.writeInfo(self.info, validate=self.info.ufoLibWriteValidate)
  File "\fontTools\ufoLib\__init__.py", line 1215, in writeInfo
    self._writePlist(FONTINFO_FILENAME, infoData)
  File "\fontTools\ufoLib\__init__.py", line 186, in _writePlist
    % (fileName, self.fs, e)
fontTools.ufoLib.errors.UFOLibError: 'fontinfo.plist' could not be written on <osfs 'font_otf.ufo'> because the data is not properly formatted: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters

Process finished with exit code 1