Komplex textlayout

Komplex textlayout (förkortat CTL) eller komplex textrendering syftar på typsättning av skriftsystem i vilka formen på ett grafem beror på andra kringliggande grafem. Termen används inom internationalisering av mjukvara där varje grafem är ett datortecken.

Skriftsystem som kräver CTL kallas ibland för komplexa skriftsystem. Exempel på dessa är den arabiska skriften samt de många skriftsystemen i brāhmī-familjen såsom devanāgarī. Många skriftsystem klarar sig dock utan CTL. Det latinska alfabetet och de kinesiska tecknen (hanzi) kan enkelt typsättas genom att tecknen placeras efter varandra i raka rader eller kolumner. Även i dessa kan det dock finnas alternativa former och andra funktioner (som kursiv text) som kräver CTL.

Kännetecken hos skriftsystem som kräver CTL
De huvudsakliga kännetecknen hos skriftsystem som kräver CTL är:

 Dubbelriktad text, där tecknen kan skrivas antingen från höger till vänster eller vänster till höger.
 Kontextkänsliga former och ligaturer, där tecknens form beror på dess position och/eller kringliggande tecken. Exempel på detta är den arabiska skriften där bokstäverna har upp till fyra olika former beroende av kontext.
 Sortering, där den visuella ordningen på tecknen inte är samma som den logiska. I devanāgarī, som skrivs från vänster till höger, skrivs grafemet för "kort i" till vänster om den konsonant det följer. I कि ki, ska tecknet  ि -i visas till vänster om och sträcka sig över bokstaven क ka.

Dock behöver inte alla förekomster av dessa kännetecken betyda att CTL krävs. Det grekiska alfabetet har två kontextkänsliga varianter av bokstaven sigma: ς i slutet av ett ord och σ i övriga fall. Dessa två former lagras dock som två separata datortecken. Unicode använder kodpunkterna U+03C2 respektive U+03C3 och behandlar dem inte som ekvivalenta. Vid sortering och jämförelse bör de betraktas som ekvivalenta av mjukvaran men inte vid typsättning och därför behövs inte heller CTL för att välja rätt form. Med det latinska alfabetet kan man ibland använda kontextkänsliga varianter, om man vill efterlikna skrivstil, där bokstäver kan bindas ihop med varandra. Det är inte så vanligt i datorer och har inte stöd i Unicode utan får göras lite mer oreglerat, t.ex. som Swash.

Implementationer
De flesta mjukvaror för textrendering med stöd för CTL har information om ett flertal skriftsystem inbyggt. De kan därmed rendera dem korrekt även om typsnittet saknar information om hur tecknen ska sättas. Sådan mjukvara kommer vanligtvis i form av ett kodbibliotek. Några exempel på sådana är:

 Core Text för OS X
 Uniscribe och DirectWrite för Microsoft Windows
 HarfBuzz, ett multiplattformsbibliotek
 International Components for Unicode, ett multiplattformsbibliotek
 Pango, ett multiplattformsbibliotek som numera inkluderar HarfBuzz

Om mjukvaran saknar instruktioner för ett visst skriftsystem kommer den dock inte kunna rendera det korrekt, något som främst drabbar skriftsystem som används av olika minoriteter. Ett alternativ är då att inkludera instruktionerna i typsnitten istället. Mjukvaran måste i så fall ha stöd för att läsa och följa sådana instruktioner.

Exempel på det senare är Apple Advanced Typography (AAT) och Graphite. Båda namnen används både om instruktionsformatet och om mjukvaran som stödjer det. AAT är tillgängligt på Apples operativsystem medan Graphite finns tillgängligt för Microsoft Windows och Linux.

OpenType-formatet är främst tänkt för system som använder den förstnämnda lösningen (information om layouten i mjukvaran, inte i typsnittet) men det har ändå vissa funktioner som hjälper vid CTL, såsom kontextkänsliga ligaturer. Instruktioner för AAT och Graphit kan bäddas in i OpenType-typsnitt.

Se även
 Typografi
 Unicode
 Skriftsystem som kräver CTL:
 Arabisk och syrisk skrift
 De flesta av skriftsystemen i brāhmī-familjen
 N'Ko
 Tengwar

Källor

Externa länkar
 Examples of complex rendering – Exempel på komplexa skriftsystem från olika delar av världen (engelska)

Människa-datorinteraktion
Typografi