Skip to content
The replacement for RoboFab
Branch: master
Clone or download
Latest commit c2b3db7 May 13, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.travis Fixup .travis based (read copied) on @anthrotype's changes to fonttools Sep 12, 2018
Lib/fontParts set the required default layer Mar 26, 2019
documentation adding RFont.insertLayer to the docs Apr 30, 2019
.appveyor.yml Remove a bit of the appveyor python Sep 12, 2018
.codecov.yml Update .codecov.yml Apr 22, 2018
.coveragerc Do not need to test the file. Apr 29, 2018
.prospector.yaml Update .prospector.yaml Mar 12, 2018
.travis.yml Fix travis.yaml for the change to robotools Mar 15, 2019
CONTRIBUTING.rst Notes about coverage & tox + coverage Apr 6, 2018
LICENSE Initial commit Mar 2, 2016 prep work for uploading to PyPI (#114) Feb 2, 2018
NEWS.rst Update NEWS.rst Mar 18, 2019
dev-requirements.txt Create dev-requirements.txt Mar 21, 2018
requirements.txt Update fonttools from 3.41.0 to 3.41.2 May 13, 2019
setup.cfg Bump version: 0.8.6 → 0.8.7.dev0 Mar 15, 2019 list Ben as author and maintainer Jan 16, 2019
tox.ini Tweaks to tox Sep 12, 2018


Build Status Appveyor Coverage Codacy PyPI Python Versions


An API for interacting with the parts of fonts during the font development process. FontParts is the replacement for RoboFab. The project has a MIT open-source licence.

The documentation is at

This is a work in progress. We are still working out the API, abstract implementation, example implementation, test suite and documentation.

Want to contribute?

Thank you! Please see the CONTRIBUTING.rst file for a guide on how to help.

Also, feedback is very much welcome, please open an issue when you run into something that you wish fontParts did/didn't do.


FontParts requires Python 2.7, 3.4 or later.

The package is listed in the Python Package Index (PyPI), so you can install it with pip:

pip install fontParts

If you would like to contribute to its development, you can clone the repository from Github, install the package in 'editable' mode and modify the source code in place. We recommend creating a virtual environment, using virtualenv or Python 3 venv module.

# download the source code to 'fontParts' folder
git clone
cd fontParts

# create new virtual environment called e.g. 'fontParts-venv', or anything you like
python -m virtualenv fontParts-venv

# source the `activate` shell script to enter the environment (Un\*x); to exit, just type `deactivate`
. fontParts-venv/bin/activate

# to activate the virtual environment in Windows `cmd.exe`, do

# install in 'editable' mode
pip install -e .


We are currently working towards the 1.0 release.

  • 1.0 Documentation and testing complete.
  • 1.5 Removal of Deprecated. Released 1 year after 1.0.
  • 2.0 Python 3 only. Released 1 year after 1.0.


Testing is setup so that each environment that includes fontParts can provides the objects needed to run a common set of tests. This makes testing very easy for environments that use fontParts (for example, see the fontshell script), but it means testing is different than other python packages.

Automated testing of the package is done in the fontshell environment. fontshell is fontParts for the commandline, implemented with defcon and is included as part of the fontParts package.

To run the test suite, you can do:

python Lib/fontParts/fontshell/

To test in other environments, run the test script provided by that environment.

You can also use tox to automatically run tests on different Python versions in isolated virtual environments.

pip install tox

Note that when you run tox without arguments, the tests are executed for all the environments listed in tox.ini's envlist. In our case, this includes Python 2.7 and 3.6, so for this to work the python2.7 and python3.6 executables must be available in your PATH.

You can specify an alternative environment list via the -e option, or the TOXENV environment variable:

tox -e py27-nocov
TOXENV="py36-cov,htmlcov" tox
You can’t perform that action at this time.