【Unity学习笔记】TextMeshPro文档(二)

2023-10-14 15:30

本文主要是介绍【Unity学习笔记】TextMeshPro文档(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本人英语渣渣结合<百度翻译>翻译,稍微删减了些自认为可以忽视的部分,原文地址 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),你必须调整使其可用。

line 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是一个比例因子,您可以使用它来调整字符的大小。

2.6 Kerning Table Info

这篇关于【Unity学习笔记】TextMeshPro文档(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/211400

相关文章

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.