SIL Writing Systems Technology


A free and open rendering engine for complex scripts

Graphite Tutorial

The following exercises are provided to give you an introduction to programming Graphite fonts. It includes an explanation of the fundamentals of the system and basic experience in using its most important smart rendering capabilities.

The following package includes the fonts to be used for the exercises, solution files, and a PDF of the tutorial.

Graphite Tutorial Package
Sharon Correll, 2012-11-19
Download "", ZIP archive, 1MB [1167 downloads]

This tutorial is not intended to be a comprehensive overview of the Graphite system, nor to provide an exhaustive discussion of all the features and syntax of the GDL programming language. For a complete discussion of GDL, see the “Graphite Description Language” document.

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

In order to use these tutorials, you will be using the Graide tool (Graide stands for GRAphite Interactive Development Environment). Graide allows you to run the Graphite compiler to create a Graphite enabled font, and test the results of the font using simple test data. It also includes debugging tools to analyze the behavior of your font.

Download Graide

If you choose not to try every exercise, you should put priority on the exercises that include a section called “Exploring Graide…”.

When experimenting with Graide, this tutorial assumes that the GDL program you are working with looks very similar to the provided solution. If your program is quite different, it may be helpful to replace your program with the provided solution for the purposes of exploring the features of Graide.

Each unit of the tutorial consists of a short discussion section followed by one or more exercises for you to try.

Start: Running, initializing, and debugging with Graide

Return to Graphite font development


Unit 1: Running, initializing, and debugging with Graide

Unit 2: A very simple GDL program

Unit 3: The glyph table

Unit 4: Corresponding class items

Unit 5: Deletion and insertion

Unit 6: Context

Unit 7: Glyph attributes

Unit 8: Slot attributes


Unit 9: Multiple passes per table

Unit 10: Positioning by shifting

Unit 11: Glyph metrics

Unit 12: Positioning by attachment

Unit 13: Features

Unit 14: Ligatures (not available in Graide)

Unit 15: Bidirectionality

Unit 16: Reordering

Unit 17: Optional items

Unit 18: Corresponding classes revisited

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