字体资源
一、基本创建流程
1.基于已有字体文件创建字体资源(常用)
- 导入字体文件(后缀名为.ttf 或.otf)
- 右键点击字体文件,选择“创建->TextMeshPro->Font Asset”
直接打开创建字体资源窗口(不常用)
打开菜单栏“Window->TextMeshPro->Font Asset Creator”
二、字体配置信息
1.字体配置信息
- Update Atlas Texture:更新纹理图集 点击该按钮后,可以打开一个新窗口 用来配置字体的图集纹理信息 主要用于生成静态字体资源 下一段有具体参数介绍
- Family Name:字体名称 无法手动修改 创建字体资源时默认设置
- Style Name:样式名称 无法手动修改 创建字体资源时默认设置 4.Point Size:字体大小(以磅 Point,缩写 pt 为单位) 1 磅等于 1/72 英寸(约 0.353 毫米) 在字体设计中,磅数用来表示字体的高度。 这个单位是一种用于测量字体大小和印刷文本的单位
- Scale:缩放 对字体进行缩放,1 为原始大小,不缩放
- 字体位置相关
- Line Height:行高 表示每行文本的高度,通常是基于最大字形的高度计算的。决定了两行文本之间的距离 若 Line Height > Ascent Line + Descent Line , 则会在线条之间创建间隙,不同行上的字符可能会重叠
- Ascent Line: 上升线 字形中最高的点到基线的垂直距离。表示子母中最高部分(大写字母或某字符的上部)的位置 控制字形可以延伸到基线上方的最大距离。 它对应了线条的顶部
- Cap Line:大写字母线 表示所有大写字母的顶部所处的水平线,通常略低于上升线 控制基线与大写字形顶部之间的距离
- Mean Line:中线 表示小写字母的顶部所处的水平线,表示小写字母的标准高度 圆角字形的顶部有时会略高于中线
- BaseLine:基线 所有字母字符所处的水平线,大多数字符都在这条线的上方,除了下延字符(g、y、q 等) 控制基线的高度 基线是字符所在的水平线
- Descent Line:下行线 字形中最低的点到基线的垂直距离,表示子母中最低部分的水平线(比如字母 g 的底部) 控制字形可以延伸到基线以下的最大距离
- 特殊符号相关
- Underline Offset: 下划线偏移,下划线相对基线的位置
- Underline Thickness:下划线粗细 控制下划线的粗细
- Strikethrough Offset:删除线偏移 控制删除线相对于基线的位置
- Superscript Offset:上标偏移量 使上标文本相对基线偏移
- Superscript Size:上标大小 相对于正常字体大小缩放上标文本
- Subscript Offset:下标偏移量 是下标文本相对基线偏移
- Subscript Size:下标大小 相对于正常字体大小缩放下标文本
- Tab Width:指定 TAB 字符的宽度

