Crash while generating font



  • RF keeps freezing while generating font, it gives me this error (below) while the progress bar reads "remove overlap..."

    Traceback (most recent call last):
      File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/vanilla/dialogs.py", line 110, in savePanelDidEnd_returnCode_contextInfo_
        self._resultCallback(self._result)
      File "lib/doodleFontWindow.pyc", line 318, in _compileFont
      File "lib/fontObjects/doodleFont.pyc", line 677, in generate
      File "lib/fontObjects/doodleFont.pyc", line 769, in prepareCompile
      File "lib/fontObjects/doodleFont.pyc", line 784, in compileRemoveOverlap
      File "lib/fontObjects/doodleContour.pyc", line 34, in join
    IndexError: list index out of range
    Traceback (most recent call last):
      File "lib/doodleDelegate.pyc", line 65, in sendEvent_
      File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/vanilla/dialogs.py", line 110, in savePanelDidEnd_returnCode_contextInfo_
        self._resultCallback(self._result)
      File "lib/doodleFontWindow.pyc", line 318, in _compileFont
      File "lib/fontObjects/doodleFont.pyc", line 677, in generate
      File "lib/fontObjects/doodleFont.pyc", line 769, in prepareCompile
      File "lib/fontObjects/doodleFont.pyc", line 784, in compileRemoveOverlap
      File "lib/fontObjects/doodleContour.pyc", line 34, in join
    IndexError: list index out of range
    

    Generating in Area51 works, but gives me this error:

    makeotfexe [WARNING]  [internal] Feature block seen before any language system statement.  You should place languagesystem statements before any feature definition [features 1]
    makeotfexe [WARNING]  Vendor name too short. Padded automatically to 4 characters. [features 1161]
    makeotfexe [WARNING]  Major version number not in range 1 .. 255 [features 1165]
    

    Any ideas how to resolve this?


  • admin

    mmm, I guess you have in one of your glyphs an empty, open contour. During generating a font binary RoboFont is closing all open contours.

    Try running this script looking for open contours and remove them instead of trying to close them, or send me the UFO.

    f = CurrentFont()
    
    for g in f:
        contoursToRemove = []
        for c in g:
            if c.open:
                ## collect all open contours
                contoursToRemove.append(c)
        
        for c in contoursToRemove:
            ## remove all open contours
            g.removeContour(c)
        
        if contoursToRemove:
            g.update()
    


  • Indeed, there was a stray single point on top of another point. That script worked great, thank you.