TextMeshPro系列 —— Font Asset Creator
字体资源创建器将Unity字体资源转换为TextMesh Pro字体资源。您可以使用它创建SDF字体和位图字体。
当您创建一个新的字体资源时,TextMesh Pro会生成资源本身,以及字体的图集纹理和材质。
在创建TextMesh Pro字体资源后,您可以删除用作来源的Unity字体资源,不过建议您保留它以备需要重新生成TextMesh Pro字体资源时使用。
Creating a font Asset
在开始之前,请确保已将您想要使用的字体(通常是TrueType格式的.ttf文件)导入到项目中。
创建TextMesh Pro字体资源的方法:
- 从菜单中选择:Window > TextMesh Pro > Font Asset Creator,打开Font Asset Creater。
- 选择一个Source Font File,即您想要转换为TextMesh Pro字体资源的Unity字体资源。
- 根据需要调整字体设置,然后点击Generate Font Atlas生成图集纹理(图集和字体资源的信息会显示在纹理预览区域)。
- 继续调整设置并重新生成图集,直到对结果满意为止。
- 点击Save或Save as...将字体资源保存到您的项目中(您必须将资源保存到Resources文件夹中,以便TextMesh Pro能够访问它。)。
!! PS: 选择Character Set,如果是英文字体可以选择ASCII,只需要包括所有大小写字母和常用标点符号就够了。如果是非英文字体,可以选择“Characters from File”,在Character File里选择字符文件(字符文件是纯文本文件,也需要事先添加到Unity项目文件夹里)。
Font Asset Creator Settings:
属性 | 参数 | 功能 |
---|---|---|
Source Font File | 选择用于生成 TextMesh Pro 字体资产的字体文件。此字体文件不会被自动打包到项目中,除非在项目其他位置使用它,或将其放置在 Resources 文件夹中。可以使用默认的 TextMesh Pro 字体资产,也可以导入自己的字体。 | |
Font Face | 为位图字体资产应用基本样式。SDF 字体的样式配置在材质的 Shader 中进行。 | |
Normal | 不带样式生成字符。 | |
Bold, Italic, Bold_Italic | 生成加粗、斜体或加粗斜体的字体资产,可以为粗体和斜体设置强度值。 | |
Outline | 生成带轮廓的字体资产。 | |
Sampling Point Size | 设置用于生成字体纹理的字体大小,以点数为单位。 | |
Auto Sizing | 选取尽可能大的点数,同时确保所有字符适合纹理。常用于 SDF 字体。 | |
Custom Size | 使用自定义字体大小,输入所需大小以像素精确地控制仅限位图字体的字体大小。 | |
Padding | 指定字体纹理中字符之间的像素间距。较大的填充可带来平滑的过渡,从而实现更高质量的渲染效果,适用于厚边框等效果。512x512纹理时,填充为5通常即可。 | |
Packing Method | 指定如何将字符放入字体纹理。 | |
Fast | 更快速地进行字符打包,但可能比Optimum模式的字体尺寸小。用于测试字体设置时选用。 | |
Optimum | 自动找到合适的字体大小以适合所有字符。通常用于生成最终字体纹理。 | |
Atlas Resolution | 设置字体纹理的宽度和高度,以像素为单位。512x512的分辨率适合包括 ASCII 字符的字体,如果字符较多可能需要更大的分辨率或多个图集。高分辨率有助于获得更精细的渐变效果,提高文本质量。 | |
Character Set | 指定需要包含的字符集,字体文件中的字符不会自动包含在字体资产中。可以选择预定义字符集、提供需要包含的字符列表,或包括现有字体资产或文本资产中的所有字符。 | |
ASCII | 包含 ASCII 字符集中的可见字符。 | |
Extended ASCII | 包含扩展 ASCII 字符集中的可见字符。 | |
ASCII Lowercase | 包含 ASCII 字符集中仅有的小写字符。 | |
ASCII Uppercase | 包含 ASCII 字符集中仅有的大写字符。 | |
Numbers + Symbols | 包含 ASCII 字符集中仅有的数字和符号。 | |
Custom Range | 包含用户定义的字符范围,可输入十进制值或值的范围来指定要包含的字符。例如 32-126,160,8230。 | |
Unicode Range (Hex) | 包含用户定义的字符范围,以 Unicode 十六进制值输入指定字符。例如 20-7E,A0,2026。 | |
Custom Characters | 包含用户定义的字符范围,按字符逐个输入字符即可,例如 abc123*#%。 | |
Characters from File | 包含指定的文本资产中的所有字符。适用于保存字符集的情况。 | |
Render Mode | 指定字体图集的输出渲染模式。 | |
SMOOTH_HINTED | 将图集渲染为抗锯齿位图,同时将字符像素与纹理像素对齐,提升清晰度。 | |
SMOOTH | 将图集渲染为抗锯齿的位图。 | |
RASTER_HINTED | 将图集渲染为无抗锯齿位图,并对齐字符像素和纹理像素。 | |
RASTER | 将图集渲染为无抗锯齿的位图。 | |
SDF | 使用较慢但更准确的 SDF 生成模式,不进行超采样。 | |
SDF8 | 使用较慢但更准确的 SDF 生成模式,8x 超采样。 | |
SDF16 | 使用较慢但更准确的 SDF 生成模式,16x 超采样。 | |
SDF32 | 使用较慢但更准确的 SDF 生成模式,32x 超采样,适用于复杂或较小的字符。 | |
SDFAA_HINTED | 使用较快但相对不太精确的 SDF 生成模式,并对齐字符像素,适用于大多数情况。 | |
SDFAA | 使用较快但相对不太精确的 SDF 生成模式,适用于大多数情况。 | |
Get Font Features | 该选项决定了在向字体资产中添加新字符和字形时,是否从源字体文件中检索 OpenType 字体特性。禁用此选项将阻止提取字体特性。 |
Tips for creating font assets
字体纹理中的字符需要一定的间距,以便能够单独渲染。这个间距以像素为单位指定。间距还为SDF渐变提供了空间。间距越大,过渡越平滑,从而支持更高质量的渲染和更大的效果,例如厚轮廓。对于512x512的纹理,通常设置5的间距就足够了。
对于大多数字体,包含所有ASCII字符时,512x512的纹理分辨率已经足够。当需要支持数千个字符时,就需要使用更大的纹理。但即使在最大分辨率下,可能也无法容纳所有字符。这种情况下,您可以通过创建多个字体资源来分割字符。将最常用的字符放在主字体资源中,其他字符放在备用字体资源中。
PS:比如在生成全字符的中文字体时,就需要将其设置的尽量大,比如8192x8192,并且生成时间也将随之增长,一般在10~30分钟之间。所以如果没有必要,就可以使用自定义的character file,只包括自己需要的字符即可。
扩展
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)字符集是一种编码标准,用于表示英文字符、数字、标点符号及一些控制字符。它最初是为了文本数据的传输和存储设计的,广泛用于计算机和通信设备之间的数据交换。
ASCII字符集包含128个字符,分为两个部分:
控制字符(0到31和127):这些字符通常用于控制设备的操作,如换行、回车、制表符等。比如,字符27表示“ESC”(转义字符)。
可打印字符(32到126):包括所有英文字母(大写和小写)、阿拉伯数字、标点符号及其他常见符号。例如,字符65表示字母“A”,字符97表示字母“a”。
ASCII的字符范围是0到127,每个字符都用7位二进制数表示,最多可以有128个不同的字符。由于其历史悠久且简单,ASCII仍然是很多计算机系统和程序的基础。
参考:
本文作者:陈侠云
本文链接:https://www.cnblogs.com/chenxiayun/p/18693079
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步