MFEK / sfdLib.py

An SFD to UFO converter
Other
17 stars 9 forks source link

Fails if SFDUTF7 strings include 0x0B #14

Closed ctrlcctrlv closed 2 years ago

ctrlcctrlv commented 2 years ago

Unclear to me how this ended up in Chomsky:

$ rg 'withershins' ~/Workspace/chomsky/Chomsky.sfd
27071:Comment: "this is the apostrophe copied five times, each time rotated 72deg withershins, then everything scaled to 50%+AAoA
                                                                                                                                 +99QA"
Traceback (most recent call last):
  File "/home/fred/.local/bin/sfd2ufo", line 8, in <module>
    sys.exit(main())
  File "/home/fred/.local/lib/python3.10/site-packages/sfdLib/__main__.py", line 39, in main
    font.save(args.ufofile, overwrite=True, validate=False)
  File "/home/fred/.local/lib/python3.10/site-packages/ufoLib2/objects/font.py", line 574, in save
    self.write(writer, saveAs=saveAs)
  File "/home/fred/.local/lib/python3.10/site-packages/ufoLib2/objects/font.py", line 509, in write
    self.layers.write(writer, saveAs=saveAs)
  File "/home/fred/.local/lib/python3.10/site-packages/ufoLib2/objects/layerSet.py", line 374, in write
    layer.write(glyphSet, saveAs=saveAs)
  File "/home/fred/.local/lib/python3.10/site-packages/ufoLib2/objects/layer.py", line 365, in write
    glyphSet.writeGlyph(
  File "/home/fred/.local/lib/python3.10/site-packages/fontTools/ufoLib/glifLib.py", line 490, in writeGlyph
    data = _writeGlyphToBytes(
  File "/home/fred/.local/lib/python3.10/site-packages/fontTools/ufoLib/glifLib.py", line 724, in _writeGlyphToBytes
    _writeNote(glyphObject, root, validate)
  File "/home/fred/.local/lib/python3.10/site-packages/fontTools/ufoLib/glifLib.py", line 856, in _writeNote
    etree.SubElement(element, "note").text = note
  File "src/lxml/etree.pyx", line 1039, in lxml.etree._Element.text.__set__
  File "src/lxml/apihelpers.pxi", line 747, in lxml.etree._setNodeText
  File "src/lxml/apihelpers.pxi", line 735, in lxml.etree._createTextNode
  File "src/lxml/apihelpers.pxi", line 1540, in lxml.etree._utf8
ValueError: "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters"

Probably a weird FontForge-ism.

Blocking on #13 and MFEK/sfdutf7.py#1.

ctrlcctrlv commented 2 years ago

Closed by https://github.com/MFEK/sfdutf7.py/commit/fe92e0be2e0a30f15d5dff08c4b9c1df4ac648a0.