RoboFont is highly extendable in any direction from subclassing existing classes to adding new features and functionality in a new tool.
There are many levels how to interact with RoboFont and how to handle various parts: font data, UI, user interaction, ...
A tiny script using roboFab to add actions/features/functionalities to a menu item or key stroke.
# convert to monospace font from robofab.interface.all.dialogs import AskString value = AskString("Monospace width:") try: value = int(value) except ValueError: value = None if value: font = CurrentFont() for glyph in font: glyph.width = value
Save this script in the default script folder to extend RoboFont Extensions menu. See the Preferences to add a short cut to a specific script.
Observers & Tools¶
RoboFont is being build up around a core that is just sending out notifications. A script can subscribe to one or more notifications and perform an action based on the send notification.
There are three kinds of notifications inside RoboFont:
When the app opens, closes, hides; when a window resizes; when a text field changed, ...
Font data notifications are being send out when the font data is being changed. Those notifications are already natively in defcon and extended in RoboFont.
RoboFont notifications are being send from several places: Glyph Editor, Space Centers, based on users interaction related to adjusting, changing font data.
There are two systems build in to subscribe to notifications:
A class, the observer will subscribe to a specific notification. When the notification is being send it will receive a callback with additional info and objects related to the notification.
A tools receives all the notifications RoboFont has, but it only can be activated when an user selected the tool from the toolbar in the glyph editor.