언어 및 문자
TouchGFX는 다양한 언어와 문자를 지원하고 문자의 방향과 문맥의 형성과 같은 텍스트 레이아웃 메커니즘을 이해함으로써 이를 수행합니다.
언어
지원되는 언어는 유니코드 다국어 기본 평면(Basic Multilingual Plane)에 속하는 언어들이며, 우향(Left-to-Right) 또는 좌향(Right-to-Left) 작성 시스템만 지원되는 한계가 있습니다. 이 말은 아랍어, 중국어, 영어 등의 언어가 지원되며, 몇 가지 제약이 따를 수 있음을 의미합니다. 예를 들어 우르드어, 미얀마어는 현재 지원되지 않습니다.
문자
문자 인코딩은 유니코드 표준을 기반으로 합니다. 16비트 유니코드들이 지원됩니다. 예를 들어, 0x0000 에서 0xFFFF 까지의 유니코드들이 지원됩니다. 일부 언어는 특수 문자에 한해 0xE000~0xE3FF에서 특정 폰트(Devanagari 등)로 PUA(Private Use Area)를 사용할 수도 있습니다.
작성 방향
TouchGFX는 우향(LTR) 또는 좌향(RTL) 작성 시스템을 지원합니다. 하향 작성 시스템은 기본적으로 지원하지 않습니다.
RTL이라고 해서 LTR에 대한 역방향으로 작성되는 것이 아니라, 단어가 오른쪽에서 시작해 왼쪽으로 작성한다는 것을 의미합니다. 아랍어와 히브리어는 RTL이 올바른 설정입니다. 예를 들어 "TouchGFX"는 "XFGhcuoT"로 작성되지 않지만, RTL/LTR 설정을 통해 단어(또는 어구)의 방향을 제어할 수 있습니다.
TouchGFX 애플리케이션 내에서 LTR과 RTL 처리는 두 가지가 어느 정도 혼합을 인정합니다. 이를 양방향 스크립트 지원이라고 합니다. TouchGFX에서는 공식적인 양방향 작성 규칙이 하위 집합까지 지원됩니다. 이 말은, 예를 들어 "10:45", "3.14159", "STMicroelectronics TouchGFX" 등이 RTL 텍스트에서도 완전히 LTR로 인식되어 작성된다는 것을 의미합니다.
따라서 RTL 텍스트의 경우 텍스트의 일부는 LTR로 작성되어야 합니다. 이 텍스트를 찾아 수집되어야합니다. RTL 문자가 아닌 모든 문자들이 수집됩니다. 콜론(:), 점(.), 컴마(,), 공백( ) 과 같은 문자도 두개의 연속되는 LTR 부분을 "묶음" 합니다. 이것은 "10:45"가 단일 LTR 개체로 처리되도록 하는 반면 "Mark:"(콜론으로 끝나는 경우)는 아랍어와 히브리어를 사용하는 국가에서 예상하는 것처럼 왼쪽에서 콜론을 가져옵니다. 즉 "<some Arabic message> :Mark"는 RTL에서 콜론이 왼쪽에 있는 곳에 표시됩니다.
라틴 문자에서 사용되는 숫자(0~9)와 아랍 문자에서 사용되는 숫자는 모두 LTR 문자로 처리되어 디스플레이에 정상적으로 표시됩니다.
또한 텍스트에 LRT 개체와 RTL 개체가 뒤섞여 있는 경우에는 작성 방향이 매우 중요합니다. 텍스트에 포함된 문자만 봐서는 텍스트가 RTL인지, LTR인지 알 수 없습니다. 가령 텍스트에 포함된 첫 번째 단어가 hebrew(RTL)이고, 이어지는 단어가 english(LTR)라면 디스플레이 출력은 텍스트의 작성 방향에 따라 결정됩니다. 텍스트가 RTL로 설정되어 있으면 전체 텍스트가 RTL이기 때문에 "English werbeH"로 출력됩니다. 따라서 첫 번째 단어를 맨 오른쪽에 작성해야 합니다. 하지만 텍스트가 LTR로 설정되어 있으면 맨 왼쪽부터 첫 번째 단어가 시작되기 때문에 "werbeH English"로 출력됩니다. LTR 대비 RTL 설정은 자동으로 결정되지 않습니다. 영어 텍스트에 히브리어 단어가 포함될 수도 있고, 반대로 히브리어 텍스트에 영어 단어가 포함될 수도 있기 때문입니다.
RTL 텍스트와 관련하여 또 따른 중요한 문제는 괄호 문자의 자동 전환입니다. 여기에서 괄호란 (, ), {, }, [, ], <, >를 말합니다. 이러한 괄호들은 반대쪽 문자로 자동 전환되어 해당 텍스트가 정상적으로 보이도록 합니다. 하지만 라틴 숫자가 아랍 숫자로 자동 전환되지는 않습니다. 두 숫자를 전환하려면 텍스트를 표시하기 전에 사용자가 직접 전환해야 합니다.
문맥적 모양 적용
일부 스크립트는 글자의 문맥에 따라 한가지 이상의 문자/글리프를 다른 모양으로 선택합니다. 한 예로 아랍어 문자는 단어 속 문자의 위치에 따라 여러 가지 문맥적 모양을 가지고 있습니다. TouchGFX는 문자 결합 규칙을 간소화하여 구현함으로써 이러한 언어의 문맥적 모양 적용을 지원합니다. 또한 일부 발음 구별 기호는 맞춤형 로직을 사용해 세로 방향 위치를 결정하여 삽입됩니다. 특히 아랍어, 태국어, 힌디어에서 그렇습니다.
지원되는 언어 목록
지원되는 모든 언어의 전체 목록을 제공하는 것은 어렵습니다. 일반적으로, 특별한 순서 재배치 또는 위치 결정 규칙이 없는 표준 글리프가 지원됩니다. 특별한 규칙이 있는 언어 중에서 힌디어나 아랍어와 같은 일부 언어가 TouchGFX에 포함되어 있습니다.
우향 언어
라틴 문자를 사용하는 단순 언어
일반적으로, 특별한 순서 재배치나 위치 결정이 필요 없는 문자와 글리프를 사용하는 단순 언어가 지원됩니다. 이러한 언어를 예로 들면 다음과 같습니다.
- 보스니아어, 불가리아어, 크로아티아어, 체코어, 덴마크어, 네덜란드어, 영어, 에스토니아어, 핀란드어, 프랑스어, 독일어, 헝가리어, 이탈리아어, 라트비아어, 리투아니아어, 노르웨이어, 폴란드어, 포르투갈어, 루마니아어, 세르비아어, 슬로베니아어, 슬로바키아어, 스페인어, 스웨덴어, 터키어, 우크라이나어
특수 문자 집합을 사용하는 단순 언어
일부 언어는 여전히 단순한 위치 결정 규칙을 따르지만 각기 다른 문자와 글리프를 사용합니다. 이러한 언어들도 지원되며, 예를 들면 다음과 같습니다.
- 중국어, 그리스어, 일본어, 러시아어
기타
- 태국어는 제한적으로 지원됩니다. 성조 부호는 TouchGFX 규칙에 따라 위치가 결정됩니다(세로 방향으로).
- 힌디어(데바나가리)는 제한적으로 지원됩니다. 일부 문자의 위치가 약간 틀릴 수는 있지만 텍스트를 읽지 못할 정도는 아닙니다.
좌향 언어
특수 문자 집합을 사용하는 단순 언어
- 히브리어, 인도네시아어, 카자흐스탄어
모양(단독, 첫 음절, 가운데 음절, 끝 음절)에 따라 합자가 다른 언어
- 아랍어(문자가 4개 이상 연속되면 단일 합자로 인식되지 않아 변환도 되지 않습니다. Sallallahou Alayhe Wasallam, Jallajalalouhou, Rial 기호가 여기에 해당합니다). 일부 발음 구별 기호의 위치가 잘못될 수 있습니다.
- 페르시아어
- 말레이시아어("위에 점이 있는 아랍 문자" ݢ는 단독 형태로만 지원됩니다).
지원되지 않는 언어
다음 언어는 합자, 이중 문자, 세로 방향 위치 결정이 광범위하게 사용되어 지원되지 않는 것으로 알려져 있습니다.
- 우르드어, 미얀마어