複雜文字編排

複雜文字編排（，縮寫：CTL）或者複雜文字描繪（）是指字位的形狀或位置取決於與其他字位的關係的書寫系統的排版。這個词彙用於一個字符為一個字位的軟體國際化領域。

要求複雜文字編排以適當顯示的書寫系統稱為複雜文本，例子有阿拉伯字母和婆羅米系文字的天城文或泰文。許多文本不要求複雜文字編排，例如拉丁文字和漢字可通過在一直行或直列中簡單地依次顯示每個字元來排版。然而這些文本有替代形式或者可選特性（如手寫體）時也要求複雜文字編排以在電腦上呈現。

 需要複雜文字編排的特徵 
複雜文字編排的語言複雜度的主要特徵有：
 雙向文稿，字符有可能由右向左或由左向右書寫。
 外形因上下文而變的文字。如，一個阿拉伯文字的字符根據上下文可以有四種樣式。
 顯示字符的順序和其邏輯順向不一樣。如由左向右書寫的天城文中，用來表示“短i”的音素是放在前面子音的左邊。在 ki中，-i的圓弧會延長到 k-的上方。

不是所有這些特徵的出現要求複雜文字編排，例如希臘文中因上下文不同而改變的，它只是位在一個單字結尾的。統一碼對兩者分別編碼，其分別為和，而且沒有視作標準或相容等價。但對於校對和比較用途，軟體應將字串“”視為等同於“”，但出於排版用途，這些是有別的，而且不要求複雜文字編排修正。

 實作 

多數相容複雜文字編排的文字渲染軟體會包含有關特定文字的資訊，而且因此能正確顯示它們而不需要字型檔提供怎樣輸出字元的指令。這樣的軟體通常提供於函式庫當中，包括：
 OS X上的
 Microsoft Windows上的Uniscribe和DirectWrite
 HarfBuzz，跨平臺函式庫
 Pango，含HarfBuzz的跨平臺函式庫

然而，這類軟體不能專門描繪任何缺少指令的文本，那些會包含許多小語種文字。替代性的獲取方式是封裝描繪指令於字型檔中。渲染軟體仍需具備讀取和遵循這些指令的能力，但這相對簡單。

後者的實例即是（AAT）和Graphite。二者名稱皆包含指令格式及支援的軟體；AAT内置於蘋果作業系統，Graphite適用於Microsoft Windows和Linux系列系統。

OpenType格式首先用於運用第一級訪問的系統（渲染當中的輸出知識，不是字型），但是有少量特性對複雜文字編排予以輔助，如上下文合字。AAT及Graphite指令可嵌入OpenType字型檔。

註記

 參見 
 字體排印學
 統一碼
 要求複雜文字編排的書寫系統
 阿拉伯文字（技術上的輔音音素文字）
 大部分的婆羅米系文字例如天城文或泰文。
 古諺文

 外部連結 
 Examples of complex rendering —美國國際語言暑期學院的世界各地書寫系統的示例
 複雜文字編排 — The Open Group's Desktop Technologies
 在Mozilla中支援印度語系文字—亦支援其它複雜文字編排
 Project SILA—Graphite與Mozilla整合專案
 Solaris中複雜文字編排的架構 — Solaris Globalization Whitepapers
 複雜文本—微軟全球開發及計算機處理專題
 Theppitak's Homepage —關於泰語處理的資訊
 Freedesktop.org的HarfBuzz
 D-Type Unicode Text Module ——用於複雜文本的便携軟體庫
 BidiRenderer ——使用FriBidi、FreeType和HarfBuzz演示雙向文本段落的複雜文字塑形及編排的應用程式

Category:排版