RoboFont is built on top of several font-related Python libraries which are embedded in RoboFont and can be used in your own scripts. Their APIs are available out-of-the-box – no additional installation is required.
Vanilla is a toolkit for creating windows, dialogs and other native macOS UI elements with Python.
FontTools is a library for manipulating binary fonts (OpenType, TrueType, etc) in Python. It includes many useful tools for engineering fonts, for example:
- converting binary fonts to the
.ttxXML format for editing, and convert them back from TTX to
- reducing binary fonts by removing glyphs, features, font info, kerning, etc.
- reading and writing UFO files
Other embedded libraries
The following libraries are also embedded in RoboFont:
- performing boolean operations on contours
- laying out text with support for OpenType features
- converting cubic bezier curves to quadratic
- providing base functionality for font objects
- creating UIs for font editing applications
- creating UIs that work across different font editors
- extracting data from font binaries into UFO objects
- writing OpenType features dynamically
- interpolating glyphs, fonts and other kinds of font data
- a collection of classes implementing the pen protocol
- building glyphs from other glyphs
- generating glyph name lists from unicode data
- interpolating in multiple dimensions
- normalizing XML and other data inside UFOs
- generating OTFs from UFOs with the AFDKO
- converting UFOs to SVG fonts
- generating instances from UFO masters and designspace
- verifying and examining WOFF files
All standard Python modules are also available in RoboFont. Check the The Python Standard Library for the complete list of modules and documentation.
Locally installed third-party packages are also accessible inside RoboFont. Make sure to add them to the
site-packages folder of the same version of Python as the one embedded in RoboFont (Python 3.6.4).
Check the Python Package Index (PyPI) for an extensive list of third-party packages available. You can also create your own libraries.