SIL Writing Systems Technology


A free and open rendering engine for complex scripts

Font development


Adding Graphite support to a font involves:

* writing a program using Graphite Description Language (GDL) describing the behavior of the font

* compiling the program along with the font to create the Graphite-enabled version of the font

* testing and debugging your smart font using a Graphite-enabled application


To add Graphite support to a font, the font's license must grant you permission to modify it.

1. The GDL program

GDL is a programming language that describes the "smart" behavior of the font. It is written to correspond to a specific font, and includes definitions of the glyphs in the font and rules describing their behavior.

GDL Documentation
GDL Documentation
Sharon Correll, 2020-05-21
Download "GDLdocumentation.pdf", Acrobat PDF document, 725KB [8635 downloads]

The following tools can be used to assist in the development of a GDL program.

  • - a Perl utility that automatically generates some of the necessary GDL code from a font and an XML file of attachment point data. This is included in the SIL FontUtils package.
  • - a Python utility that outputs a file of attachment points from FontLab, which can then be used by make_gdl to define attachment points for Graphite. This file can be downloaded from the  SIL Font Utility GitHub repository.

2. Compiling the program

The Graphite compiler takes as input the original font and the GDL program, and outputs a new version of the font with the GDL code converted into special-purpose TrueType tables. These tables are used by the Graphite engine to perform smart rendering.

The Windows executable can be downloaded here.

For Linux systems, the source for the grcompiler program is available from  here. If you are using Ubuntu Linux 12.04, binary packages are available for  64-bit and  32-bit systems.

3. Testing the font

You can test your font using any Graphite-enabled application. In order to do so, the most recently compiled version of the font must be properly installed according to the requirements of the operating system. You must also have a way to provide the specific Unicode characters--a keyboard, existing datafile, etc.

If you discover errors in the behavior of the Graphite font, modify the GDL program, recompile, reinstall the output font, and retest.


Graide is a Graphite font creation tool that is currently under development. Version 1.0 is available.


The following is a tutorial to help you learn to program using GDL:

GDL Tutorial

This version includes instructions for using Graide (GRAphite Integrated Development Environment):

GDL Tutorial with Graide

GDL code snippets

The following small examples can be a useful reference as you develop your Graphite font.

Code snippets

Copyright © 2012 SIL International® and released under the  Creative Commons Attribution-ShareAlike 3.0 license (CC-BY-SA) unless noted otherwise.