Advanced Text Generator は、Harfbuzz、ICU、FreeType を使用して包括的な Unicode サポートとテキストシェーピング機能を提供するテキストレンダリングモジュールです。
Advanced Text Generator を使用すると、アラビア語やヘブライ語のようにテキストの進行方向が右から左 (RTL) の言語など、さまざまな言語やスクリプトを使用できます。
Advanced Text Generator を使用するには、使用言語をサポートするフォントアセットが必要です。例えば、アラビア語を使用する場合は、アラビア語をサポートするフォントアセットを使用する必要があります。Advanced Text Generator はダイナミックフォントアセットのみをサポートします。プロジェクトで Advanced Text Generator を使用する前に、フォントをプロジェクトにインポートして、ダイナミックフォントアセットを作成する 必要があります。
UI Builder で Advanced Text Generator を使用するには、以下の手順に従います。
USS で Advanced Text Generator を使用するには、-unity-text-generator を advanced に設定します。
例:
.labelText {
-unity-text-generator: advanced;
}
C# スクリプトで Advanced Text Generator を使用するには、TextGeneratorType を Advanced に設定します。
例:
textElement.style.unityTextGenerator = new StyleEnum<TextGeneratorType>(TextGeneratorType.Advanced);
Language Direction は、HTML の dir プロパティに対応するグローバルな UXML 属性です。この属性は、VisualElement のデフォルトのテキスト方向を設定し、子要素にカスケードします。
Language Direction は、省略記号の位置や句読点の配置にも影響します。:dir() pseudo-state のサポートが追加されると、テキスト方向に基づいて条件付きでスタイルを適用できるようになります。
将来のリリースでは、auto という値もサポートされる予定です。値が auto の場合は、テキストブロック内の Unicode 文字の分析によって、テキスト方向が動的に決定されます。強い方向性を持つ文字 (LTR または RTL) が数えられて、その数の多さに基づいて方向が設定されます。
このセクションでは、双方向テキスト (BIDI テキスト) を処理するときの Unity の入力フィールドでのカーソルの動きについて説明します。
Unity は Logical Cursor Movement 方式に現在従っています。つまり、カーソルは双方向テキスト内でテキストのセグメントの方向に基づいて移動します。例えば、アラビア語と英語のテキストを含む文で、左矢印キーを使用すると、カーソルはアラビア語では右から左へと移動してから、英語セグメントでは左端の文字までジャンプし、そのセグメントが終わるまで左から右へと進みます。
Visual Cursor Movement 方式に従っているアプリケーションもあります。カーソルはテキスト方向に関係なく、次のビジュアル文字に移動するため、ユーザーにとっては直感的に感じられる場合があります。将来のリリースでは、カーソル移動モードを任意の選択にする予定です。
Advanced Text Generator には、以下のような制限があります。
一部の機能はまだサポートされていませんが、今後のリリースでサポートされる予定です。
<sprite>、<size>、<font>、<space>、<mark>、その他のいくつかのタグAdvanced Text Generator を使用すると、プロジェクトに icudt73l ファイルが加わります。このファイルは 4.8MB という多くのメモリを使用します。これは将来のリリースで改善される予定です。