jensen 发表于 2025-6-26 22:44:50

Sub Font Manager:字幕字体子集化和嵌入工具

本帖最后由 jensen 于 2025-6-27 23:18 编辑

简介

Sub Font Manager 用于编辑.ASS或.SSA字幕文件中的字体设置,具体来说,它可以将字幕中所有使用过的字体汇总,
并将字体按照字幕所覆盖的字符集进行子集化并嵌入到字幕文件中。

Sub Font Manager 可以完全自动化地实现以下流程:


[*]汇总出字幕中所有使用过的字体(包括 Style 中的设置和行内覆盖的设置);
[*]在同目录和系统中自动匹配字体源文件;
[*]收集字体在字幕中覆盖的字符集;
[*]将字体子集化并在名表中保留字幕中的引用名字;
[*]将字体编码为文本并写入到字幕文件中。

在 Sub Font Manager 中,你只需通过简单的勾选就可以一键实现字体的子集化和嵌入操作,大大简化内嵌字体的流程。
因为流程的简化,你甚至可以在字体内嵌后放心的再次修改字幕,因为重新内嵌只需一键即可完成。

对于字幕制作者,你可以大大简化发布的文件包,用几乎一样大小的字幕文件在用户端无障碍重现字幕特效。
对于普通观影者,你无需再为了字幕中的几个特效文字而安装一系列字库,字幕会自带字体,而且只带它需要的那几个字,
这种字幕甚至在机顶盒和播放机中也可以重现特效。

如何使用

Sub Font Manager 的使用非常简单,嵌入字体的步骤如下:

[*]从“输入文件”框中打开字幕文件,或者将字幕文件拖入窗口中,可以看到字幕中使用的字体和分别覆盖的字符数;
[*]勾选希望内嵌的字体(推荐同时勾选“子集化”);
[*]点击应用;
https://github.com/user-attachments/assets/70a710e6-c4a6-42fb-bd49-3ca9f697c044

[*]完成!字幕自动重载入,可以看到勾选的字体已经变成内嵌字体。
https://github.com/user-attachments/assets/02967ed4-728a-41fd-9d7d-9cb3aab19f08


兼容性

主流视频播放器中,只要能支持 ASS/SSA 特效字幕的,大多对内嵌字体兼容良好,其中包括但不限于:


[*]PotPlayer
[*]VLC
[*]IINA (MPV)
[*]Kodi
[*]Infuse

不过也有例外,如 Movist(截至 v2.11.5)。

系统支持

Windows & macOS

语言支持

简体中文 & English

下载

详细介绍请移步Github:
https://github.com/jensenyg/SubFontManager/

下载也来自Github:
https://github.com/jensenyg/SubFontManager/releases/

新人自制软件分享,写这个软件的初衷源于我自己的需求,但我觉得这个功能很具有通用性,希望可以帮到大家。

newyorker 发表于 2025-6-27 09:12:00

感谢制作,试了一下,用起来非常方便。

提个FR,除了当前目录和系统,能不能让用户自行设定其他的字体包根目录。因为我之前下了VCB的字体精简包,之后所有的字体我都存放在一个根目录下面。希望搜索字体的时候可以自动在该目录下进行寻找。

paul 发表于 2025-6-27 10:42:36

软件总体来说还可以的,有几个建议

1.增加批量处理字幕,目前我试了下只能一次处理一个字幕,一个一个来,这个也太不方便了

2.能识别字体文件夹,这个应该可以设置一个字体文件夹路径,现在默认是字幕同路径或系统字体,但是一般都是有一个Fonts文件夹用来放字体,而不是字幕同路径下放字体,当然可以手动设置某一个字体的路径我觉得也挺好的,有时用的字体不规范,软件不一定能识别正确。

3.批量选择内嵌,选择内嵌好像只能一个一个来,这个不太方便,还有我遇到字数为零的字体,如果可以一键全选,请注意智能不要选择。

4.输出文件时,空白时输出文件会把源文件替换,应该是新增一个文件,然后在文件名加上后缀而不是替换原文件,选择新的路径,又要自己输入文件名,文件名应该默认和原文件相同

