本人英语渣渣结合<百度翻译>翻译,稍微删减了些自认为可以忽视的部分,原文地址 http://digitalnativestudios.com/textmeshpro/docs/font/
Font Assets
TextMesh Pro有它自己的资产格式。当你添加一个字体(通常是一个TTF格式的文件)到Unity项目中时,Unity将会把它作为字体资产(font asset)导入。然后你可以使用Font Asset Creator去把该字体创建为TestMesh Pro的字体资产。然后你就不再需要那个TTF的资产了。当然辣,最好把它留在项目里面,以防需要重建字体资产。
1 Font Asset Creator
可以通过Window>TextMeshPro>Font Asset Creator打开TestMesh Pro字体创建面板。该窗口提供了一些字体设置、生成按钮、纹理预览和保存新字体资产的按钮。
默认情况下,该面板配置用于创建signed distance field (SDF)字体资产。给这些字体生成的字体纹理包含轮廓距离信息,这些信息看起来像是灰度渐变。当使用这却的shader渲染时,可以生成高质量的文字,并支持轮廓和阴影等效果。
当存储字体资产时,你要将它们放入指定的文件夹,文件夹在settings asset中设置。这可以确保TestMesh Pro可以找到它们并在在发布时把它们包含在内。
1.1 Font Source
你必须选择一个要用于生成TextMesh Pro字体资产(font asset)的字体。该字体资源只需要用于生成字体资产(font asset)。它不会被包含到发布中,除非你在别的地方使用了它或者把它放入了Resources文件夹中。
1.2 Font Size
你可以控制用于生成字体纹理的字体点(font’s point size)大小。你既可以手动设置一个自定义大小(custom size)也可以选择自动生成大小(auto sizing)。Auto sizing将会尽可能使用最大的点(point)大小同时任然适合纹理上的所有字符。通常将Auto Sizing用于SDF字体,当你想要像素精确控制位图字体时使用Custom Size。
1.3 Font Padding
字体纹理里的字符之间需要一些间隙,以便可以单独渲染它们。这些间隙以像素为单位指定。下面三图分别是padding为0,5,10的效果:
padding还为SDF渐变创建空间。填充越大,过渡就越平滑,这样可以实现更高质量的渲染和更大(范围)的效果,如粗轮廓。对于512x512纹理,填充5通常是很好的。
1.4 Packing Method
Optimum packing 将会找到最大可能的自动字体大小,并仍然满足纹理上的所有字符。
Fast packing会快些,但是最终可能会使用一个更小的字体大小。通常在你对最终结果尝试设置和优化时使用fast。
1.5 Atlas Resolution
“使用SFD字体时,分辨率越高,渐变越细,生成的文本质量就越高。对于大多数字体,当包含所有ASCII字符时,512x512纹理分辨率很好。(百度翻译)”
当你需要支持数千个字符时,你必须使用大的纹理。但即使是在最高分辨率下,也可能无法适应所有内容。在这种情况下,可以将字符分到多个字体资产中。将最常用的字符放在主字体资产(main font asset)中,其他字符放在备用字体资产(fallback font assets)中。
1.6 Character Set
字体文件中的字符不会自动包含在字体资产中。你必须指定你需要哪些字符。您可以选择几个预定义的字符集,也可以自己提供字符列表。
预设包括ASCII和扩展ASCII字符集的可见字符。您还可以选择ASCII的常用子集,仅限于小写、大写,并且仅限于数字和符号。
其他选项使您可以完全控制要包含哪些字符。可以使用十六进制数字中的任意一个十进制数字指定字符范围。或者可以显式列出每个字符。
你也可以使用包含所有你想要的文字的文本资源,这允许你去保存你的字符集。
记得要把空格字符包含进去,除非你不需要它。
1.7 Font Style
您可以在几种不同的字体样式之间进行选择。这些设置仅适用于位图字体。您可以通过shader来配置SDF字体的样式。您可以在粗体、斜体、粗体加斜体和轮廓之间进行选择。你可以控制粗体和轮廓的强度。
1.8 Font Render Mode
distance field模式创建SDF纹理以与SDF shader一起使用。字符以高分辨率采样去创建良好的渐变。16x是默认值,对于通常的使用是足够的。32x生成速度较慢,但对于复杂或较小的字符可以生成更好的质量。
其他模式直接将字符渲染到位图,以便与仅位图字体一起使用。Raster不使用抗锯齿,而sniitg模式使用。两者都有一个带有暗示的变体模式,它将字符像素与纹理像素对齐,以获得更清晰的结果。
1.9 Get Kerning Pairs?
“您可以选择从字体复制紧排数据。这些数据用于调整特定字符对之间的间距,以产生更直观的结果。请注意,许多字体没有紧排对。”
2 Font Asset
TextMesh Pro字体资产(font Asset)包含TextMesh Pro布局和渲染文本所需的所有信息。
2.1 Face Info
Face info包含关于字体资产(Font Asset)的信息。你可以看见原始字体的名字,用于生成字体资产的point size 和padding。这些值不能被编辑。
还有有一些从字体中提取一些度量(metrics),你可以调整这些度量来微调字体或纠正奇怪的值。有时字体设计有奇怪的度量(metrics),你必须调整使其可用。
基线(baseline)是字符所在的水平线。ascender描述字符可以延伸到基线以上的距离,这也定义了行的顶部。descender也这样做,但低于基线。line height定义了连续行顶部之间的距离(当前行和下一行的top差)。如果它的大小大于ascender和descender的总和,行之间将会有一个间隙。如果它更小,那么来自不同行的字符可能会重叠。
underline指定相对于基线的下划线放置位置。
superscript和subscript offsets用于调整上标(superscript)和下标(subscript)文本的基线。它们的大小是相对于正常字体大小来缩放此类文本的一个因素。
2.2 Font Sub-Assets
Each font asset also contains two sub-assets. These are its texture atlas and its default material. You should not edit these directly.
每个字体资产还包含俩子资产,它们是字体资产的贴图字体集和默认材质。你不应该直接编辑它们。
2.3 Font Weights
您可以控制粗体和斜体如何更改字体的外观。可以为粗体、斜体和带斜体的粗体字体变体选择不同的字体资源。如果不指定字体变体,将使用假粗体(fake bold)和斜体。
您还可以调整文本的权重(weight)和间距(spacing)。权重将添加到SDF shaders使用的dilation中。将spacing添加到字符之间的间距中。您可以为普通和假粗体样式定义这些值。
斜体样式用于通过让字符sprite倾斜来创建假斜体字体变体。你可以控制这个效果的强度。
Tab Multiple控制制表符的大小。它被定义为字体的空格字符宽度的倍数。
2.4 Fallback Font Assets
每个字体资产包含有限数量的字符。有时,您使用的字体缺少所需的字符。发生这种情况时,将搜索备份字体列表,直到找到包含缺少字符的字体。然后文本对象将使用该字体来呈现它。
你也可以使用此功能在多个纹理上分布字体。或者对某些字符自动使用不同的字体。但是,请记住,在列表中搜索缺少的字符需要额外的工作。另外,额外的字体需要额外的draw调用。
2.5 Glyph Info
在这里,你可以检查字体中每个字符的数据,并在必要时对其进行调整。字符列表被拆分为多个页面,您可以通过顶部和底部的按钮浏览这些页面。也可以根据字符代码筛选列表。单击某个条目使其处于活动状态。这允许您编辑、复制和删除它。
X,Y,W和H决定字符图集中字符矩阵区域。~~OX和OY偏移控制角色精灵的放置,精灵定义在相对于基线原点的左上角 。ADV值控制放置下一个角色之前沿基线前进的距离。最后,SF是一个比例因子,您可以使用它来调整字符的大小。