Bug 1857841 - pt 3. Add a new page kind named "fresh" r=glandium
[gecko.git] / gfx / graphite2 / README.md
blob277c32777be1c60203671eabd430a5f953e1de07
1 # Graphite engine
3 ## Project CI status
4 | OS      | Intel 64 bit | Intel 32 bit | Arm 32 bit |
5 |---------|:------------:|:------------:|:----------:|
6 | Linux   | [![Build Status](http://build.palaso.org/app/rest/builds/buildType:bt124/statusIcon)](http://build.palaso.org/viewType.html?buildTypeId=bt124&guest=1) | [![Build Status](http://build.palaso.org/app/rest/builds/buildType:bt123/statusIcon)](http://build.palaso.org/viewType.html?buildTypeId=bt123&guest=1) | [![Build Status](http://build.palaso.org/app/rest/builds/buildType:Graphite_Linux32bitArm/statusIcon)](http://build.palaso.org/viewType.html?buildTypeId=Graphite_Linux32bitArm&guest=1) |
7 | Windows | [![Build Status](http://build.palaso.org/app/rest/builds/buildType:Graphite_Windows64bit/statusIcon)](http://build.palaso.org/viewType.html?buildTypeId=Graphite_Windows64bit&guest=1) | [![Build Status](http://build.palaso.org/app/rest/builds/buildType:bt91/statusIcon)](http://build.palaso.org/viewType.html?buildTypeId=bt91&guest=1)| |
9 ## What is Graphite?
11 Graphite is a system that can be used to create “smart fonts” capable of displaying writing systems with various complex behaviors. A smart font contains not only letter shapes but also additional instructions indicating how to combine and position the letters in complex ways.
13 Graphite was primarily developed to provide the flexibility needed for minority languages which often need to be written according to slightly different rules than well-known languages that use the same script.
15 Examples of complex script behaviors Graphite can handle include:
17 * contextual shaping
18 * ligatures
19 * reordering
20 * split glyphs
21 * bidirectionality
22 * stacking diacritics
23 * complex positioning
24 * shape aware kerning
25 * automatic diacritic collision avoidance
27 See [examples of scripts with complex rendering](http://scripts.sil.org/CmplxRndExamples).
29 ## Graphite system overview
30 The Graphite system consists of:
32 * A rule-based programming language [Graphite Description Language](http://scripts.sil.org/cms/scripts/page.php?site_id=projects&item_id=graphite_devFont#gdl) (GDL) that can be used to describe the behavior of a writing system
33 * A compiler for that language
34 * A rendering engine that can serve as the layout component of a text-processing application
36 Graphite renders TrueType fonts that have been extended by means of compiling a GDL program.
38 Further technical information is available on the [Graphite technical overview](http://scripts.sil.org/cms/scripts/page.php?site_id=projects&item_id=graphite_techAbout) page.