网站可能被墙,请记住以下域名:subhd.me subhd.one
【工具分享】基于浏览器的ASS字幕字体子集化工具
蒙太奇字幕组
2026年3月16日 19:08

大家好,我是蒙太奇字幕组的小p。去年八月从事字幕制作后不久,在咱们的这个 SubHD 论坛 ( https://subhd.tv/forum/f/84307 ) 看到有人提到字体子集化,那是我第一次接触到这个概念。

如今我专门开发了一个网页工具,实现基于浏览器的 ASS字幕字体子集化,帮助大家无需安装软件就能实现字体子集化功能。

这个帖子重点分为两部分:解释什么是字体子集化,以及我的发现思路。如果你只是想要使用工具,请直接看最下方的链接。



【什么是字体子集化?】

ASS 特效字幕里自定义字体很常见,但自定义后观众需要在设备上安装相应字体。桌面可以随意安装,手机和电视等封闭系统就麻烦了。

为了避免让观众安装字体,常见的解决办法有三种:

1. 把字体嵌入 ASS 字幕。问题是中文字体字量庞大,会把原本几百 KB 的字幕膨胀到 15MB 到 50MB;
2. 转为 .sup/.sub 的图形字幕。会失去可编辑性,改错字只能重做生成,并且播放时快进快退还可能出现卡顿;
3. 把字体和字幕封装进 MKV。既增大体积又不可编辑,融合了上面两种方法的缺点。

以上方法还有一个共同痛点:需要使用专用工具,很多甚至只有命令行界面,门槛高。

字体子集化的原理很简单:把字体中没有在字幕里使用的字符删除,只保留字幕实际用到的字符。典型中文字体有一万到七万字,但一个字幕常用字大概只有两千左右。把不用的字去掉后,嵌入字体的体积会大幅缩小。以前嵌入一个中文字体可能需要 25MB,现在处理后可以降到 1MB 甚至更小。



【为什么这项技术没被广泛使用?】

早期只能用命令行,近年有人做了带界面的桌面软件,这对推广这项技术很有帮助,很感谢那些投入时间的开发者们。

我想分享一下自己的体验。我了解这个功能已有半年,但一直没有采用,主要是因为需要安装软件。安装说起来简单,但意味着还要学习软件的使用方法。更重要的是,每次修改字幕后都需要重新子集化,这无形中增加了制作流程的成本。对于像我这样倾向于简化工作的人来说,这些因素足以让我暂时搁置这个想法。

我觉得这可能也是许多人还没有用字体子集化的原因,这正是我后来决定探索浏览器实现方案的初衷。



【为什么做成浏览器工具?】

做《至尊马蒂》字幕时 ( https://subhd.tv/a/s6wlH8 ),我第一次深入研究子集化。为了实现极致特效,我们用了大量绘图指令和动态追踪,结果 ASS 文件膨胀到 20MB(真的是 .ass)。为了解决体积问题,我写了一个 Python 脚本,把近 600 个重复的图形指令替换为 12 个字体字符,字幕从 20MB 降到 1MB。脚本虽然可用,但命令行门槛较高,实际使用者很少,基本只有我在用。于是我着手将其移植到浏览器,起初目的是缩小图形指令体积,随后把重心扩展到字体子集化,最终在浏览器端实现了两者的子集化,可能是首次有人这样做。



【网页工具能做什么?】

- 上传要子集化的 ASS 字幕;
- 自动分析字幕中是否包含图形指令和非系统字体,并提示是否进行子集化;
- 把图形指令子集化为字体并嵌入字幕以复用减少体积;对第三方字体会提示上传字体文件,浏览器端剥离实际使用的字符并嵌入字幕。

为了体验更好,我采用了一些现代 web 标准,页面可添加到任务栏或主屏幕,启动速度接近本地应用。桌面浏览器下支持离线使用(没错,加载完网页后可以拔掉网线继续用)。工具完全在浏览器本地运行,字幕和字体不会上传到服务器。已开源并部署在 GitHub Pages。



【在哪里使用?】

https://montagesubs.github.io/ass-subset/



欢迎反馈与帮助。我们希望通过这个工具降低字幕制作门槛,完善基础设施,推动字幕生态更繁荣。

如果你觉得有用,欢迎分享给更多人,也欢迎一起做字幕。



蒙太奇字幕组 (MontageSubs)
“用爱发电 ❤ Powered by Love”
发表留言 共 10 条

蒙太奇字幕组
我们的子集化工具目前主要为字幕制作完成后的嵌入字体环节设计,整个流程是围绕字幕制作工作而构建的。之前群内提到的,如果工作流涉及 MKV 打包,这个工具就很难直接适用,主要原因有两点: 1. 无法处理多字幕合并:当一个 MKV 包含多集动漫(比如 10 集动漫在一个文件中有 10 个字幕)时,工具无法把这些字幕的字符集合并,生成一个统一的子集化字体。 2. 缺少独立字体输出:虽然 UI 里有字体下载功能,但那本质上是用于调试字体问题的。工具目前不支持直接输出子集化后的字体文件供 MKV 打包流程使用(字体是嵌入在字幕内,而非独立提供)。 所以我想了解一下大家的实际使用场景:你们对这类"多字幕合并成一个字体"的需求是否比较常见?这会帮我们评估是否值得扩展工具功能。
2026-6-12 17:46

RobCop
赞,开源吗?
2026-5-29 08:47
蒙太奇字幕组
是的,完全开源,右下角有通往Github的链接
2026-6-12 17:46

Orenji
感谢,感觉是目前字幕子集化工具里最好用的
2026-4-24 14:36
蒙太奇字幕组
你好,我是小p,感谢你的支持。这一个月来我几乎每天都在根据大家的反馈改进,代码更新得很频繁,哈哈。现在功能应该比较稳定了,如果后续遇到任何问题或bug也欢迎继续反馈。
2026-4-30 01:36

蒙太奇字幕组
2.6 版本正式发布了 这次我们实现了论坛字幕作者们期待的功能——字幕字体随机化支持。为了防止映射表丢失,我在字体表 ID 10 字段加入了 YAML 格式的映射数据: FontSubsetMap: {original: 思源黑体, subset: QTSGQJIO, ass-subset: 2.6} 分别记录原始字体名、随机后的名字,以及生成工具版本。这样既能兼容其他开发者的字幕子集化软件,又能确保字体映射不会丢失。 第二个功能是按字重生成独立字体。现在支持为不同字重各自生成独立字体文件,播放器就能使用真实字重而不是合成字重,显示效果更好。这是可选功能,因为会增加嵌入字体数量,但能让 libass 更好地选择对应字体。 另外还有一些代码优化和 bug 修复。 欢迎使用!
2026-4-23 03:48

蒙太奇字幕组
ASS 字幕子集化工具 v2.3 正式发布 基于大家的建议,v2.3 新增了 5 大功能: 新功能一览: 1. 批量去除子集化 - 快速清除已子集化的字体; 2. 字体下载服务 - 预览后即可下载子集化字体; 3. 文件夹上传 - 支持拖拽上传整个文件夹,批量处理效率翻倍; 4. 现代字体格式 - 新增 WOFF/WOFF2 格式支持; 5. 灵活命名方案 - 下载时可自由选择添加后缀或保持原名。
2026-4-14 04:44

蒙太奇字幕组
2.0 版本重磅更新 感谢大家的支持和建议,新版本实现了以下核心功能: 批量字幕子集化处理 — 一次操作完成多个文件 (感谢 @sillonae 提议) 智能字体加载 — Chrome 和 Edge 浏览器自动识别系统字体,无需上传 (感谢 @zxj999 提议) 多线程加速引擎 — 处理速度显著提升,批量文件处理效率翻倍 实时字体预览 — 直接查看最终效果,免除加载步骤 系统字体嵌入支持 — 灵活选择是否嵌入系统安装的字体 此外还有众多细节优化和性能改进,欢迎体验。 额外惊喜:我们正式推出【基于浏览器的 SVG 转 ASS 绘图指令工具】,点击( https://subhd.tv/forum/f/84793 )查看详情。 特别感谢 @op200 在字体元数据提取上的代码思路,以及 @MoYuanCN 提供的大规模测试数据(40万行字幕文件),帮助发现并修复了工具在极端场景下的缺陷。
2026-4-13 00:38

Kicom
试了,挺好用的,多一个选择,感谢
2026-4-11 12:37

蒙太奇字幕组
我们还有另外一个工具【SVG转ASS绘图指令】这也是我们制作字幕期间解决痛点开发的,稍后过几天我们会再写一篇帖子解释那个。 不过,你现在就可以先使用了:https://montagesubs.github.io/svg-to-ass/
2026-3-16 19:27

最新评论