2.生成静态字体资源窗口
主要作用: 将 Unity 字体资源转换为 TMP 字体资源 当生成了 TMP 字体资源后,是可以将用作源的 Unity 字体资源删除掉的 但是删除前要确定不再需要使用它来重新生成 TMP 字体了
- Source Font File 选择用于生成 TMP 字体资源的字体
- Sampling Point Size 采样点大小,设置用于生成字体纹理的字体大小(以磅为单位)
- Auto Sizing:使用尽可能大的大小,常用设置
- Custom Size:自定义大小
- Padding:填充 指定字体纹理中字符之间的间距(以像素为单位) 填充越大,过渡越平滑。
- Packing Method 打包方式 如何在字体纹理中调整字体布局
- Fast:快优先 字符打包速度快,但是字体的大小可能更小 测试字体时可以使用它
- Optimum:最佳优先 尽可能合理利用纹理中的空间保持字符最大可能的字体大小 正式要确定字体时,使用该方式
- Atlas Resolution:图集分辨率 如果只有 ASCII 字符,用 512512 即可。 中文字体时,需要更大更多的图集。(比如 10241024)
- Character Set:字符集 确定想要生成字体纹理的字符集
- ASCII:标准 ASCII 字符集(字母,数字,标点符号)
- Extended ASCII:拓展 ASCII 字符集(增加了许多特殊字符和符号)
- ASCII Lowercase:仅包含小写字母字符(a~z)
- ASCII Uppercase:仅包含大写字母字符(A-Z)
- Numbers + Symbols:包含数字(0-9)和常见的符号(如 !, @, #, $, % 等)
- Custom Range:允许用户定义一个自定义字符范围,用户可以指定要包含的 Unicode 范围, 例如选择某些特定的字符。输入十进制值或范围,比如:32-126,160,8230
- Unicode Range(Hex):允许用户输入 Unicode 范围的十六进制值,便于选择特定语言或字 符集。输入十六进制值或范围,比如:4E00-9FA5
- Custom Characters:用户可以手动输入要包含的具体字符,可以是任何字符(如字母、符号 等)
- Characters from File:从文本文件中读取字符,允许用户根据文件内容自动生成字符集,适合大量字符的处理
- Select Font Asset 选择对应的字体资源
- Character Sequence 当选择需要自己输入字体的的相关模式时,会出现
- Render Mode:渲染模式
- SMOOTH_HINTED:抗锯齿位图,字符像素和纹理像素对齐,以获得更清晰的结果,通常用于小字体 或需要精确对齐的情况
- SMOOTH:采用抗锯齿效果,提供平滑的边缘,适合大多数情况下的文本显示,能够在清晰度和性能 之间取得良好平衡
- COLOR_HINTED:基于颜色的抗锯齿效果,强调颜色的呈现,适合需要突出颜色的文本
- COLOR:不使用抗锯齿,直接渲染文本的颜色。适合在高对比度或需要清晰边缘的场景中使用
- RASTER_HINTED:位图渲染,通常用于较小字体,能够提供较高的清晰度,但在放大时可能出现模 糊
- RASTER:位图渲染,不进行抗锯齿处理,提供快速渲染,但在边缘可能出现锯齿现象
- SDF:使用带符号的距离场技术渲染,能够在缩放时保持清晰度。适合需要大范围缩放的文本
- SDF8:使用 8 位 SDF 渲染,支持更小的纹理,适合资源受限的环境
- SDF16:使用 16 位 SDF 渲染,提供更高的清晰度和更细腻的边缘,适合高质量显示
- SDF32:使用 32 位 SDF 渲染,具有最高的细节和清晰度,适合需要极高质量文本的情况
- SDFAA_HINTED:使用抗锯齿的 SDF 渲染,提供平滑的边缘和清晰的字符显示
- SDFAA:使用 SDF 渲染,但不进行抗锯齿处理,快速渲染,但可能出现锯齿
- SDF 是 Signed Distance Field 的缩写,意为“带符号距离场”。在字体渲染中,SDF 是一种技术,用于表示文本的形状和边缘信息。
- Get Kerning Pairs 用于在字体资源中获取字偶间距调整(Kerning)对。字偶间距调整是指根据相邻字符的组合来调整它们之间的间距,以实现更好的视觉效果和可读性
- Generate Font Atlas:生成字体图集
- Save:保存图集
- Save as...:另存为
三、生成设置
- Source Font File: 字体文件
- Atlas Population Mode: 纹理图集生成方式
- Static:静态模式 字体集在创建时需要一个固定的纹理图集 适合字符已知且不需要动态变化的情况。 如果你的游戏不存在中文,只有类似英文这种少量字符组成的文字时可以使用
- Dynamic:动态模式 字体纹理图集会在运行时根据需要动态生成,可以显示更多的字符 适合中文项目,或者多语言项目
- Atlas Render Mode:字体渲染模式 见字体配置信息的 生成静态字体资源窗口 中 Render Mode 的相关参数
- Sampling Point Size:采样点大小 设置用于生成字体纹理的字体大小(以磅为单位)
- Padding:填充 指定字体纹理中字符之间的间距(以像素为单位) 填充越大,过渡越平滑。
- Atlas Width/Height : 图集宽/高
- Multi Atlas Textures:是否采用多图纹理 允许在字体资源中生成多个纹理图集(Atlas),而不仅仅是一个。这样可以更灵活地管理不同字符集或不同字体样式 提高性能和内存使用效率,尤其是在需要渲染大量不同字符的情况下建议使用
- Clear Dynamic Data On Build 在构建时清除动态生成的数据 这意味着如果你选择了动态字体模式,构建时会移除不再需要的动态字符数据,以节省内存 可以减少最终构建包的大小,确保只包含必要的字符数据
四、纹理图集
- Font Atlas 生成字符资源时创建的字体纹理图集
- Font Material 生成字体资源时创建的字体材质
五、字体粗细
主要用于控制字体粗体、斜体等情况下的文本外观 可以通关关联对应的字体资源进行设置不同情况下使用的内容
这里主要用最下面几个参数
- Normal Weight:正常粗细 没有字体资源用时使用的常规字体粗细
- Bold Weight:粗体粗细 没有字体资源用时使用的粗体字体粗细
- Spacing Offset:间距偏移 使用普通文本样式时,在字符之间的间隙偏移
- Bold Spacing:粗体间隙 没有指定粗体资源时,粗体文本字符之间的间距偏移
- ltalic Style:斜体程度 400 - Regular > Italic Style 变体指定字体资源没有设置时 TMP 将使用常规样式字体资源中的字符倾斜该字段中的量来达到斜体效果
- Tab Multiple:多制表符 该值乘以字体空格符的宽度,用来表示制表符的大小
六、备用字体资源
Fallback List: 列出所有备用字体资产。 当主字体中缺少某些字符时,系统会按顺序尝试使用这些备用字体进行查找
七、字符表
字符查找 
八、字形表
- Glyph Search:字形搜索
- X、Y、W、H:字符在纹理中对应的位置范围
- W、H:字形的宽高
- BX、BY:相对基线的左上角位置
- AD:和下一个字符间隔的宽
- Scale:缩放大小
- Atlas Index:图集索引 在第几个图集中(开启了多图集时)
九、字形调整表
字形调整表控制特定字符对之间的间距 
- Adjustment Pair Search:调整对搜索
- Char 左和右:想要查找的字符
- ID 左和右:唯一标识符,一般显示左右字符的 ASCII 十进制编码
- OX 左和右:字符原点坐标 X
- OY 左和右:字符原点坐标 Y
- AX 左和右:字符的宽度
- Add New Glyph Adjustment Record: 添加新的字形调整记录