Spiro is a toolkit for curve design, especially font design, created by Raph Levien.

Spiro is also shipping in development versions of FontForge and Inkscape. You might also enjoy the YouTube video of the latter integration, and some examples by Andy Fitzsimon.

Another excellent application of Spiro is the XTrackCAD open source model railway planning tool.

For the theory and numerical techniques behind Spiro, see my PhD thesis.

Get the code

Mac users: ppedit.dmg contains a toy Carbon build of the app. It is a Universal binary, and (probably) requires 10.4.

There are a couple of ways to get the source code. Developers should probably use the darcs repository. To build from that, use:

darcs get http://levien.com/garden/x3/
darcs get http://levien.com/garden/ppedit/
cd ppedit

Alternatively, you can pull a tarball of the 0.01 release. Unpack, then:

cd ppedit

The tarball also contains some utilities for Bezier optimization, and for segmenting scans into letter classes, suitable for tracing over.

The code is GPL'ed, with a patent grant for the curve technology. The current version requires Gtk2 and cairo. More details are in the README.


Raph has been using Spiro to design his own fonts for a while. In addition, the plate files for Inconsolata are here.

A web-app version of Spiro will power fontly.


There's a rollicking good discussion at this typophile thread.