

複雑なテキストレイアウト(CTL)または複雑なテキストレンダリングとは、文字の形状や位置が他の文字との関係によって決まる書記体系の組版のことです。この用語は、各文字が文字であるソフトウェアの国際化の分野で使用されます。
正しく表示するために CTL を必要とする文字体系は、複雑な文字体系と呼ばれることがあります。例としては、アラビア文字や、デーヴァナーガリー文字、クメール文字、タイ文字などのブラーフミー系文字が挙げられます。多くの文字体系は CTL を必要としません。例えば、ラテン文字や中国語の文字は、各文字を直線状に一列または一行ずつ表示するだけで組版できます。しかし、これらの文字体系にも、代替形式やオプション機能(筆記体など)があり、コンピュータ上で作成するには CTL が必要です。
CTLの複雑性の主な特徴は以下のとおりです。
これらの特性のすべての出現に CTL が必要なわけではありません。たとえば、ギリシャ文字では、文字シグマは文脈に応じて形が変わります。単語の末尾では ς と表示され、それ以外の場所では σ と表示されます。ただし、これら 2 つの形式は通常、異なる文字として格納されます。たとえば、UnicodeにはU+03C2 ς GREEK SMALL LETTER FINAL SIGMAとU+03C3 σ GREEK SMALL LETTER SIGMA の両方があり、これらを同等として扱いません。照合および比較の目的で、ソフトウェアは文字列 "δῖος Ἀχιλλεύς" を "δῖοσ Ἀχιλλεύσ" [ 1 ]と同等とみなす必要がありますが、組版の目的ではこれらは別個のものであり、正しい形式を選択するために CTL は必要ありません。
CTLに対応したほとんどのテキストレンダリングソフトウェアには、特定のスクリプトに関する情報が含まれているため、フォントファイルから文字のレイアウト方法に関する指示を受けなくても、正しくレンダリングできます。このようなソフトウェアは通常ライブラリとして提供されます。例としては、以下のようなものがあります。
しかし、このようなソフトウェアは、指示が欠落している文字体系(多くの少数言語を含む)を適切にレンダリングすることができません。代替案としては、レンダリング指示をフォントファイル自体に含める方法があります。レンダリングソフトウェアは依然として指示を読み取って実行できる必要がありますが、これは比較的簡単です。
後者のアプローチの例としては、Apple Advanced Typography (AAT) とGraphiteが挙げられます。これらの名称はどちらも、命令形式とそれをサポートするソフトウェアの両方を包含しています。AAT はApple のオペレーティングシステムに搭載されており、Graphite はMicrosoft WindowsおよびLinuxベースのシステムで利用可能です。
OpenTypeフォーマットは、主に最初の方式(レイアウト情報をフォントではなくレンダラーに持つ方式)を採用するシステム向けに設計されていますが、コンテキストリガチャーなど、CTLをサポートする機能もいくつか備えています。AATおよびGraphiteの命令は、OpenTypeフォントファイルに埋め込むことができます。
たとえば、単語の内容に関係する操作については、2つのシグマコードを単純に等しくする方が簡単です。