SIL Font Development Guide

How to build, modify, and contribute to SIL International font projects

View project onGitHub

This website is no longer being updated. Revised and improved information can be found at
Writing Systems Technical Resources

4. Workflow Overview

This is a general overview of the workflow.

Initial setup (one-time)

  • Install and configure Docker and anvil
  • Set up a font projects folder and clone projects of interest

These steps are covered in Setting Up Tools.

Daily routines

  • Start up Docker and the container (anvil up)
  • Navigate to the project folder
  • Pull any changes others have made to the project
  • Change things! Some ways to do that:
    • Manually edit files using a text editor
    • Run scripts to make changes
    • Run the preglyphs script to create a Glyphs file that can be edited
    • Open the UFOs directly in other apps (Robofont, FontForge, FontLab)
  • Save and normalize your changes
    • Run preflight scripts (including preflightg, preflightff, preflightfl)
  • Use Smith commands to:
    • Clean and configure the build folder
    • Build the fonts
    • Prepare test files
  • Review the results (in /results)
  • Commit your changes locally then push them to the main project
    • You may need to issue a pull request if it’s not your project
  • Exit the container and shut it down (exit and anvil down)

See Modifying Font Sources and Building Font Projects for details.

Preparing a font release

  • Modify the project metadata to reflect the release, including font version number
    • In the UFOs (fontinfo.plist)
    • In the FONTLOG.txt
  • Adjust any other documentation
  • Tag the last commit to reflect the release version
  • Build the fonts using smith zip, smith tarball, or smith release
  • Make a release on Github, uploading the release package from results/releases/

Contributing back to the project

  • Contact the project maintainer to indicate your interest in contributing back to the project
    • You may need to agree to a CLA (Contributor License Agreement)
  • Issue a pull request containing your changes
  • Adjust your submission as needed until it is accepted!

Read Contributing Changes for more information.