Skip to content

Shaping and Rendering

Shaping and rendering refers to the process of choosing and ordering glyphs to represent the characters in the text stream and positioning them properly according to the rules and conventions of the script. Shaping is mainly focused on converting character sequences to glyph sequences, and is highly specific to an individual script or script family. Rendering is more concerned with choosing the proper form and position of glyphs. The boundary between the two is not well-defined, and some systems and tools address both processes.

Three primary systems provide complex script shaping support for operating systems and applications:

These shapers do not always agree on how text should be shaped, which can lead to platform and application differences in how text is interpreted and shaped.

The following technologies provide rendering support, although some also can do complex shaping. These smart-font systems also define font table formats:

  • OpenType is the industry standard for complex text rendering. It is supported on all platforms and by all font design and development toools.
  • Graphite was developed by SIL as a more powerful alternative to the early versions of OpenType and provides both shaping and rendering. OpenType now meets most needs, so Graphite is only needed for highly complex scripts such as Nastaliq. It will be retired as soon as OpenType can evolve to accommodate all needs.
  • Apple Advanced Typography (AAT) was the predecessor to other smart-font systems and remains supported in Harfbuzz and by Apple frameworks, although Apple also fully supports OpenType.

For a lengthy and detailed description of the current status of shaping and rendering systems see Behdad Esfabod’s State of Text Rendering 2024.