Complex scripts

In text-shaping terminology, scripts are generally classified as either complex or non-complex.

Complex scripts are those for which transforming the input sequence into the final layout requires some combination of operations—such as context-dependent substitutions, context-dependent mark positioning, glyph-to-glyph joining, glyph reordering, or glyph stacking.

In some complex scripts, the shaping rules require that a text run be divided into syllables before the operations can be applied. Other complex scripts may apply shaping operations over entire words or over the entire text run, with no subdivision required.

Non-complex scripts, by definition, do not require these operations. However, correctly shaping a text run in a non-complex script may still involve Unicode normalization, ligature substitutions, mark positioning, kerning, and applying other font features. The key difference is that a text run in a non-complex script can be processed sequentially and in the same order as the input sequence of Unicode codepoints, without requiring an analysis stage.