TextMesh Pro有自己的Font asset格式。当你将一个字体(通常是TTF文件)添加到Unity项目中的时候,Unity 将其作为font asset导入。然后,你需要使用 font asset creator 从它生成一个TextMesh Pro font asset 。之后,TTF的字体就不再需要了。但是,最好不要从Unity里面删除,因为后面修改,调整的时候可能还会用到的。
1、Font Asset Creator
TextMesh Pro的Font Asset Creator 窗口可以通过Window - TextMeshPro-FontAssetCreator在编辑器中打开。该窗口为您提供一些字体设置、一个生成按钮、一个纹理预览和一个按钮来保存您的新字体asset。
默认情况下,该窗口被配置为创建有向距离场(SDF)font asset。这些字体生成的纹理包含轮廓距离信息,看起来像灰度渐变。当用正确的着色器渲染时,它将产生高质量的文本,支持像轮廓和阴影这样的效果。
保存font assets时,必须将它们放在 settings asset (后面有单独章节教程)中定义的特定文件夹中。以确保TextMesh Pro能够找到它们,并将它们包含在构建中。
1.1、Font Source
生成Text Mesh Pro字体的时候,你必须选择一个源字体,这个字体也只会用来生成对应的font asset,而不会包含在构建中,除非你也在其他地方使用到了,或者将它放在了Resources文件夹中。Text Mesh Pro的插件包含Arial、Bangers和Impact作为示例字体来源。
1.2、Font Size
Font Size 可以控制字号大小来生成字体纹理。可以手动设置自定义大小,也可以使用自动调整。自动调整将尝试使用最大的字生成纹理。如果你想要精确控制图集和字体的时候,通常会对SDF字体设置Auto Sizing和Custom Size来精确控制图集和字号。
1.3、Font Padding
字体纹理中的字符需要一些padding间距来填充,这样方便它们单独渲染,Padding的单位是像素。
Padding也为SDF过渡创造了空间。Padding越大,过渡就越平滑。这样可以得到更高质量的渲染和更好的效果,比如描边。对于512x512纹理来说,5的Padding通常就很好了。
下面分别展示Padding为0,5,10的SDF font 纹理
译注(看起来越糊的越好。。)
1.4、Packing Method
Optimum 选项会找到最大可能的自动字体大小,并且能够包含在指定大小的font texture中。
Fast会比较快,但最终可能会使用较小的字体大小。通常,在开发的时候使用Fast,最终Build的时候使用optimum。
1.5、Atlas Resolution
使用SFD字体时,较高的分辨率会产生更精细的渐变,从而产生更高质量的文本。对于大多数字体,当包含所有ASCII字符时,512x512纹理分辨率就足够好了。
但是,如果需要支持成千上万的字符的话,就不得不使用大纹理了。但纹理有限,字符无限,仅仅放大分辨率并不是一个好的解决方案,也不可能满足所有需求。一般这种情况下,可以通过创建多个font assets来拆分字符。将最常用的字符放在主字体asset中,其他字符放在fallback font asset中。
1.6、Character Set
选好了源字体之后,并不会自动把里面所有字体都拿出来生成,所以你必须要指定从源字体里生成哪些字符。可以选择一些预定义的字符集,也可以自己提供一个字符列表。
预置里包括ASCII的可见字符和扩展的ASCII字符集。也可以选择ASCII的公共子集,但仅限于小写、大写和数字和符号。
其他选项则可以提供完全控制,想要生成要哪些字符。可以使用十六进制数字的小数点指定字符范围,或者显式列出每个字符。
还可以使用一个text asset,在它里面包含所有你想要生成的字符集,这就允许你在项目外编辑导入,或者使用便捷的文本修改工具调整。
确保你添加了 space 字符,除非你很确定你用不上它。
1.7、Font Style
可以通过这个选项选择一些不同的字体风格。但是这些设置只为bitmap类型的字体设置。如果是SDF的话,可以通过Shader来配置SDF的不同风格。可以从粗体,斜体,粗+斜或者描边等风格里面选,也可以控制黑体或者描边的力度。
1.8、Font Render Mode
距离场模式创建SDF纹理用的是SDF着色器。对字符进行高分辨率采样,以产生良好的过渡。16x是默认的,适合于一般场合的使用。32x的生成速度较慢,但对于复杂或较小的字符可以产生更好的质量。
其他模式直接将字符呈现给位图,以便与位图中的字体一起使用.
Raster模式不使用反混叠,而smooth模式使用。而两者都有一个带有hinting的variant模式,它将字符像素与纹理像素对齐,以便获得更清晰的结果。
1.9、Get Kerning Pairs?
您可以选择从源字体复制字间距数据。该数据用于调整特定字符对之间的间距,以产生更直观的效果。但是需要注意的是,很多字体是没有字间距对的。
2、Font Asset
TextMesh Pro的 font assets包含TextMesh Pro布局和渲染文本所需的所有信息。
2.1、Face Info
Face区域包含有关font asset的信息。您可以看到原始字体的名称、用于生成asset的Point大小和padding 以及atlas texture的大小等,但不能编辑这些值。
接着从字体中提取一些度量,您可以对这些度量进行调整,以对字体进行微调或纠正一些奇怪的值。有的时候字体就是用奇怪的度量来设计的,所以为了使其可用,必须对其进行校对。
我们看下一个行的度量。
baseline是字符所处的水平线。ascender 描述了baseline字符可以扩展到多远,这也定义了一行的顶部。descender也是一样的,但低于baseline。line height定义了连续线顶部之间的距离。如果它的大小大于ascender 和descender 的总和,将有一个行之间的行距。如果它较小,则来自不同行的字符可能会重叠。
Underline的位置是相对于baseline进行放置的。
super(上标)和sub (下标)偏移量用来调整上标和下标文本的baseline 。它们的大小是用来缩放这个文本的一个因素,它是相对于正常的字体大小进行设置的。
2.2、Font Sub-Assets
每个font asset还包含两个sub asset。这些是它的atlas texture 和它的默认material。不应该也不要直接编辑这些内容。
2.3、Font Weights
Font Weights可以控制粗体和斜体的变化,从而改变字体的外观。可以选择不同的font assets用于粗体、斜体和粗体、斜体字的变体。如果不指定font变体,则会使用假粗体和斜体。
还可以调整文本的权重和间距。权重会被添加到SDF shader(有单独教程)使用的“膨胀”。spacing用于字符之间的空格,这些值会被用于处理普通或者假的粗体风格。
Italic Style 用来创造一个假的斜体字变体字符倾斜,你可以用这个值来控制强度。
Tab Multiple 控制tab的大小,一般是字体字符间距的倍数。
2.4、Fallback Font Assets
每个font asset包含有限数量的字符。有时,你使用的字体缺少你需要的字符。当出现这种情况时,就会搜索fallback字体列表,直到创建包含缺失字符的字体为止。文本对象就会使用该字体来呈现它。
这个特性还可以用于在多纹理上进行字体分发。或者对某些字符自动使用不同的字体。但是请记住,搜索列表中缺少的字符会消耗额外的性能。此外,额外的字体也会产生额外的drawcalls。
2.5、Glyph Info
在这个区域,可以检查字体中每个字符的数据,并在必要时对其进行调整。字符列表被分割成页,您可以通过顶部和底部的按钮切换这些页面。您还可以根据字符代码筛选列表。单击一个条目使其激活的话,可以对它进行编辑、复制和删除等操作。
X、Y、W和H值在字体图集中定义字符的矩形区域。
Ox和Oy偏移量控制字符 sprite的位置,在其左上角相对于baseline上的原点定义。ADV值控制在放置下一个字符之前沿baseline前进的距离。最后,SF是一个比例因子,您可以使用它来调整个别字符的大小。
2.6、Kerning Table Info
字间距表要么是从字体中导入的,要么是手动生成的。表也是被分割成页的形式,您可以通过底部的按钮浏览这些页面。每个条目都是带有左字符和右字符的字间距对。偏移量相对于正常情况下正确字符的起始位置。一个正值将字符进一步分开,而负值则将它们拉在一起。
很多字体是没有字间距对的。这个时候你可以手动添加它们,方法是指定字符或它们的十进制字符代码,再加上它们的偏移量进行调整。
返回搜狐,查看更多
责任编辑: