高级文本生成器 (Advanced Text Generator) 是一个文本渲染模块,使用 Harfbuzz、ICU 和 FreeType 提供全面的 Unicode 支持和文本塑造功能。
借助高级文本生成器,您可以使用各种语言和脚本,例如阿拉伯语、希伯来语等从右到左 (RTL) 的语言。
要使用高级文本生成器,必须要使用支持目标语言的字体资源。例如,如果要使用阿拉伯文,必须使用支持阿拉伯文的字体资源。高级文本生成器仅支持动态字体资源。在项目中使用高级文本生成器之前,必须将字体导入项目并以此创建动态字体资源。
要在__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary Builder 中使用高级文本生成器,请执行以下操作:
要在 USS 中使用高级文本生成器,请将 -unity-text-generator 设置为 advanced。例如:
.labelText {
-unity-text-generator: advanced;
}
要在 C# 脚本中使用高级文本生成器,请将 TextGeneratorType 设置为 Advanced。例如:
textElement.style.unityTextGenerator = new StyleEnum<TextGeneratorType>(TextGeneratorType.Advanced);
语言方向 (Language Direction) 是一个全局 UXML 属性,对应于 HTML 中的 dir 属性。此属性为任何 VisualElement 设置默认的文本方向,并级联到子元素。
语言方向还会影响省略号位置和标点符号位置,一旦添加了对 :dir() 伪状态的支持,还可以根据文本方向有条件地应用样式。
我们还计划在未来版本中支持 auto 值。auto 值通过分析文本块中的 Unicode 字符来动态确定文本方向。它计算强方向性字符(LTR 或 RTL)的数量,并根据较高的计数设置文本方向。
本节介绍了处理双向文本(BIDI 文本)时 Unity 输入字段中的光标移动行为。
Unity 目前遵循 Logical Cursor Movement 方法。这意味着光标根据文本段的方向在双向文本中移动。例如,在一个包含阿拉伯语和英语文本的句子中使用左箭头键时,光标会在阿拉伯语文本中从右向左移动,然后跳到英语文本段的最左边字符处,并继续从左向右移动,直到到达该英语文本段的末尾。
有些应用程序遵循 Visual Cursor Movement 方法。这意味着无论文本的方向如何,光标都会移动到下一个视觉字符,这有时会让用户觉得更直观。我们计划在将来的版本中将光标移动模式作为一个选项。
高级文本生成器有以下限制:
目前尚不支持的一些功能(但有计划在未来版本中提供):
<sprite>、<size>、<font>、<space>、<mark> 和其他一些标签。使用高级文本生成器时,项目会包含一个 icudt73l 文件,该文件会占用大量内存,即 4.8MB。未来版本中将对此进行改进。