布局设置:间距、填充与页面配置
配置位图字体的布局,包括间距、内边距和对齐选项,以生成最佳的纹理图集。
布局设置决定字形怎么摆到纹理图集里,跟输出质量、文件大小、运行时性能都有关系。
布局配置管三件事:
- 内边距 (Padding):字形周围的透明空间,防止颜色溢出。
- 间距 (Spacing):相邻字形之间的空隙,影响打包效率。
- 页 (Pages):纹理图集图像数量,系统自动管理。
内边距 (Padding)
Section titled “内边距 (Padding)”默认值:1 像素
内边距给每个字形加一圈透明边框。字体缩放或做纹理过滤时,没有内边距容易出现颜色混合之类的瑕疵。
- 防止溢出:相邻字形在纹理采样时不会颜色混合。
- 改善缩放:字体放大缩小时渲染更清晰。
- 支持过滤:给双线性或三线性纹理过滤留缓冲区。
- 标准:1-2 像素,够用了。
- 高分屏/Retina:2-4 像素。
- 大幅缩放:按需加大。
- 注意:内边距越大,纹理尺寸越大。
内边距 = 0: 字形可能会相互溢出。内边距 = 1: 适用于大多数项目的标准安全边距。内边距 = 2: 为高质量渲染提供额外缓冲。间距 (Spacing)
Section titled “间距 (Spacing)”默认值:1 像素
间距是相邻字形边界框之间的空隙,让打包算法排列字形更高效。
- 打包效率:一致的间距有助于算法排列。
- 调试:在图集中更容易看清单个字形。
间距 vs. 内边距
Section titled “间距 vs. 内边距”两者一起决定字形之间的实际距离:
- 内边距属于字形自身空间的一部分。
- 间距是两个字形空间之间的缝隙。
- 总分隔距离 = 字形 1 的内边距 + 间距 + 字形 2 的内边距
- 标准:1-2 像素,大多数字体够用。
- 紧密打包:0-1 像素,纹理最小,但可能有瑕疵。
- 调试:4-8 像素,字形边界一目了然。
分页 (Pages)
Section titled “分页 (Pages)”默认值:1 页
字形放不进一个纹理时,系统会自动分到多个页面。
何时需要多页?
Section titled “何时需要多页?”- 大型字符集:比如包含数千个字形的 CJK 字体。
- 纹理大小限制:硬件有上限(如 4096x4096 像素)。
系统自动管理分页,尽量让纹理空间利用率最高。
- 性能:每多一个页面就多一次纹理切换。
- 单页:大多数拉丁字符集放进一个 512x512 或 1024x1024 的纹理没问题。
对导出文件的影响
Section titled “对导出文件的影响”布局设置会写进导出的字体文件(如 .fnt):
- 内边距:对应 BMFont
info块的padding属性。 - 间距:影响图集中每个字符的 x/y 位置和偏移量。
- 页:决定描述符引用多少个纹理文件。
- 从默认值开始:1px 内边距 + 1px 间距,按需调整。
- 在目标尺寸下测试:看字体在最终渲染大小下的实际效果。
- 为缩放预留:运行时要缩放的字体,内边距留大一些。
- 平衡质量和大小:视觉质量和内存不能只顾一头。
- 桌面:2px 内边距 + 1px 间距。
- 移动端:1px 内边距 + 1px 间距,省内存。
- 高分屏:内边距 2px 起步。
- 字形溢出/瑕疵:加大内边距。
- 纹理图集太大:缩小字体、减少字符集,或者允许更多页。
- 打包效率低:调一下间距。
- 大量字形渲染慢:可能页数太多,试着把字形塞进更少的纹理。