5.考虑新增.mks的子集化字幕,如果是一个视频有多个字幕的话,我会优先选择mks的子集化字幕,当然mks字幕兼容性也有各种各样的问题

偷懒的小蜜蜂 发表于 2025-6-27 11:18:35

部分子集化吗,非常有趣的想法

JamHsueh 发表于 2025-6-27 11:23:05

感谢分享。
楼主是否可以考虑一下支持封装的子集化字幕mks以及内封mkv中的子集化字幕呢?

孤雨独火 发表于 2025-6-27 21:06:04

虽然但是你这个名字起的为什么叫manager....功能上看好像只是个editor{:4_675:}

jensen 发表于 2025-6-27 22:46:46

newyorker 发表于 2025-6-27 09:12
感谢制作,试了一下,用起来非常方便。

提个FR,除了当前目录和系统,能不能让用户自行设定其他的字体包根 ...

我建议你还是把字体都放在C:\Windows\Fonts文件夹下,系统会自动扫描所有字体并建立缓存,这样软件查找起来很快的,你放在其他路径,不管什么软件,要在里面找字体都得遍历所有,这很慢的。例如几百个字体扫描一遍差不多要好几秒,要是几千个,我这软件启动就卡住了……虽然我可以建立缓存,但这样又增加了复杂度。


如果你的字体太多C盘装不下,那就有些麻烦了,只有通过注册表一个个将字体注册到系统,这样可以不拷贝地安装字体,可以用powershell脚本来实现批量自动化注册,具体代码可以问问大模型。

jensen 发表于 2025-6-27 22:55:41

本帖最后由 jensen 于 2025-6-27 23:26 编辑

paul 发表于 2025-6-27 10:42
软件总体来说还可以的,有几个建议

1.增加批量处理字幕,目前我试了下只能一次处理一个字幕,一个一个来, ...

讲真我设计这东西的时候并没有考虑过批处理,可以看我的使用须知里,我不认为把覆盖大量对白的字体内嵌是个好主意,那样会显著增大字幕文件体积(至多1M多,似乎不少人也可以接受),而且会造成大量的冗余(每个字幕存一套字体),普通对白真没必要内嵌,它是雅黑还是细黑还是兰亭黑区别真不大,如果真是喜欢某种字体作为日常使用,建议还是安装到系统,而不是内嵌。

识别自定义文件夹这一点,如果你路径下真的很多字体,那会严重影响启动性能,虽然我可以做缓存,不过那真的挺麻烦的,看看需要的人是否多吧。

mks本质上还是封包嘛,里面还是ass/ssa,而且里面可能不止一条字幕,当然这个GUI没法处理,建议还是直接抽出ass/ssa文件使用。

jensen 发表于 2025-6-27 22:57:46

孤雨独火 发表于 2025-6-27 21:06
虽然但是你这个名字起的为什么叫manager....功能上看好像只是个editor

editor比manager更高级好吧……



editor暗示着我可以编辑字体,修改字形等信息,可是我不能啊,我只能管理它们,嵌入或删除,所以叫manager喽。

jensen 发表于 2025-6-27 23:02:42

JamHsueh 发表于 2025-6-27 11:23
感谢分享。
楼主是否可以考虑一下支持封装的子集化字幕mks以及内封mkv中的子集化字幕呢? ...

一个mkv或mks中可能包含多条字幕,当前这个GUI无法满足这样的需求。

我建议你还是把里面的字幕抽出来,一个个编辑……
另外,不建议把字幕嵌入到mkv,这第一会修改源文件哈希值,不利于P2P分享,第二给未来编辑造成了很大的麻烦,例如你现在的情况……

有一点要注意:mkvmerge在遇到字幕内嵌字体时有一个特殊的处理,它会把内嵌字体抽出来,还原成ttf文件,再以附件的方式嵌入到mkv,这对播放毫无影响,甚至效率更高,但如果你把那字幕再抽出来,里面的内嵌字体就没了。
页: [1] 2 3
查看完整版本: Sub Font Manager:字幕字体子集化和嵌入工具