Supported output formats

RoboFont can generate fonts in the following binary formats:

OpenType CFF
  • PostScript-flavored OpenType fonts
  • .otf file extension
  • cubic outlines
OpenType TTF
  • TrueType-flavored OpenType fonts
  • .ttf file extension
  • quadratic outlines
  • .pfa file extension
  • cubic outlines
  • legacy format

Other font formats are supported using extensions or external libraries:

Variable fonts + webfonts
Variable fonts and all webfont formats (WOFF, WOFF2, EOT, SVG) can be generated using the Batch extension.
Color fonts
OpenType color fonts (SVG, COLR/CPAL and sbix formats) can be generated using the RoboChrome extension.
VFB fonts
Source fonts in FontLab’s .vfb format can be generated directly from the Generate Fonts sheet if vfb2ufo is installed.

Generating fonts from the menu

To generate the current font, choose File > Generate Font from the Application Menu (or use the shortcut keys ⌥ ⌘ G) to open the Generate Font sheet:


option description
Save As The name of the output font file.
Tags Tags to be assigned to the generated file. (optional)
Where Folder where the file should be generated.
layer Choose a UFO layer as the source for the generated font.
decompose Convert all components into contours.
remove overlap Remove overlaps in the outlines of all glyphs.
autohint Apply the AFDKO’s autohint program to the font.
release mode Set release mode ON. This turns on subroutinization, applies the GlyphOrderAndAliasDB file, and removes “Development” from the version string.
format Choose a format for the generated font.
use MacRoman as start of the glyph order Use the MacRoman character set as the first glyphs in the font.

Generating fonts with a script

Use the font.generate method to generate fonts with code:

f = CurrentFont()

formats = {
    'OpenType-CFF (otf)': 'otfcff',
    'OpenType-TTF (ttf)': 'otfttf',
    'PostScript (pfa)'  : 'pctype1ascii',

for fontFormat in formats.keys():
    print(f'generating {fontFormat} font...')
    errors = f.generate(formats[fontFormat])
    # print(errors)

If you need floating point coordinates in your otf, remember to set the round tolerance of your font to 0

f = CurrentFont()
f.lib["com.typemytype.robofont.roundTolerance"] = 0

You can find a complete list of the custom lib keys supported by RoboFont at Custom lib keys

Last edited on 01/09/2021