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.

Stavelsen ddhrya skriven med en ligatur på devanāgarī. I datormjukvara som använder Unicode representeras den av teckensekvensen द + ् + ध + ् + र + ् + य = द्ध्र्य.
Illustration av de tecken som bygger upp stavelsen msaukhmerisk skrift samt hur den slutligen renderas.
Ordet العربية al-arabiyyah ("arabiska [språket]") på arabiska. Första raden visar bokstäverna från vänster till höger och ej sammanbundna, så som de skulle kunna visas i ett datorprogram som saknar stöd för CTL. På andra raden visas de i korrekt ordning från höger till vänster och på tredje raden har bokstäverna bundits samman och fått sin korrekta form beroende på placering i ordet.

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

redigera

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

redigera

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:

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

redigera

Källor

redigera
Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia.

Externa länkar

redigera