복잡한 텍스트 레이아웃

복잡한 텍스트 레이아웃(Complex text layout, CTL) 또는 복잡한 텍스트 렌더링(complex text rendering)은 자소의 모양이나 위치가 다른 자소와의 관계에 따라 달라지는 문자 체계의 조판이다. 이 용어는 소프트웨어 국제화 분야에서 사용되며, 각 자소는 문자이다.

올바른 표시를 위해 CTL을 요구하는 스크립트는 복잡한 스크립트로 알려질 수 있다. 예로는 아랍 문자와 데바나가리 문자, 크메르 문자 또는 타이 문자와 같은 브라흐미 계열의 스크립트가 있다. 많은 스크립트는 CTL을 요구하지 않는다. 예를 들어, 라틴 음소문자 또는 한자는 각 문자를 직선 행이나 열에 차례로 표시함으로써 조판될 수 있다. 그러나 이러한 스크립트조차도 컴퓨터에서 생성하기 위해 CTL을 요구하는 대체 형식이나 선택적 기능(필기체 등)을 가지고 있다.

CTL을 요구하는 특성
CTL 복잡성의 주요 특성은 다음과 같다:
 양방향 텍스트, 문자가 오른쪽에서 왼쪽 또는 왼쪽에서 오른쪽 방향으로 쓰일 수 있다.
 문맥 의존적 형태 형성 및 합자, 문자가 위치 및 주변 문자에 따라 모양이 변할 수 있다. 예를 들어, 아랍계 문자의 문자는 문맥에 따라 최대 네 가지 다른 모양을 가질 수 있다.
 순서, 문자의 표시 순서가 논리적 순서와 동일하지 않다. 예를 들어, 왼쪽에서 오른쪽으로 쓰는 데바나가리 문자에서 "짧은 i"에 대한 자소는 모음이 뒤따르는 자음의 왼쪽("앞")에 나타난다:  ki에서  -i는 왼쪽에 렌더링되어야 하며, 그 활은 오른쪽에 있는  k- 위까지 닿아야 한다.

이러한 모든 특성이 CTL을 요구하는 것은 아니다. 예를 들어, 그리스 문자는 단어 끝에 ς로 나타나고 다른 곳에서는 σ로 나타나는 문자 Σ의 문맥 의존적 형태 형성을 가지고 있다. 그러나 이 두 가지 형태는 일반적으로 다른 문자로 저장된다. 예를 들어, 유니코드는 와 를 모두 가지고 있으며, 이들을 동등하게 취급하지 않는다. 정렬 및 비교 목적으로 소프트웨어는 문자열 "δῖος Ἀχιλλεύς"를 "δῖοσ Ἀχιλλεύσ"와 동일하게 간주해야 하지만, 조판 목적으로는 구별되며 올바른 형태를 선택하기 위해 CTL이 필요하지 않다.

구현
CTL을 지원하는 대부분의 텍스트 렌더링 소프트웨어는 특정 스크립트에 대한 정보를 포함하므로, 글꼴 파일이 문자를 배치하는 방법에 대한 지침을 제공할 필요 없이 올바르게 렌더링할 수 있다. 이러한 소프트웨어는 일반적으로 라이브러리로 제공된다. 예시는 다음과 같다:
 macOS용 Core Text
 마이크로소프트 윈도우용 유니스크라이브 (Universal Shaping Engine 포함) 및 다이렉트라이트
 크로스 플랫폼 라이브러리인 HarfBuzz
 오늘날 HarfBuzz를 포함하는 크로스 플랫폼 라이브러리인 Pango

그러나 이러한 소프트웨어는 지침이 부족한 스크립트를 올바르게 렌더링할 수 없으며, 여기에는 많은 소수 스크립트가 포함될 수 있다. 다른 접근 방식은 렌더링 지침을 글꼴 파일 자체에 포함하는 것이다. 렌더링 소프트웨어는 여전히 지침을 읽고 따를 수 있어야 하지만, 이는 비교적 간단하다.

이 후자의 접근 방식의 예로는 Apple Advanced Typography (AAT) 및 Graphite가 있다. 이 두 이름은 지침 형식과 이를 지원하는 소프트웨어를 모두 포함한다. AAT는 애플 운영체제에 포함되어 있으며, Graphite는 마이크로소프트 윈도우 및 리눅스 기반 시스템에서 사용할 수 있다.

오픈타입 형식은 주로 첫 번째 접근 방식(렌더러에 레이아웃 지식이 있고 글꼴에는 없는)을 사용하는 시스템을 위한 것이지만, 문맥적 합자와 같이 CTL에 도움이 되는 몇 가지 기능을 가지고 있다. AAT 및 Graphite 지침은 오픈타입 글꼴 파일에 포함될 수 있다.

 같이 보기 
 타이포그래피
 유니코드
 복잡한 텍스트 레이아웃이 필요한 문자 체계:
 아랍 문자
 브라흐미 문자 계열의 대부분
 응코 문자
 텡과르 (발음 구분 기호 및 숫자)

 각주 

 외부 링크 
 복잡한 렌더링의 예 — SIL 국제의 복잡한 전 세계 문자 체계 예시
 복잡한 텍스트 레이아웃 — 오픈 그룹의 데스크톱 기술
 모질라에서 인도 스크립트 지원 — 다른 CTL 스크립트도 포함
 Project SILA — Graphite 및 모질라 통합 프로젝트
 Solaris의 CTL 아키텍처 — Solaris 국제화 백서
 복잡한 스크립트 — 마이크로소프트 글로벌 개발 및 컴퓨팅 포털
 테피탁의 홈페이지 — 태국어 처리 정보
 Freedesktop.org의 HarfBuzz 페이지
 D-Type 유니코드 텍스트 모듈 — 복잡한 텍스트를 위한 휴대용 소프트웨어 라이브러리
 BidiRenderer — FriBidi, FreeType, HarfBuzz를 사용하여 양방향 단락에서 복잡한 텍스트의 형태 형성 및 레이아웃을 보여주는 응용 프로그램
 Tehreer-Android — 양방향 알고리즘, 오픈 타입 형태 형성, 텍스트 조판 및 텍스트 렌더링과 같은 텍스트 관련 기술을 완벽하게 제어할 수 있는 라이브러리
 Tehreer-Cocoa — iOS용 독립형 글꼴/텍스트 엔진

분류:조판
분류:자연어와 컴퓨팅