Group Details Private


Member List

  • RE: Metrics Machine Batch Export

    Those could be added, I guess. Where features are generated for a given set of ufo files.

    posted in Extensions
  • RE: Clicked on Views Icon- now robofont crashes on open.

    Hi Zack

    Somehow you managed to add a Smart Set in which the search query is not valid.

    You can use a script to remove a single item from the Smart Sets list, or completely remove all Smart Sets.

    Run one of these in a Scripting Window:

    1. Remove all Smart Sets

    # be careful: this is not undoable
    from mojo.UI import setDefault
    setDefault("smartSets", [])

    2. Remove a Smart Set item

    from mojo.UI import getDefault
    # get all Smart Sets
    smartSets = getDefault("smartSets", [])
    # print out Smart Set names with index
    for index, smartSet in enumerate(smartSets):
        print(index, smartSet["smartSetName"], smartSet.get("query"))
    # set an index number, and uncomment the lines below
    # indexToRemove = 3
    # del smartSets[indexToRemove]
    # setDefault("smartSets", smartSets)

    good luck!

    posted in Problems & Bugs
  • RE: Generate font with limited character set

    He Pieter

    a script could help you out:

    # get the current font
    font = CurrentFont()
    # make a copy of it
    destFont = font.copy()
    # make a list of glyphs to swap
    # this could be built automatically if a fixed glyph naming pattern is used
    glyphsToSwap = [
       ("A", "A.alt"), 
       ("B", "B.alt"),
    # loop over all pairs of glyphs to swap
    for dest, source in glyphsToSwap:
        # get the glyph objects with those names
        destGlyph = destFont[dest]
        sourceGlyph = destFont[source]
        # insert them in the destination font
        destFont.insertGlyph(sourceGlyph, dest)
        destFont.insertGlyph(destGlyph, source)
    # generate the font
        format="otf",                            # in .otf format
        path=font.path.replace(".ufo", ".otf"),  # into the same folder
        checkOutlines=True,                      # with remove overlap
        decompose=True,                          # and decompose 

    Maybe you want to swap them in kerning and kern groups too...

    This script allows you to keep the existing feature file.

    good luck!

    posted in General Questions & Discussions
  • RE: Issue: Custom Tool – getGlyph() returns None

    ps. BaseEventTool.getGlyph() returns None only the first time you activate the tool in a new glyph window; the second time, it does return the current glyph:

    custom tool is active​
    <RGlyph 'i' ('foreground') at 4691232360>
    custom tool is inactive
    custom tool is active
    <RGlyph 'i' ('foreground') at 4485911888>
    <RGlyph 'i' ('foreground') at 4691234264>
    posted in Problems & Bugs
  • RE: Issue: Custom Tool – getGlyph() returns None

    hello @RafaŁ-Buchner,

    I don’t really know what BaseEventTool.getGlyph() does… (so not sure if it’s a bug)

    why not simply use CurrentGlyph() instead?

    here’s an example script based on

    from import BaseEventTool, installTool, uninstallTool
    from mojo.drawingTools import *
    class MyTool(BaseEventTool):
        def setup(self):
            self.position = None
        def mouseDown(self, point, clickCount):
            self.position = point
        def mouseDragged(self, point, delta):
            self.position = point
        def mouseUp(self, point):
            self.position = None
        def becomeActive(self):
            print('custom tool is active')
        def becomeInactive(self):
            print('custom tool is inactive')
        def draw(self, scale):
            if self.position is not None:
                size = 10
                x = self.position.x - size
                y = self.position.y - size
                stroke(1, 0, 0)
                oval(x, y, size*2, size*2)
        def getToolbarTip(self):
            return "My Tool Tip"
    posted in Problems & Bugs
  • RE: Can't update robofont

    There are some non-ascii characters in your fea file. You can remove the non-ascii by right-clicking the UFO file and choosing Show Package Contents; open the feature.fea file in a code editor and remove the second line. I hope this makes sense. Or wait until the update is posted.

    This issue is fixed and will be present in the next update.
    for your reference:

    posted in Problems & Bugs
  • RE: Traceback when sorting AllFonts()

    @benedikt said in Traceback when sorting AllFonts():

    these functionalities should be provided by an implementation and not by fontParts, similar to CurrentFont, CurrentGlyph, CurrentLayer, CurrentContour, CurrentPoint,... FontList is optional but could be provided by an implementation.

    posted in Problems & Bugs
  • RE: Can't update robofont

    could you send me the ufo file by mail?


    posted in Problems & Bugs
  • RE: Traceback when sorting AllFonts()

    This changed to a list of info attributes, see

    posted in Problems & Bugs

Looks like your connection to RoboFont ● Forum was lost, please wait while we try to reconnect.