gecko-dev/gfx/graphite2
Tom Ritter fc2f75822a Bug 1407601 Revert to the previous behavior in MozGrMalloc.h for Linux, and add extern C to correct Solaris build break r=baku
MozReview-Commit-ID: GP6N6pcqQp

--HG--
extra : rebase_source : a51cbdffcb05631876d458f7a19b295fc0bb4642
2017-10-11 10:16:32 -05:00
..
include/graphite2 Bug 1349310 - Update graphite2 to release 1.3.10. r=milan 2017-05-08 12:08:24 +01:00
src Bug 1407601 Revert to the previous behavior in MozGrMalloc.h for Linux, and add extern C to correct Solaris build break r=baku 2017-10-11 10:16:32 -05:00
ChangeLog Bug 1335223 - Update Graphite2 to version 1.3.9. r=jfkthame 2017-01-31 12:36:56 -05:00
COPYING Bug 1240007 - Update graphite2 library to release 1.3.5. r=jdaggett 2016-01-20 08:50:32 +00:00
LICENSE Bug 1220591 - Update graphite2 to release 1.3.4. r=jdaggett 2015-11-04 07:07:15 +00:00
moz-gr-update.sh Bug 1255158 - Update graphite2 library to release 1.3.7. r=jdaggett 2016-03-15 07:53:04 +00:00
README.md Bug 1220591 - Update graphite2 to release 1.3.4. r=jdaggett 2015-11-04 07:07:15 +00:00
README.mozilla Bug 1349310 - Update graphite2 to release 1.3.10. r=milan 2017-05-08 12:08:24 +01:00

Graphite engine

What is Graphite?

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.

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.

Examples of complex script behaviors Graphite can handle include:

  • contextual shaping
  • ligatures
  • reordering
  • split glyphs
  • bidirectionality
  • stacking diacritics
  • complex positioning
  • shape aware kerning
  • automatic diacritic collision avoidance

See examples of scripts with complex rendering.

Graphite system overview

The Graphite system consists of:

  • A rule-based programming language Graphite Description Language (GDL) that can be used to describe the behavior of a writing system
  • A compiler for that language
  • A rendering engine that can serve as the layout component of a text-processing application

Graphite renders TrueType fonts that have been extended by means of compiling a GDL program.

Further technical information is available on the Graphite technical overview page.