找回密码
 立即注册
查看: 3716|回复: 57

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

回帖奖励 4300 活跃度 回复本帖可获得 100 活跃度奖励! 每人限 1 次(中奖概率 80%)
  • TA的每日心情
    开心
    2026-3-16 19:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    61

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    76403
    蒙太奇字幕组 发表于 2026-3-16 20:31:50 | 显示全部楼层 |阅读模式
    本帖最后由 蒙太奇字幕组 于 2026-4-26 02:23 编辑

    大家好,我是蒙太奇字幕组的小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”

    评分

    参与人数 8活跃度 +79767 收起 理由
    darkangel0224 + 1 谢谢
    Mercury + 10086
    风萤月 + 12800
    nene908 + 800
    paul + 25600 很给力!
    萌新新 + 10240
    Orion + 10240
    shadows + 10000

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2026-3-16 19:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    61

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

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

    我们还有另外一个工具【SVG转ASS绘图指令】这也是我们制作字幕期间解决痛点开发的,可以在这里使用:https://montagesubs.github.io/svg-to-ass/  相关帖子详见: 【工具分享】基于浏览器的 SVG 转 ASS 绘图指令工具



    更新日志

    2.7 版本 https://bbs.acgrip.com/forum.php ... id=13556&pid=119556

    2.7 版本正式发布了

    这次我们主要实现了绘图指令字体的可逆转换。原先把绘图指令转换为字体后是无法还原的,现在通过把绘图指令的内容存储到字体内,实现了可还原。这对日常使用可能没有感知,但对后续维护和扩展很重要,能确保绘图指令字体的数据不会丢失。

    另外还有一些代码优化和规范调整。技术细节可以看:https://github.com/MontageSubs/a ... ICATIONS.zh-hans.md

    顺便一提,3.0 版本也在开发中,会有新的UI和毛玻璃效果(感谢 NickCollect)。

    2.6 版本 https://bbs.acgrip.com/forum.php?mod=redirect&goto=findpost&ptid=13556&pid=119309

    2.5 版本 https://bbs.acgrip.com/forum.php ... id=13556&pid=119286

    2.4 版本:https://bbs.acgrip.com/forum.php ... 19250

    2.3版本:https://bbs.acgrip.com/forum.php ... 19215

    2.0版本:https://bbs.acgrip.com/forum.php ... 19200
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2026-3-16 19:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    61

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

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

    帖子标签里那么多 ass 菊花 是闹什么?删不掉还越编辑越多
    本账号目前由蒙太奇字幕组小p管理和使用。其他成员使用时会标注发言人身份。部分发言可能包含发言人的个人观点,并不一定代表字幕组官方立场。


    蒙太奇字幕组 · MontageSubs
    “用爱发电 ❤️ Powered by Love”
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-12-4 12:48
  • 签到天数: 42 天

    [LV.5]常住居民I

    47

    主题

    2784

    回帖

    2020

    VC币

    星辰大海

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

    积分
    432865

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

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



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


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

    使用道具 举报

  • TA的每日心情
    开心
    2026-3-16 19:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    61

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    76403
    蒙太奇字幕组  楼主| 发表于 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
    本账号目前由蒙太奇字幕组小p管理和使用。其他成员使用时会标注发言人身份。部分发言可能包含发言人的个人观点,并不一定代表字幕组官方立场。


    蒙太奇字幕组 · MontageSubs
    “用爱发电 ❤️ Powered by Love”
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 00:30
  • 签到天数: 809 天

    [LV.10]以坛为家III

    20

    主题

    170

    回帖

    20

    VC币

    至尊会员

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

    积分
    250928
    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

    点评

    非常感谢,受益良多  发表于 2026-4-13 00:35
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-11-2 18:14
  • 签到天数: 31 天

    [LV.5]常住居民I

    8

    主题

    153

    回帖

    861

    VC币

    荣誉会员

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

    积分
    105148

    崭露头角

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

    点评

    非常感谢提出该点子,已经在2.0版本支持。  发表于 2026-4-13 00:36
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2026-3-16 19:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    61

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

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

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

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

    欢迎大家持续分享,期待与更多优秀的朋友一起协作开发。
    本账号目前由蒙太奇字幕组小p管理和使用。其他成员使用时会标注发言人身份。部分发言可能包含发言人的个人观点,并不一定代表字幕组官方立场。


    蒙太奇字幕组 · MontageSubs
    “用爱发电 ❤️ Powered by Love”
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    26

    回帖

    0

    VC币

    注册会员

    Rank: 2

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

    点评

    非常感谢提出该点子,已经在2.0版本支持。  发表于 2026-4-13 00:36
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    26

    回帖

    0

    VC币

    注册会员

    Rank: 2

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

    使用道具 举报

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

    本版积分规则

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