RoboFont 4 doesn’t seem to be checking the 'external_packages' directory



  • I like to use UFO Normalizer to format UFOs the same between RoboFont and external scripts.

    However, before Version 0.6.1, UFO Normalizer had a bug in which images were deleted from normalization. This is a big problem in one of my font projects, where I have to frequently place images to trace.

    I’ve found that RF4 seems to ship with UFO Normalizer 0.6.0, so the image bug still exists for me when saving with normalization turned on.

    However, it seems that I should be able to override embedded libraries by copying the UFO Normalizer unzipped release folder ufoNormalizer-0.6.1 into Library/Application Support/RoboFont/external_packages.

    But, it now seems that either I am doing something wrong or this isn’t actually working in RF4.

    After I have added the release to external_packages and restarted RF, I run the following to test the version:

    import ufonormalizer
    
    print(ufonormalizer.__version__)
    

    ...and I get the response of 0.5.4.

    58bbffc4-b57f-4e8e-ad77-861ab6d746eb-image.png

    (Probably not relevant: I’ve also checked that my global installation of ufonormalizer is up to date, and it is at 0.6.1.)

    To make sure this wasn’t just an issue in UFO Normalizer, I also tested this with FontMake 2.4.2. I get a similar problem from here:

    import fontmake
    
    print(fontmake.__version__)
    
    >>> 2.4.0
    

    Finally, I read the entire page on overriding embedded libraries, and I see the suggestion to check the path of a library. When I do this, I see that RF seems to not be scanning the external_packages directory, after all.

    import fontmake
    print(fontmake.__path__)
    >>> ['/Applications/RoboFont.app/Contents/Resources/lib/python3.7/fontmake']
    

    I have also tested getting the library folder with git clone https://github.com/googlefonts/fontmake.git, then copying that folder into external_packages, but that also fails.

    Is there anything else I should try here, or might this just be a bug?

    Thanks!


  • admin

    if you run:

    import sys
    
    print(sys.path)
    

    it should print out a list of paths to check and /Users/<yourUserName>/Library/Application Support/RoboFont/external_packages should be there.


  • admin

    FYI: the public beta released during the hackathon has ufonormalizer 0.6.1

    https://robofont.com/events/robohackathon2021/#robofont-hackathon-public-beta



  • @frederik said in RoboFont 4 doesn’t seem to be checking the 'external_packages' directory:

    import sys

    print(sys.path)

    Thanks, Frederik!

    It is there, but it comes early in the list... could that be causing my problem? Is there a way to change that?

    /Users/stephennixon
    /Users/stephennixon/Library/Application Support/RoboFont/external_packages
    /Applications/RoboFont.app/Contents/Resources/lib/python37.zip
    /Applications/RoboFont.app/Contents/Resources/lib/python3.7
    /Applications/RoboFont.app/Contents/Resources/lib/python3.7/lib-dynload
    /Applications/RoboFont.app/Contents/Resources/lib/python3.7/site-packages.zip
    /Applications/RoboFont.app/Contents/Resources/lib/python3.7/site-packages
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages
    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/drawBot-3.120-py3.7.egg
    /Users/stephennixon/Library/Application Support/RoboFont/plugins/DrawBot.roboFontExt/lib
    /Users/stephennixon/Library/Application Support/RoboFont/plugins/master-tools.roboFontExt/lib
    
    

    The public beta is probably what I need, though. I’ll give it a try!


  • admin

    the order is important: py stops looking for packages if there is one found

    strange you can not acces those packages: could you send a screenshot of that folder?

    everything should be at root level, not in a sub folder inside external_packages


Log in to reply