Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[ttx] AttributeError "isCFF2" from T2CharString when dumping CFF2 toXML() #1451

@anthrotype

Description

@anthrotype

Dumping "SourceSerifVariable-Roman.otf" with ttx yields an AttributeError from T2CharString.toXML method:

$ ttx ~/Downloads/SourceSerifVariable-Roman.otf 
Dumping "/home/clupo/Downloads/SourceSerifVariable-Roman.otf" to "/home/clupo/Downloads/SourceSerifVariable-Roman.ttx"...
Dumping 'GlyphOrder' table...
Dumping 'head' table...
Dumping 'hhea' table...
Dumping 'maxp' table...
Dumping 'OS/2' table...
Dumping 'hmtx' table...
Dumping 'cmap' table...
Dumping 'name' table...
Dumping 'post' table...
Dumping 'BASE' table...
Dumping 'CFF2' table...
ERROR: Unhandled exception has occurred
Traceback (most recent call last):
  File "/home/clupo/Github/fonttools/Lib/fontTools/ttx.py", line 398, in main
    process(jobs, options)
  File "/home/clupo/Github/fonttools/Lib/fontTools/ttx.py", line 372, in process
    action(input, output, options)
  File "/home/clupo/Github/fonttools/Lib/fontTools/misc/loggingTools.py", line 375, in wrapper
    return func(*args, **kwds)
  File "/home/clupo/Github/fonttools/Lib/fontTools/ttx.py", line 269, in ttDump
    newlinestr=options.newlinestr)
  File "/home/clupo/Github/fonttools/Lib/fontTools/ttLib/ttFont.py", line 228, in saveXML
    self._saveXML(writer, **kwargs)
  File "/home/clupo/Github/fonttools/Lib/fontTools/ttLib/ttFont.py", line 283, in _saveXML
    self._tableToXML(tableWriter, tag, splitGlyphs=splitGlyphs)
  File "/home/clupo/Github/fonttools/Lib/fontTools/ttLib/ttFont.py", line 314, in _tableToXML
    table.toXML(writer, self)
  File "/home/clupo/Github/fonttools/Lib/fontTools/ttLib/tables/C_F_F_.py", line 42, in toXML
    self.cff.toXML(writer)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 156, in toXML
    font.toXML(xmlWriter)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 2330, in toXML
    BaseDict.toXML(self, xmlWriter)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 2272, in toXML
    conv.xmlWrite(xmlWriter, name, value)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 1175, in xmlWrite
    value.toXML(xmlWriter)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 722, in toXML
    self[i].toXML(xmlWriter)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 2272, in toXML
    conv.xmlWrite(xmlWriter, name, value)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 1175, in xmlWrite
    value.toXML(xmlWriter)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 2272, in toXML
    conv.xmlWrite(xmlWriter, name, value)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 1175, in xmlWrite
    value.toXML(xmlWriter)
  File "/home/clupo/Github/fonttools/Lib/fontTools/cffLib/__init__.py", line 652, in toXML
    subr.toXML(xmlWriter)
  File "/home/clupo/Github/fonttools/Lib/fontTools/misc/psCharStrings.py", line 1091, in toXML
    if self.isCFF2:
AttributeError: 'T2CharString' object has no attribute 'isCFF2'

If we need to parametrize the toXML method depending on whether isCFF2 or not, then we need to have an extra isCFF2=False parameter in the top-level CFFFontSet class, and set that to True from the table_C_F_F__2.toXML

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions