Embedded libraries

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 required.


vanilla is a toolkit for creating windows, dialogs and other native UI elements with Python.

Other embedded libraries

The following libraries are also embedded in RoboFont:

library used for…
booleanOperations performing boolean operations on contours
compositor laying out text with support for OpenType features
cu2qu converting cubic bezier curves to quadratic
defcon providing base functionality for font objects
defconAppKit creating UIs for font editing applications
dialogKit creating UIs that work across different font editors
extractor extracting data from font binaries into UFO objects
feaPyFoFum writing OpenType features dynamically
fontMath interpolating glyphs, fonts and other kinds of font data
fontPens a collection of classes implementing the pen protocol
fontTools dealing with binaries (OpenType, TrueType etc)
glyphConstruction building glyphs from other glyphs
glyphNameFormatter generating glyph name lists from unicode data
mutatorMath interpolating in multiple dimensions
ufoNormalizer normalizing XML and other data inside UFOs
ufo2fdk generating OTFs from UFOs with the AFDKO
ufo2svg converting UFOs to SVG fonts
ufoLib reading and writing UFOs
woffTools verifying and examining WOFF files

Standard libraries

All standard Python modules are also available in RoboFont.

Check the The Python Standard Library for a complete list of modules included in Python.

External libraries

In addition to embedded and standard libraries, which are available out-of-the-box in RoboFont, you can also install and use one of the thousands of third-party Python modules available.

All local packages are accessible in RoboFont, if they are properly installed in the default python site-packages folder.

For a complete list of packages, check PyPI - the Python Package Index.

Last edited on 14/02/2018