跳转到内容

字体导入:加载 TTF、OTF、WOFF 和 TTC 文件

将 TTF、OTF、WOFF 和 TTC 字体导入 SnowB BMF。了解字体回退系统、fontkit 矢量渲染和锐化功能,制作像素级完美的位图字体。

导入自定义字体才能生成高质量的位图字体。SnowB BMF 支持加载外部字体文件,给你更精确的字形渲染控制。根据字体的加载方式,应用会使用不同的渲染模式。

支持以下字体格式:

  • TTF (TrueType 字体) — 兼容性最好,推荐使用。
  • OTF (OpenType 字体) — 完全支持所有特性。
  • WOFF (Web 开放字体格式) — 适用于压缩的 Web 字体。
  • TTC (TrueType Collection) — 包含多个字体的集合文件。导入时 SnowB BMF 会弹出选择对话框,让你选择要加载的字体。

TTC 文件把多个相关字体打包在一起,比如同一字体家族的不同字重。导入流程:

  1. 自动检测:导入 .ttc 文件时,应用识别出集合格式。
  2. 字体选择对话框:弹出对话框列出集合中的每个字体,显示:
    • 全名 (Full Name) — 如 “Arial Bold”
    • 字体家族 (Font Family) — 如 “Arial”
    • 子族 (Font Subfamily) — 如 “Bold”
  3. 多选支持:用复选框选择一个或多个字体。
  4. 独立加载:选中的字体各自添加到字体列表,可单独使用或放进回退链。

SnowB BMF 支持多字体回退链。生成字形时,按导入顺序逐个查找:

  1. 主字体(第一个导入的字体)— 负责大部分字符。
  2. 次要字体 — 主字体里找不到的字符,依次到后续字体中查找。
  3. 系统字体(兜底)— 所有导入字体都没有时,用浏览器默认字体。

多语言项目特别适合这个机制。比如英文字体加上中文字体,一个位图字体就能覆盖两种字符集。

通过 “Add Font File” 按钮导入字体时,应用使用矢量渲染。底层用 fontkit 库直接解析字体轮廓数据。

为什么选 fontkit? 格式兼容性广,原生支持 TTC,可变字体处理也更好。

矢量渲染的好处:

  • 高精度字形:直接从矢量数据渲染。
  • 锐化功能:网格对齐,字形更清晰。
  • 精确度量:直接从字体元数据提取基线和测量值。
  • 自动回退:字符缺失时切换到下一个字体。
  • kerning 支持:保留字偶距对,间距更专业。

字体无法作为矢量文件解析时,回退到浏览器的 Canvas 文本渲染(measureText() + fillText())。

Canvas 渲染的局限:

  • 锐化不可用:没有矢量数据,锐化滑块会禁用。
  • 浏览器差异:不同浏览器的渲染结果可能不一样。
  • 精度有限:依赖浏览器的文本测量 API。

“锐化”功能:实现像素级的清晰度

Section titled ““锐化”功能:实现像素级的清晰度”

锐化是矢量渲染的一大优势,通过网格对齐算法让字形更清晰,小尺寸下效果明显。

锐化会调整字形的矢量路径,让它们对齐像素网格。

  • 对齐强度:0-100% 的百分比控制。
  • 网格对齐:矢量坐标对齐到最近的像素边界。
  • 路径优化:调整控制点,曲线和线条更清晰。
  • 减少模糊:抗锯齿伪影变少,小字号文本更锐利。
  • 0%:无对齐,保留原始字形形状。
  • 50%:中等对齐,平滑度与清晰度兼顾。
  • 80%:默认值,适合大多数场景。
  • 100%:最大对齐,适合像素艺术风格。

注意:锐化仅对导入的矢量字体生效。

  1. 导入字体文件:想要最好的质量和控制力,用”添加字体文件”功能。
  2. 规划回退链:先导入主字体,再加辅助字体补充字符集。
  3. 善用 TTC:有 TTC 文件的话,导入一次选需要的字重就行。
  4. 锐化从 80% 起步:大多数情况效果不错,再根据字体大小和分辨率微调。
  5. 测试字符覆盖:检查字体组合是否覆盖了所有必需字符。
  6. 在目标尺寸预览:锐化效果在最终分辨率下看得最清楚。

锐化滑块被禁用了?

  • 还没导入矢量字体。用”添加字体文件”按钮添加一个。

字体看起来模糊?

  • 试试提高锐化百分比。也检查下预览尺寸是否和最终显示分辨率一致。

有些字符丢失了?

  • 导入的字体可能不包含那些 Unicode 字符。把包含缺失字符的字体加到回退链里。

字体导入失败?

  • 检查文件格式(TTF、OTF、WOFF 或 TTC),确认文件没损坏。

导入 TTC 文件后没反应?

  • 在选择对话框里至少选中一个字体再点”加载”。对话框没出现的话,文件可能不是有效的 TTC。