复杂文字编排(Complex text layout,缩写:CTL)或者复杂文字描绘(Complex text rendering)是指字位的形状或位置取决于与其他字位的关系的书写系统的排版。这个词汇用于一个字符为一个字位的软件国际化领域。
要求复杂文字编排以适当显示的书写系统称为复杂文本,例子有阿拉伯字母和婆罗米系文字的天城文或泰文。许多文本不要求复杂文字编排,例如拉丁文字和汉字可通过在一直行或直列中简单地依次显示每个字符来排版。然而这些文本有替代形式或者可选特性(如手写体)时也要求复杂文字编排以在电脑上呈现。
复杂文字编排的语言复杂度的主要特征有:
不是所有这些特征的出现要求复杂文字编排,例如希腊文中因上下文不同而改变的ς,它只是位在一个单字结尾的σ。统一码对两者分别编码,其分别为U+03C2 ς GREEK SMALL LETTER FINAL SIGMA和U+03C3 σ GREEK SMALL LETTER SIGMA,而且没有视作标准或兼容等价。但对于校对和比较用途,软件应将字符串“δῖος Ἀχιλλεύς.”视为等同于“δῖοσ Ἀχιλλεύσ.”,但出于排版用途,这些是有别的,而且不要求复杂文字编排修正。
多数兼容复杂文字编排的文字渲染软件会包含有关特定文字的信息,而且因此能正确显示它们而不需要字体文件提供怎样输出字符的指令。这样的软件通常提供于库当中,包括:
然而,这类软件不能专门描绘任何缺少指令的文本,那些会包含许多小语种文字。替代性的获取方式是封装描绘指令于字体文件中。渲染软件仍需具备读取和遵循这些指令的能力,但这相对简单。
后者的实例即是Apple Advanced Typography(英语:Apple Advanced Typography)(AAT)和Graphite。二者名称皆包含指令格式及支持的软件;AAT内置于苹果操作系统,Graphite适用于Microsoft Windows和Linux系列系统。
OpenType格式首先用于运用第一级访问的系统(渲染当中的输出知识,不是字体),但是有少量特性对复杂文字编排予以辅助,如上下文合字。AAT及Graphite指令可嵌入OpenType字体文件。