字体资产用作字体的容器。使用字体资产时,可以将字体导入项目,从一个文件创建字体变体,而无需更改原始字体。创建字体资产的另一个原因是处理具有大量字符集的语言,例如中文。只能包含所需的字符,而不能包含完整的字符集。
可以将 TrueType (.ttf)、OpenType (.otf) 或 TrueType Collection (.ttc) 字体转换为字体资产。字体资产包括一个包含所有字符的字体图集纹理文件。创建字体资产时有多种图集填充模式和渲染模式可供选择。
TextCore 支持静态、动态和动态操作系统图集填充模式。
静态字体资产在转换期间将字符预烘焙到图集纹理中。使用静态字体资产可在项目中包含已知文本,例如标签和小节标题。创建静态字体资产时,字体图集默认为空。必须手动生成字体图集并包含项目所需的所有字符。项目构建不需要包含字体源文件,因此快速高效。
请参阅有关如何创建静态字体资产的说明。
动态字体资产以空图集纹理开头。动态字体资产在源字体文件中查找字符,并在__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary 中使用字符时动态添加字符。对项目中的未知文本(例如任何文本输入字段)使用动态字体资产。动态字体资产用途灵活,但具有额外的性能开销,因为项目构建需要包括所有源字体文件。
请参阅有关如何创建动态字体资产的说明。
动态操作系统字体资产是引用操作系统上的字体文件,而不是源字体文件的动态字体资产。与动态字体资产相比,动态操作系统字体资产具有更少的内存开销。项目构建不需要包含字体源文件。确保字体位于目标平台的操作系统上。动态操作系统字体资产非常适合用作回退字体资产。
要创建动态操作系统字体资产,请将字体从操作系统导入项目,然后使用它创建动态字体资产并将图集填充模式 (Atlas Population Mode) 更改为动态操作系统 (Dynamic OS)。
TextCore 支持位图和有符号距离场 (SDF) 的图集渲染模式。
位图渲染生成的字体资产可以将字体的每个像素与场景和 GUI 像素完美对齐。对像素艺术使用以下渲染模式:
SDF 渲染生成的字体资产在变换或放大时看起来很清晰。SDF 渲染支持轮廓和阴影等效果。
与位图字体纹理不同,SDF 字体资产包含轮廓距离信息。在字体图集中,此信息看起来像是灰度渐变,从每个字形的中间延伸到超过其边缘的点。渐变的中点对应于字形的边缘。
下图显示了位图和 SDF 字体资产以及它们生成的渲染文本。位图字体产生的文本的边缘或多或少具有锯齿状和模糊性,具体取决于文本与摄像机的距离,以及文本的变换和失真方式。无论与摄像机的距离如何,SDF 字体都会生成具有平滑边缘的文本。
对 SDF 字体使用以下渲染模式:
如果只想更改字体资产的指标,而不是创建新的字体资产,请根据另一个字体资产创建字体资产变体。字体资产变体可以具有与原始字体资产不同的样式,而不会为纹理占用额外空间。该变体会存储自己的字形信息、字符、字形和调整对数据,但仍然引用原始图集。
要创建字体资产变体,请右键单击字体资产,然后选择创建 (Create) > 文本 (Text) > 字体资产变体 (Font Asset Variant)。
字体纹理中的字符需要在它们之间填充,以便可以单独渲染。此填充以像素为单位指定。填充还为 SDF 渐变腾出空间。填充越大,过渡越平滑,从而实现更高质量的渲染和更大的效果,例如厚实的轮廓。对 512x512 纹理使用 5 填充。根据经验,采样与填充比率为 1:10。
对于大多数字体,如果包含所有 ASCII 字符,请使用 512x512 纹理分辨率。要支持数千个字符,请使用大纹理并在字体资产的检视面板 (Inspector) 窗口中启用多图集纹理 (Multi Atlas Textures)。一旦主纹理已满,将自动创建相同大小的新纹理。
如果为移动设备进行设计,则还可以启用多图集纹理 (Multi Atlas Textures),这种情况下强制规定的最大纹理大小会阻止将一整套字形放入单个质量充足的图集中。
要使用字体资产,请在 UI Builder 中,从检视面板 (Inspector) 窗口中的字体资产 (Font Asset) 中选择字体。
注意:字体 (Font) 字段用于向后兼容。如果要将字体 (Font) 列表中的字体用于旧版项目,必须从字体资产 (Font Asset) 中选择无 (None)。否则,从字体 (Font) 中选择的字体将不生效。
可使用以下语法将字体资产应用于 USS 中的文本元素:
-unity-font-definition: <resource> | <url>
例如:
Label {
-unity-font-definition: url("/Assets/UI Toolkit/Resources/Fonts & Materials/LiberationSans SDF.asset");
}
有关更多信息,请参阅 USS 文本属性。
总之,创建字体资产时要考虑以下几点:
1:10 的采样填充比。