静态字体字形 SVG 导出
从支持的静态 TrueType 字体选取字形或码位,导出完整曲线边界的 SVG 和含名称、声明指标与码位状态的 JSON ZIP。
- 1添加输入
- 2调整设置
- 3获取结果
工具输入和文件在当前浏览器处理,不会上传。
开始之前
完整曲线资产需要曲线边界,而不只是字体行高。先确认支持格式和选取方式,再查看未覆盖状态并下载完整 ZIP。
如何使用
- 选择一份支持的静态 TTF;字体原件保持不变。
- 输入字形 ID 或 Unicode 码位,设置整数留边。两个列表的并集决定输出字形。
- 核对选中字形、未覆盖码位和指标范围;下载 ZIP 查看每个 SVG 与完整 JSON。
支持范围与限制
仅单 face 的 sfnt 0x00010000 静态 TTF:glyf 二次曲线及有限无环 XY 仿射复合字形;原件最多 16MiB。CFF/CFF2、TTC、WOFF/WOFF2、可变、彩色、位图或内嵌 SVG 字体、点对齐复合字形与 cmap 2/8/10/14 不支持。
ID 为十进制非负整数;码位为十进制或 U+ 加 1–6 位十六进制字符,以空白或逗号分隔。两个列表合计最多 2,000 项,分别不允许重复;不支持范围缩写。码位须为 Unicode scalar;映射不到非零字形时显式记录未覆盖,不生成替代字形。留白只省略该列表;至少指定一项。
最多选中 2,000 个字形、200,000 条 M/L/Q/Z 命令、200,000 个展开控制点、200,000 次组件访问、32 层复合深度。SVG 留边为 0–4,096 个字体单位。完整 SVG+JSON 合计最多 32MiB;2000 SVG+report.json 共 2001 个成员,STORE ZIP 最多 33,766,552 字节。组合输入可能先触及另一项预算。
坐标保留原 glyf 设计网格,SVG 反转 Y 轴;曲线边界由 float64 推导并显式向外加数值保护,不是无损数值运算。advance/lsb 为原 hmtx 声明值;不应用 USE_MY_METRICS、hinting、排版塑形、kerning 或栅格化布局。不会执行字体指令,也不校验全字体 checksum 或安装完整性。
cmap 支持 0/4/6/12/13;先选有限 Unicode 优先表,Mac 字符映射只支持已声明的 Apple 表和语言/编码组合,不以 ISO 或未知语言回退猜测。Arabic/Hebrew 的方向、重复、多标量或字体变体歧义会原子提示不支持;可改用有效字形 ID。post 1/2/2.5/3 支持名称;post 4/未知格式、非 ASCII 自定义名称、保留索引及非法 XML 控制字符不支持。名称中的 TAB/LF/CR 保留,CR 在 SVG 中写为 。
表格预览前 200 个字形,并将长单元格限定为前 2,000 个 UTF-16 单位。JSON 超过 20,000 字符时复制的是明确摘要;ZIP 中 report.json、每个 SVG、全部命令、声明指标与码位状态始终完整。空轮廓保留 emptyOutline、bbox=null 和无 path SVG,不伪造曲线。
操作示例
示例输入
sample-static-glyf.ttf
示例参数
{"params":{"glyphIds":"2 3","codePoints":"U+0041 U+10FFFF","padding":4}}示例输出
2 个字形;U+0041 已覆盖,U+10FFFF 未覆盖;完整 SVG 与 JSON ZIP。
出现问题时
检查真实字体格式、ID 范围、码位 scalar、重复项和整数留边。不支持的 Mac 码位可改用已确认的字形 ID;超限则缩减完整选取或换支持的输入。失败或取消无部分 ZIP;修正后重新运行同一原件。
常见问题
为什么曲线边界不同于 ascent/descent 或 hmtx?
ascent/descent 是全字体声明,advance/lsb 是排版指标。单字形尾部或重音可超出这些区域;本工具按完整二次曲线和复合变换计算 SVG viewBox,同时保留原声明指标。
能用这个 SVG 代替字体排版吗?
它们是孤立的设计网格轮廓资产,没有塑形、kerning、hinting 或有效 USE_MY_METRICS 处理。文本布局和光栅化应由合适的字体引擎完成。
Mac 名称或码位歧义怎样处理?
公开有限映射范围内才按 Apple 表选择。方向或字体上下文不足、未知或不匹配语言/编码时会原子提示不支持,绝不替换成 ISO 表。改用正确字形 ID 可导出轮廓并保留名称与指标。