找回密码
 立即注册
12
返回列表 发新帖

论字幕字体子集化真正需求

该用户从未签到

1

主题

82

回帖

10

VC币

中级会员

Rank: 3Rank: 3

积分
4634
122490165 发表于 昨天 19:10 | 显示全部楼层
本帖最后由 122490165 于 2026-7-2 19:11 编辑

我字幕字体子集化一直用的是论坛里这个软件,只能说子集化适合动漫收藏党吧https://bbs.acgrip.com/forum.php ... 0%E9%9B%86%E5%8C%96
回复

使用道具 举报

  • TA的每日心情
    慵懒
    1 小时前
  • 签到天数: 818 天

    [LV.10]以坛为家III

    20

    主题

    173

    回帖

    20

    VC币

    至尊会员

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

    积分
    251351
    op200 发表于 昨天 22:36 | 显示全部楼层
    子集化不仅仅是为了缩小体积,更是为了渲染一致性

    原本 ass 依赖的家族名子集化后修改为新的家族名,这样才能保证用户看到的效果和制作者看到的效果一致,否则如果系统中有重名但内容不同的字体,则会导致渲染效果不一致

    硬字幕和pgs之类的位图字幕更是史中史,除非你的屏幕<=1080p 或者是手机那种小屏幕,否则画面缩放后字幕的边缘会非常糊,屏幕分辨率越高越明显

    所谓缺乏可编辑性、跨平台性等等劣势,根本不是子集化带来的,而是 ass 规范本身就有问题,子集化反而是能保证 ass 在客户端渲染时必须的

    如果说子集化无用,那云端获取字体的方案只能是更差,既不能保证一致性,又引入了不可靠的额外依赖,属实是两头不讨好

    话又说回来,既然这方面的用户都能接受字体从云端获取了,为啥还要在本地放字幕文件?干脆字幕文件也放云端算了。既然字幕文件都在云端了,为啥不在云端提前子集化?还省流量和保证一致性。然后问题就又绕回子集化的作用了
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    1 小时前
  • 签到天数: 818 天

    [LV.10]以坛为家III

    20

    主题

    173

    回帖

    20

    VC币

    至尊会员

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

    积分
    251351
    op200 发表于 昨天 22:42 | 显示全部楼层
    本帖最后由 op200 于 2026-7-2 22:44 编辑
    op200 发表于 2026-7-2 22:36
    子集化不仅仅是为了缩小体积,更是为了渲染一致性

    原本 ass 依赖的家族名子集化后修改为新的家族名,这样 ...

    不得不吐槽某些制作者的制作流程,项目中需要新字体时,就随便打一个脑子里闪现出的字体名,结果一个项目里塞几十个字体,其中重复的就占2/3,例如长得几乎一样的黑体能塞五六个,也不检测 \b1 调不同的字重,ass 制作完后就一股脑直接发布,各种缺字、家族名冲突、字重不一致也不管

    同一个 ass 中就已经这么乱了,同一季中甚至每个 ass 用的字体都大相径庭,多人制作时制作者之间用的字体也不一样,甚至有的人没装字体自己也不知道

    即使子集化了,观众看到的渲染内容跟制作者看到的也不一样,这子集化还有啥用?

    别说子集化了,连内嵌都嵌不好,硬字幕里各种缺字也没人检查,字都渲染出屏幕外了

    回复

    使用道具 举报

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

    [LV.1]初来乍到

    4

    主题

    74

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    76432
    蒙太奇字幕组  楼主| 发表于 2 小时前 | 显示全部楼层
    萌混過關 发表于 2026-7-2 18:08
    什麽是字幕子集化?会对ass字幕文件的内容行,造成什么改动吗?

    ASS 字幕格式支援自訂字型,也支援內嵌字型。

    如果把字型嵌入字幕檔,播放器通常會先載入 ASS 字幕內指定的字型;如果找不到,會再去找 MKV 內嵌的字型;若還是沒有,才會回退到系統字型庫(或播放器自帶的字型庫)。

    不過,CJK 字型通常都很大,動輒十幾甚至幾十 MB。像思源黑體大約就有 24MB,裡面包含 4~6 萬個字元;但一段字幕實際會用到的字元其實很少,通常最多也就 2000 個左右。所謂「子集化」,就是把字型中字幕實際用得到的字元抽出來,讓原本 24MB 的字型縮小到 1MB 甚至更小。

    接著再利用 ASS 字幕本身的字型嵌入功能,把裁剪後的字型塞進字幕裡,這樣就能做到理論上最精簡、也最優雅的體積。

    這就是字幕字型子集化工具在做的事。


    這個 acgrip 論壇大概是討論字幕字型子集化最多的論壇之一,裡面也有不少提供相關功能的開源工具;其中最受歡迎的幾個 Github 專案,如果你有興趣,可以再深入看看:


    assfonts:
    https://bbs.acgrip.com/thread-9897-1-1.html

    MkvAutoSubset:
    https://bbs.acgrip.com/thread-9070-1-1.html

    还有这个:
    AssFontSubset
    https://github.com/AmusementClub/AssFontSubset

    上面三個專案是目前社群最主流的子集化工具,第三個則是一個字幕組自己長期在用的工具。




    接著回答你的第二個問題:「會對 ASS 字幕檔內容造成什麼改動嗎?」

    會的。一般來說,嵌入字型之後,ASS 字幕檔的體積會明顯變大,裡面也會多出一個名為 [Fonts] 的段落,底下放的是經過 UUE 編碼的二進位字型資料。

    不過,因為子集化其實不算是很優雅的解法:如果同一個 MKV 裡有多個各自子集化過的字幕,播放器在載入同一支影片時,假設它先從第一個字幕讀到了「思源黑體」,那大概率不會再從第二個字幕重新載入一次同名字型。可第二個字幕的子集內容如果和第一個不一樣,就可能因此出現缺字。

    於是,上面那些子集化工具的作者就想到一個很有趣的解法:把每個字幕內嵌的字型名稱改成隨機名稱,比如 UGDCUYAS,而不是直接叫「思源黑體」。這樣播放器就會把它當成新字型,重新載入,而不是重用快取資料。

    但這也代表字幕會被改得更多,不只字型本身會變,ASS 裡所有指定字型的行也都要一併修改,例如把「思源黑體」改成「UGDCUYAS」。

    不過,去除子集化的工具通常都能把這件事逆向還原,像是 @tonyhsie 長期維護了 10 年的 ListAssFonts,以及我開發的瀏覽器子集化工具,都有辦法做到。

    如果你想實際測試一下,也順便打個小廣告,可以試試我的工具:不用安裝、完全離線,只要上傳一個 ASS 字幕,再上傳字幕內需要的字型,按下轉換,就能直接看到整個過程發生了什麼 :https://subs.js.org/ass-subset/



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


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

    使用道具 举报

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

    [LV.1]初来乍到

    4

    主题

    74

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    76432
    蒙太奇字幕组  楼主| 发表于 2 小时前 | 显示全部楼层
    QH7B 发表于 2026-7-2 18:33
    感觉不需要频繁修改字幕的场景,例如制作媒体库,可以内封PGS图形字幕,这样既不需要字体也不会破坏画面。
    ...

    其实 PSG 字幕是位图的,而不是像是 ASS 字体那样矢量(可以无限不失真放大)的,如果 1080p 视频放到 4K 播放器上,PSG 字幕字体边缘会有明显的锯齿,因为它分辨率还是 1080p,无法随播放窗口增大。
    本账号目前由蒙太奇字幕组小p管理和使用。其他成员使用时会标注发言人身份。部分发言可能包含发言人的个人观点,并不一定代表字幕组官方立场。


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

    使用道具 举报

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

    [LV.1]初来乍到

    4

    主题

    74

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    76432
    蒙太奇字幕组  楼主| 发表于 2 小时前 | 显示全部楼层
    122490165 发表于 2026-7-2 19:10
    我字幕字体子集化一直用的是论坛里这个软件,只能说子集化适合动漫收藏党吧https://bbs.acgrip.com/forum.p ...

    是的 assfonts 非常棒,是把这项技术推广普及的重要推动者。

    但是说到收藏,难道收藏只存干净 ASS 字幕,然后安装字体不是更优雅吗?因为这样即便改动字幕也无需再去子集化一遍,并且没有冗余。
    本账号目前由蒙太奇字幕组小p管理和使用。其他成员使用时会标注发言人身份。部分发言可能包含发言人的个人观点,并不一定代表字幕组官方立场。


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

    使用道具 举报

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

    [LV.1]初来乍到

    4

    主题

    74

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    76432
    蒙太奇字幕组  楼主| 发表于 1 小时前 | 显示全部楼层
    op200 发表于 2026-7-2 22:36
    子集化不仅仅是为了缩小体积,更是为了渲染一致性

    原本 ass 依赖的家族名子集化后修改为新的家族名,这样 ...

    其实我认为渲染一致性可能是一个合适的理由,但是缩小体积并不是,因为如果用户安装了字体,那么安装字体成本是一次性的,子集化不是,子集化字幕,每个字幕都包含字体的碎片,如果有上百个字幕,加在一起总数会比安装字体更大。

    “如果系统中有重名但内容不同的字体,则会导致渲染效果不一致”是什么意思?能否具体解释下?我似乎没有见过这种场景,不过即便这样,那是用户自己安装了错误的字体,也不应该为了一个人去改变所有人吧?



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


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

    使用道具 举报

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

    [LV.1]初来乍到

    4

    主题

    74

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    76432
    蒙太奇字幕组  楼主| 发表于 1 小时前 | 显示全部楼层
    op200 发表于 2026-7-2 22:42
    不得不吐槽某些制作者的制作流程,项目中需要新字体时,就随便打一个脑子里闪现出的字体名,结果一个项目 ...


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


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

    使用道具 举报

  • TA的每日心情
    慵懒
    1 小时前
  • 签到天数: 818 天

    [LV.10]以坛为家III

    20

    主题

    173

    回帖

    20

    VC币

    至尊会员

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

    积分
    251351
    op200 发表于 1 小时前 | 显示全部楼层
    本帖最后由 op200 于 2026-7-3 02:18 编辑
    蒙太奇字幕组 发表于 2026-7-3 01:47
    其实我认为渲染一致性可能是一个合适的理由,但是缩小体积并不是,因为如果用户安装了字体,那么安装字体 ...

    字体安装多了一定会存在命名冲突,且不说某些稀奇古怪的魔改字体(见过很多字幕组用过魔改字体),光是同字体的不同版本都有字形不一致的问题,比如方正的有些GBK旧版里没有“喆”之类的字形,新版里却有,用户安装字体也不可能一个个点进去看版本号,安装了旧版不仅缺字形,体积还会翻倍

    用编程举例子,把所有字体都安装在系统,就相当于把整个编程项目的代码全塞在同一个命名空间里,再把空格换行之类的全删掉,省下来的那点体积不仅没啥显著作用,还会严重影响项目的功能

    将字体安装到系统就是过度追求“体积小”却完全不考虑易用性
    回复

    使用道具 举报

    12
    返回列表 发新帖
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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