고급 텍스트 제너레이터는 Harfbuzz, ICU, FreeType을 사용하여 포괄적인 Unicode 지원 및 텍스트 형성 기능을 제공하는 텍스트 렌더링 모듈입니다.
고급 텍스트 제너레이터를 사용하면 아랍어, 히브리어와 같이 오른쪽에서 왼쪽으로 쓰는(RTL) 언어 등 다양한 언어와 스크립트를 사용할 수 있습니다.
고급 텍스트 제너레이터를 사용하려면 사용하려는 언어를 지원하는 폰트 에셋을 사용해야 합니다. 예를 들어 아랍어를 사용하려면 아랍어를 지원하는 폰트 에셋을 사용해야 합니다. 고급 텍스트 제너레이터는 동적 폰트 에셋만 지원합니다. 프로젝트에서 고급 텍스트 제너레이터를 사용하기 전에 폰트를 프로젝트로 임포트하고 폰트에서 동적 폰트 에셋을 생성해야 합니다.
UI 빌더에서 고급 텍스트 제너레이터를 사용하려면 다음을 수행합니다.
USS에서 고급 텍스트 제너레이터를 사용하려면 -unity-text-generator를 advanced로 설정합니다. 예시:
.labelText {
-unity-text-generator: advanced;
}
C# 스크립트에서 고급 텍스트 제너레이터를 사용하려면 TextGeneratorType을 Advanced로 설정합니다. 예시:
textElement.style.unityTextGenerator = new StyleEnum<TextGeneratorType>(TextGeneratorType.Advanced);
언어 방향은 HTML의 dir 프로퍼티에 해당하는 전역 UXML 속성입니다. 이 속성은 VisualElement에 대한 기본 텍스트 방향과 자식 요소에 대한 캐스케이드를 설정합니다.
언어 방향은 줄임표 위치, 기호 배치에도 영향을 미치며 :dir() 유사 상태에 대한 지원이 추가되면 텍스트 방향에 따라 조건부로 스타일을 적용할 수 있습니다.
향후 릴리스에서는 auto 값도 지원할 예정입니다. auto 값은 텍스트 블록의 Unicode 문자를 분석하여 텍스트 방향을 동적으로 결정합니다. 강한 방향성을 가진 문자(LTR 또는 RTL)의 개수를 계산하고 개수가 더 많은 문자를 기준으로 방향을 설정합니다.
이 섹션에서는 양방향 텍스트(BIDI 텍스트)를 처리할 때 Unity의 입력 필드에서 커서 이동이 작동하는 방식을 설명합니다.
Unity는 현재 Logical Cursor Movement 방식을 따릅니다. 즉, 커서가 각 텍스트 부분의 방향에 맞춰 양방향 텍스트를 따라 이동합니다. 예를 들어, 아랍어와 영어 텍스트가 포함된 문장에서 왼쪽 화살표 키를 사용하면 아랍어 부분에서는 오른쪽에서 왼쪽으로 이동하고 영어 부분에서는 가장 왼쪽 문자로 이동한 다음 영어 부분의 끝에 도달할 때까지 왼쪽에서 오른쪽으로 이동합니다.
일부 애플리케이션은 Visual Cursor Movement 방식을 따릅니다. 이는 텍스트의 방향에 관계없이 커서가 다음에 보이는 문자로 이동하므로 사용자에게 더 직관적인 느낌을 줄 수 있습니다. 향후 릴리스에서는 커서 이동 모드를 옵션으로 설정할 예정입니다.
고급 텍스트 제너레이터의 제한 사항은 다음과 같습니다.
다음과 같은 일부 기능은 아직 지원되지 않지만 향후 릴리스로 제공할 예정입니다.
<sprite>, <size>, <font>, <space>, <mark> 등을 비롯한 특정 리치 텍스트 태그고급 텍스트 제너레이터를 사용하는 경우 프로젝트에 상당히 많은 4.8MB의 메모리를 사용하는 icudt73l 파일이 포함됩니다. 이는 향후 릴리스에서 개선될 예정입니다.