找回密码
 立即注册
查看: 842|回复: 12

【工具分享】基于浏览器的ASS字幕字体嵌入子集化工具

1

主题

6

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
56979
蒙太奇字幕组 发表于 2026-3-16 20:31:50 | 显示全部楼层 |阅读模式
本帖最后由 蒙太奇字幕组 于 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”

评分

参与人数 5活跃度 +56880 收起 理由
nene908 + 800
paul + 25600 很给力!
萌新新 + 10240
Orion + 10240
shadows + 10000

查看全部评分

回复

使用道具 举报

1

主题

6

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
56979
蒙太奇字幕组  楼主| 发表于 2026-3-16 20:41:57 | 显示全部楼层
本帖最后由 蒙太奇字幕组 于 2026-3-16 20:58 编辑

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

使用道具 举报

1

主题

6

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
56979
蒙太奇字幕组  楼主| 发表于 2026-3-16 21:36:16 | 显示全部楼层
本帖最后由 蒙太奇字幕组 于 2026-3-16 21:43 编辑

帖子标签里那么多 ass 菊花 是闹什么?删不掉还越编辑越多
回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火 发表于 2026-3-17 00:41:07 | 显示全部楼层
蒙太奇字幕组 发表于 2026-3-16 21:36
帖子标签里那么多 ass 菊花 是闹什么?删不掉还越编辑越多



进纯文本模式编辑,编辑完取消就是预览效果)


-------------------------
感谢开源,正在光速重写&合并入自己的workflow中
回复

使用道具 举报

1

主题

6

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
56979
蒙太奇字幕组  楼主| 发表于 2026-3-17 01:06:58 | 显示全部楼层
孤雨独火 发表于 2026-3-17 00:41
进纯文本模式编辑,编辑完取消就是预览效果)

> 进纯文本模式编辑,编辑完取消就是预览效果)

谢谢告知,不过试了,还是不行,可能是某种bug。

> 感谢开源,正在光速重写&合并入自己的workflow中

不客气,但是如果你要集成的话可以考虑 python 自动化解决方案不是更好?我们字幕组是全部在 GitHub 自动化的,未来也打算开发自动字体子集化工具,当前仅开发了两个这个项目的前期雏形【绘图指令子集化】和【子集化字幕字体再提取】(用于我开发期间调试、排错),具体可见这里:https://github.com/MontageSubs/ass-tools

未来自动化 python 脚本也会放到这里。


也欢迎你分享你的开发,或者和我一起完善这个项目 (目前该项目待填的坑在这里: https://github.com/MontageSubs/ass-subset/issues ),更欢迎你加入我们社区一起讨论。



点评

额那倒不是,是在你们仓库里发现了别的好玩的东西  发表于 2026-3-17 12:06
回复

使用道具 举报

20

主题

164

回帖

20

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
244783
op200 发表于 2026-3-17 05:03:28 | 显示全部楼层
蒙太奇字幕组 发表于 2026-3-17 01:06
> 进纯文本模式编辑,编辑完取消就是预览效果)

谢谢告知,不过试了,还是不行,可能是某种bug。

Python 子集化库+自动化我写过,可以直接从 pip 安装 pip install easyrip
仓库: https://github.com/op200/EasyRip

从命令行调用和从api调用都行
subset 函数: https://github.com/op200/EasyRip ... _font/subset.py#L29
或者调用处理命令的 api : https://github.com/op200/EasyRip ... rip/__init__.py#L29

回复

使用道具 举报

8

主题

151

回帖

765

VC币

荣誉会员

Rank: 14Rank: 14Rank: 14Rank: 14

积分
104874

崭露头角

sillonae 发表于 2026-3-17 20:49:25 | 显示全部楼层
要是字幕文件能批量子集化就好了
回复

使用道具 举报

1

主题

6

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
56979
蒙太奇字幕组  楼主| 发表于 2026-3-18 02:10:29 | 显示全部楼层
统一回复:非常感谢大家的支持!

特别感谢 @shadows 的最初评分,使我能在帖子中附上链接并快速晋升新人,深表感谢。 shadows 、 @op200 ,你们的工具都很棒,是否有兴趣一起合作开发?也欢迎加入我们在 Telegram 的社区(此处不便贴链接,字幕组织仓库里能找到入口)。

@sillonae :批量功能初期可能先在 Python 脚本中实现,视需求再移植到浏览器端。

欢迎大家持续分享,期待与更多优秀的朋友一起协作开发。
回复

使用道具 举报

9

主题

24

回帖

0

VC币

新手上路

Rank: 1

积分
377
zxj999 发表于 2026-3-19 00:18:59 | 显示全部楼层
要是能同步电脑里的字体整合包就舒服了
回复

使用道具 举报

9

主题

24

回帖

0

VC币

新手上路

Rank: 1

积分
377
zxj999 发表于 2026-3-19 01:30:53 | 显示全部楼层
请问在哪里可以找到APPLE TV INFUSE 内置的字体有哪些?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表