本帖最后由 蒙太奇字幕组 于 2026-3-17 01:11 编辑
大家好,我是蒙太奇字幕组的小p。我们于2025年8月成立,不是传统字幕组,而是由字幕爱好者与影评人组成的平等社区。我们以开源和热情为驱动,专注精致翻译与特效制作,同时讨论和研究影视中的艺术场景与镜头。
我们主要做欧美影视作品,来 Anime 论坛是因为坛里的 @wyzdwdz 的 assfonts 和 @jensen 的 Sub Font Manager 项目在理解字体子集化概念与实现上给了我很大帮助,也为我后来开发的“基于浏览器的 在线ASS字幕字体子集化 工具”工具提供了灵感,在此特别感谢并分享成果,希望能够回哺论坛帮助更多人。
我开发了一个网页工具,能在浏览器内完成 ASS 字幕的字体子集化,无需安装额外软件。
本帖分两部分:解释什么是字体子集化,和我的发现思路。若只想使用工具,请直接看帖底链接。
【什么是字体子集化?】
ASS 特效字幕里自定义字体很常见,但自定义后观众需要在设备上安装相应字体。桌面可以随意安装,手机和电视等封闭系统就麻烦了。
为了避免让观众安装字体,常见的解决办法有三种:
1. 把字体嵌入 ASS 字幕。问题是中文字体字量庞大,会把原本几百 KB 的字幕膨胀到 15MB 到 50MB;
2. 转为 .sup/.sub 的图形字幕。会失去可编辑性,改错字只能重做生成,并且播放时快进快退还可能出现卡顿;
3. 把字体和字幕封装进 MKV。既增大体积又不可编辑,融合了上面两种方法的缺点。
以上方法通常需要专用工具来处理,早期实现以命令行为主,后来也出现了带界面的桌面软件。
字体子集化的原理很简单:把字体中没有在字幕里使用的字符删除,只保留字幕实际用到的字符。典型中文字体有一万到七万字,但一个字幕常用字大概只有两千左右。把不用的字去掉后,嵌入字体的体积会大幅缩小。以前嵌入一个中文字体可能需要 25MB,现在处理后可以降到 1MB 甚至更小。
【为什么这项技术没被广泛使用?】
早期只能用命令行,近年有人做了带界面的桌面软件,这对推广这项技术很有帮助,很感谢那些投入时间的开发者们。
我想分享一下自己的体验。我了解这个功能已有半年,但一直没有采用,主要是因为需要安装软件。安装说起来简单,但意味着还要学习软件的使用方法。更重要的是,每次修改字幕后都需要重新子集化,这无形中增加了制作流程的成本。对于像我这样倾向于简化工作的人来说,这些因素足以让我暂时搁置这个想法。
我觉得这可能也是许多人还没有用字体子集化的原因,这正是我后来决定探索浏览器实现方案的初衷。
【为什么做成浏览器工具?】
做《至尊马蒂》字幕时,我第一次深入研究子集化。为了实现极致特效,我们用了大量绘图指令和动态追踪,结果 ASS 文件膨胀到 20MB(真的是 .ass)。为了解决体积问题,我写了一个 Python 脚本,把近 600 个重复的图形指令替换为 12 个字体字符,字幕从 20MB 降到 1MB。脚本虽然可用,但命令行门槛较高,实际使用者很少,基本只有我在用。于是我着手将其移植到浏览器,起初目的是缩小图形指令体积,随后把重心扩展到字体子集化,最终在浏览器端实现了两者的子集化,可能是首次有人这样做。
【网页工具能做什么?】
- 上传要子集化的 ASS 字幕;
- 自动分析字幕中是否包含图形指令和非系统字体,并提示是否进行子集化;
- 把图形指令子集化为字体并嵌入字幕以复用减少体积;对第三方字体会提示上传字体文件,浏览器端剥离实际使用的字符并嵌入字幕。
为了体验更好,我采用了一些现代 web 标准,页面可添加到任务栏或主屏幕,启动速度接近本地应用。桌面浏览器下支持离线使用(没错,加载完网页后可以拔掉网线继续用)。工具完全在浏览器本地运行,字幕和字体不会上传到服务器。已开源并部署在 GitHub Pages。
【在哪里使用?】
https://montagesubs.github.io/ass-subset/
欢迎反馈与帮助。我们希望通过这个工具降低字幕制作门槛,完善基础设施,推动字幕生态更繁荣。
如果你觉得有用,欢迎分享给更多人,也欢迎你加入我们的社区一起聊影视做字幕。
蒙太奇字幕组 (MontageSubs)
“用爱发电 ❤ Powered by Love”
|