Unity3D :字体资源简介
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
字体资源简介
字体资源充当字体的容器。使用字体资源,您可以将字体导入到项目中,并从单个文件创建字体的变体,而无需更改原始字体。创建字体资产的另一个原因是处理具有大量字符集的语言,例如中文。您可以只包含所需的字符,而不能包含完整的字符集。
您可以将 TrueType ()、OpenType () 或 TrueType Collection() 字体转换为字体资源。字体资源包括包含所有字符的字体图集纹理文件。创建字体资源时,有多种图集填充模式和渲染模式可供选择。.ttf.otf.ttc
阿特拉斯种群模式
TextCore 支持静态、动态和动态操作系统图集填充模式。
静态字体资源
静态字体资源在转换过程中将字符预烘焙到图集纹理中。使用静态字体资源包含项目中的已知文本,例如标签和部分标题。创建静态字体资源时,字体图集默认为空。您必须手动生成字体图集并包含项目所需的所有字符。项目生成不需要包含字体源文件,因此快速高效。
请参阅有关如何创建静态字体资源的说明。
动态字体资源
动态字体资源从空的图集纹理开始。动态字体资源在源字体文件中查找字符,并在您在用户界面
.对项目中的未知文本使用动态字体资源,例如任何文本输入字段
.动态字体资源很灵活,但它们具有额外的性能开销,因为项目生成需要包含所有源字体文件。
请参阅有关如何创建动态字体资源的说明。
动态操作系统字体资产
动态操作系统字体资源是一种动态字体资产,它引用操作系统上的字体文件而不是源字体文件。与动态字体资产相比,动态操作系统字体资产的内存开销更少。项目生成不需要包含字体源文件。确保字体位于目标平台的操作系统上。动态操作系统字体资产非常适合回退字体资产。
要创建动态操作系统字体资源,请将字体从操作系统导入到项目中,并使用它来创建动态字体资源并将 Atlas 填充模式更改为动态操作系统。
图集渲染模式
TextCore 支持位图和有符号距离场 (SDF) 的图集渲染模式。
位图字体
位图渲染生成完美对齐每个字体资源的字体资源像素
的字体现场
和图形用户界面像素。对像素艺术使用以下渲染模式:
- 平滑或SMOOTH_HINTED将文本呈现为抗锯齿位图。SMOOTH_HINTED字符像素与纹理像素对齐,以获得更清晰的图像。
- RASTER 或 RASTER_HINTE 将文本呈现为非抗锯齿位图。RASTER_HINTE字符像素与纹理像素对齐以获得更清晰的图像。
SDF 字体
SDF 渲染生成的字体资源在变换或放大时看起来很清晰。SDF 渲染支持轮廓和投影等效果。
与位图字体纹理不同,SDF 字体资源包含轮廓距离信息。在字体图集中,此信息看起来像从每个字形中间到超过其边缘的点的灰度渐变。渐变的中点对应于字形的边缘。
下图显示了位图和 SDF 字体资源及其生成的呈现文本。位图字体生成的文本的边缘或多或少是锯齿状和模糊的,具体取决于文本与照相机
,以及它是如何被转换和扭曲的。SDF 字体生成具有平滑边缘的文本,而与摄像机的距离如何。



对 SDF 字体使用以下呈现模式:
- SDFAA:使用此模式可为大多数用例生成字体图集,但当您在具有大轮廓的屏幕上渲染大文本(例如超过 90 磅大小的标题)时除外。SDFAA 是动态或动态操作系统字体资产的默认模式,用于快速生成。SDFAA 是一种速度更快但精度较低的 SDF 生成模式。
- SDFAA_HINTED使用此模式可将字符像素与纹理像素对齐,以获得更清晰的结果。
- SDF32:静态字体资源的默认模式。将此模式用于具有复杂字符或小字符的字体。这是一种速度较慢且准确的 SDF 生成模式,具有 32 倍过采样。
- SDF16:将此模式用于静态字体资源和大部分大文本,例如 72 磅或更大的标题。这是一种速度较慢且准确的 SDF 生成模式,具有 16 倍过采样。
- SDF8:使用此模式可生成具有 8 倍过采样的更慢、更准确的 SDF。
- SDF:使用此模式生成更慢、更准确的 SDF,而不会过度采样。
字体资产变体
如果您只想更改字体资产的指标,而不是创建新的字体资产,请基于其他字体资产创建字体资产变体。字体资源变体可以具有将其与原始字体资源区分开来的样式,而不会占用额外的纹理空间。变体存储自己的人脸信息、字符、字形和调整对数据,但仍引用原始图集。
要创建字体资源变体,请右键单击字体资源,然后选择创建>文本>字体资源变体。
填充
字体纹理中的字符需要在它们之间填充,以便可以单独呈现它们。此填充以像素为单位指定。填充还为 SDF 渐变创建空间。填充越大,过渡越平滑,从而实现更高质量的渲染和更大的效果,如粗轮廓。对纹理使用填充。一个好的经验法则是将采样到填充比率为 。5512x5121:10
为大纹理启用多图集纹理
对于大多数字体,如果包含所有 ASCII 字符,请使用纹理分辨率。要支持数千个字符,请使用大纹理并在字体资产中启用多图集纹理512x512
检查员
窗。一旦主纹理已满,这将自动创建相同大小的新纹理。
如果您针对移动设备进行设计,也可以启用多图集纹理,其中施加的最大纹理大小会阻止整组字形适合具有足够质量的单个图集。
使用字体资源
要使用字体资源,请在 UI 生成器中,从检查器窗口的字体资源中选择字体。
注意:“字体”字段用于向后兼容。如果要将“字体”列表中的字体用于旧项目,则必须从“字体资源”中选择“无”。否则,您从“字体”中选择的字体将不会生效。
您可以使用以下语法将字体资源应用于 USS 中的文本元素:
-unity-font-definition: <resource> | <url>
例如:
Label {
-unity-font-definition: url(“/Assets/UI Toolkit/Resources/Fonts & Materials/LiberationSans SDF.asset”);
}
有关详细信息,请参阅 USS 文本属性。
最佳实践
总之,在创建字体资源时,请考虑以下事项:
- 用户输入文本:使用动态或动态操作系统填充模式,以及 SDFAA 模式进行快速生成。您可能需要为本地化添加回退。
- 通用标签:使用静态填充模式和采样点大小较小的 SDF16 模式。
- 标题:使用具有更高采样点大小的静态填充模式和 SDF32 模式。
- 像素艺术:使用任何位图字体呈现模式。
- 填充:使用采样填充比例。
1:10
- 为大纹理启用多图集纹理。
由3D建模学习工作室整理翻译,转载请注明出处!