Skip to content

Scripting with Python»

FontLab Python API»

The FontLab Python API docs are in “early draft” state, and is available at:

We currently consider the Python scripting functionality within FontLab experimental. The API docs are not complete, but they give you a broad overview of what’s possible.

FontLab now has three APIs:


The fontlab module allows access to the high-level font objects within FontLab, including access to some user interface elements. It has some compatibility with the RoboFab API. (In early pre-release versions of the app, this was called fg_world.)


The fontgate module operates on a slightly lower level, the FontGate library, which is our shared “font engine” that apps like FontLab or TransType use. (In early pre-release versions of the app, this was called pyfontgate.)

The relationship between fontlab and fontgate APIs will be clarified in the future.


FontLab also has an FL module that aims to be backwards-compatible with the Python API of FontLab Studio 5. However, this module will not be fully compatible with the FLS5 API — since FontLab is a complete rewrite with a different internal structure, it’s not possible for us to provide full compatibility. But many objects and classes will work, though some may work slightly differently.

We intend to publish some little scripts and snippets, and more info here.

Here’s a first little script that loads the fontforge Python module from within FontLab, opens an .sfd font within the FontForge module and “ports” a glyph into FontLab using the RoboFab-compatible Pen protocol.

import fontforge as ff
import fontlab as fl
import fontgate as fg
flf = fl.CurrentFont()
flg = flf["C"]
fff ="example.sfd")
ffg = fff["A"]
flp = flg.getPen()
ffp = ffg.glyphPen()

Writing Scripts»

To write a Python script in FontLab:

  1. Open the Scripting panel.
  2. Click the local menu button and choose New Script.
  3. Write or paste your program. For example:
#FLVI: Sample script

print "\nWelcome to FontLab!\n"
import fontlab

if f.values() != None:
  print "Glyph list:\n", f.values()

4. Choose Save Script As in the local menu to save your script.

Adding Scripts»

Click the first button on the right-hand side of the Scripting panel’s local toolbar to open the List of scripts. The List of scripts may include folders containing your script files. Remember that it will be empty until you add some folders here.

To add a folder with scripts, click the + button. In the standard Open dialog box, select the folder with scripts and click Open. You can add any folder from your hard disk. If it contains at least one file with a .py extension it will appear in the Scripts list:

Any scripts you add here will become available in the Scripts Menu, from where you can run them quickly without opening the Scripting panel.

To remove a folder with all its scripts, select it in the list and click the button.

To update the list contents (after you moved or renamed script files in Finder), click the Refresh folders button.

To open a script for editing, simply double-click it in the list.

Running Scripts»

To run the currently opened script, click the Run button on the local toolbar.