

複合テキストレイアウト( CTL ) または複合テキストレンダリングは、グラフィムの形状または配置が他のグラフィムとの関係に依存する書記体系の組版です。この用語は、各グラフィムが文字であるソフトウェア国際化の分野で使用されます。
正しく表示するために CTL を必要とするスクリプトは、複雑なスクリプトと呼ばれることがあります。例としては、アラビア文字や、デーヴァナーガリー文字、クメール文字、タイ文字などのブラーフミー文字系のスクリプトがあります。多くのスクリプトでは CTL は必要ありません。たとえば、ラテン アルファベットや中国語の文字は、各文字をまっすぐな行または列に次々に表示するだけでタイプセットできます。ただし、これらのスクリプトでも、コンピューターで生成するために CTL を必要とする代替形式またはオプション機能 (筆記体など) があります。
CTLを必要とする特性
CTL の複雑さの主な特徴は次のとおりです。
- 双方向テキスト。文字は右から左、または左から右のどちらの方向からでも記述できます。
- コンテキストに応じた形状と合字。文字の位置や周囲の文字に応じて、文字の形状が変化することがあります。たとえば、アラビア文字の文字は、コンテキストに応じて最大 4 つの異なる形状を持つことができます。
- 順序付け。文字の表示順序は論理的な順序と同じではありません。たとえば、左から右に書かれるデーヴァナーガリー文字では、「短い i」の書記素は、それに続く子音の左側(「前」)に表示されます。कि kiでは、ि -i は左側に表示され、その弓形は右側のक k-の上まで届きます。
これらの特性が常に出現する場合に CTL が必要なわけではありません。たとえば、ギリシャ語のアルファベットでは、シグマという文字は文脈に応じて形が変わります。この文字は単語の末尾では ς として、それ以外の場所では σ として現れます。ただし、これら 2 つの形式は通常、異なる文字として格納されます。たとえば、Unicode にはU+03C2 ς GREEK SMALL LETTER FINAL SIGMAとU+03C3 σ GREEK SMALL LETTER SIGMAの両方があり、これらを同等の文字として扱いません。照合および比較の目的では、ソフトウェアは文字列 "δῖος Ἀχιλλεύς" を "δῖοσ Ἀχιλλεύσ" と同等と見なす必要がありますが、[1]組版の目的ではこれらは別個のものであり、正しい形式を選択するために CTL は必要ありません。
実装
CTL 対応のテキスト レンダリング ソフトウェアのほとんどには、特定のスクリプトに関する情報が含まれているため、フォント ファイルに文字のレイアウト方法の指示を与えなくても、スクリプトを正しくレンダリングできます。このようなソフトウェアは通常、ライブラリで提供されます。例を次に示します。
- macOS用コアテキスト
- Uniscribe (ユニバーサル シェーピング エンジン搭載) およびMicrosoft Windows用DirectWrite
- クロスプラットフォームライブラリHarfBuzz
- Pango、クロスプラットフォームライブラリ。現在はHarfBuzzを組み込んでいる。
しかし、このようなソフトウェアは、指示のないスクリプトを適切にレンダリングできません。これには、少数派のスクリプトが多数含まれる可能性があります。代替アプローチは、レンダリング指示をフォント ファイル自体に含めることです。レンダリング ソフトウェアは、依然として指示を読み取って従う機能が必要ですが、これは比較的簡単です。
後者のアプローチの例としては、Apple Advanced Typography (AAT) やGraphiteなどがあります。これらの名前はどちらも、命令フォーマットとそれをサポートするソフトウェアの両方を包含しています。AAT はApple の オペレーティング システムに含まれており、Graphite はMicrosoft WindowsおよびLinuxベースのシステムで使用できます。
OpenType形式は、主に最初のアプローチ (フォントではなくレンダラーのレイアウト知識) を使用するシステムを対象としていますが、コンテキスト合字など、CTL を支援する機能もいくつかあります。AAT および Graphite 命令は、OpenType フォント ファイルに埋め込むことができます。
参照
参考文献
- ^ 「FAQ - ギリシャ語と文字」。Unicode コンソーシアム。2012 年 12 月 3 日。2013 年 9 月 13 日閲覧。
たとえば、単語の内容に関係する操作では、2 つのシグマ コードを単純に同一視する方が簡単です。
外部リンク
- 複雑な表現の例 — SIL インターナショナルによる世界中の複雑な表記システムの例
- 複雑なテキストレイアウト — The Open Groupのデスクトップ テクノロジ
- Mozilla でインド系文字をサポート — その他の CTL 文字もサポート
- プロジェクト SILA — GraphiteとMozilla の統合プロジェクト
- Solaris の CTL アーキテクチャ — Solaris グローバリゼーション ホワイトペーパー
- 複雑なスクリプト — Microsoft グローバル開発およびコンピューティング ポータル
- Theppitak のホームページ — タイ語処理に関する情報
- Freedesktop.orgの HarfBuzz のページ
- D-Type Unicode テキスト モジュール — 複雑なテキスト用のポータブル ソフトウェア ライブラリ
- BidiRenderer — FriBidi、FreeType、HarfBuzz を使用して双方向段落内の複雑なテキストの形状とレイアウトを示すアプリケーション
- Tehreer-Android — 双方向アルゴリズム、オープンタイプシェーピング、テキストタイプセッティング、テキストレンダリングなどのテキスト関連技術を完全に制御できるライブラリ
- Tehreer-Cocoa — iOS 用のスタンドアロン フォント/テキスト エンジン
