OpenType shaping models: HarfBuzz Manual

## OpenType shaping models

OpenType provides shaping models for the following scripts:

- The default shaping model handles all non-complex scripts, and may also be used as a fallback for handling unrecognized scripts.

- The Indic shaping model handles the Indic scripts Bengali, Devanagari, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Tamil, Telugu, and Sinhala.

  The Indic shaping model was revised significantly in 2005. To denote the change, a new set of script tags was assigned for Bengali, Devanagari, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Tamil, and Telugu. For the sake of clarity, the term "Indic2" is sometimes used to refer to the current, revised shaping model.

- The Arabic shaping model supports Arabic, Mongolian, N'Ko, Syriac, and several other connected or cursive scripts.

- The Thai/Lao shaping model supports the Thai and Lao scripts.

- The Khmer shaping model supports the Khmer script.

- The Myanmar shaping model supports the Myanmar (or Burmese) script.

- The Tibetan shaping model supports the Tibetan script.

- The Hangul shaping model supports the Hangul script.

- The Hebrew shaping model supports the Hebrew script.

- The Universal Shaping Engine (USE) shaping model supports complex scripts not covered by one of the above, script-specific shaping models, including Javanese, Balinese, Buginese, Batak, Chakma, Lepcha, Modi, Phags-pa, Tagalog, Siddham, Sundanese, Tai Le, Tai Tham, Tai Viet, and many others.

- Text runs that do not fall under one of the above shaping models may still require processing by a shaping engine. Of particular note is Emoji shaping, which may involve variation-selector sequences and glyph substitution. Emoji shaping is handled by the default shaping model.