shadows 发表于 2026-3-13 00:05:38

SubtitleFontHelper修改版: 字幕字体全自动按需加载

本帖最后由 shadows 于 2026-3-27 23:40 编辑

首先感谢Apache553大佬之前的开源项目SubtitleFontHelper,十分好用的字体自动加载工具。原帖地址:https://bbs.acgrip.com/thread-6358-1-1.html


下载:

提醒!仅有Windows版,只适用于使用libass的播放器,例如mpv、xy-VSFilter with libass。可能有BUG!
v1.2.0版: 尝试优化速度、内存,增加一个默认不启用的索引构建进度通知设置

fork开源地址 https://github.com/zhongfly/SubtitleFontHelper

快速介绍:
原版使用前需要手动建立字体索引,然后软件就会根据字幕需要,从索引里自动临时挂载索引里已有的字体,就像字体已经安装到系统里一样流畅。但是原版在新增/删除字体时,也还是需要手动更新字体索引文件、重启应用。
因此我在天才程序员(AI)的帮助下使得整个更新过程自动化了:
1. 使用前不需要手动建立字体索引,只需要在配置文件里设置字体包路径,每次启动时会自动建立/更新索引(会扫一遍字体文件夹,检查相对上次关闭软件时的变化);
2. 软件会监视字体包里面字体文件的变化(增加/删除/修改),自动更新索引,自动使用最新的索引(使用系统接口接收文件更新通知,不需要扫盘);
3. 配置文件也支持热重载了,修改配置后不需要重启软件
4. 增加系统通知,字体索引的建立、更新都有通知

与原版的区别:
1. 使用toml作为配置文件格式,xml仍支持,但是无法使用以上新增的功能,只是用来兼容旧版
2. 日志保存为文件,和程序在同一个文件夹,不需要去事件查看器里看日志
3. 优先使用配置文件里有多个字体索引时,排前面的字体索引 优先级更高,前面没有的才会使用后面索引的字体(看见有人提需求,所以做了,也许这样实现会有问题?)
4. 支持相对路径,字体索引也优先使用相对路径,使得理论上可以与字体包一起便携

图片预览:




使用方法:
1. 修改SubtitleFontHelper.example.toml,在monitor_processes里面填入你使用的播放器exe的名称,在[]里面填写字体索引的保存位置和字体包的位置,多个索引文件就写多个[]。另存为SubtitleFontHelper.toml,也就是删掉文件名里的“example.”
配置示例:
wmi_poll_interval = 1000
lru_size = 100
monitor_processes = [
      'mpv.exe',
      'mpc-hc_nvo.exe',
]

[]
path = 'E:\超级字体整合包 XZ\完整包\FontIndex.xml'
source_folders = [
      'E:\超级字体整合包 XZ\完整包',
]

[]
path = '个人补充\FontIndex.xml'
source_folders = [
      '个人补充',
]wmi_poll_interval 和lru_size 其实不用设置
对于不会变化的字体包,可以在初次建立索引后,删除它的source_folders 设置,只留下path设置,那么软件就不会自动监控那个字体文件夹的变化
支持相对路径

2. 双击运行SubtitleFontAutoLoaderDaemon.exe


没了,本打算做一个GUI界面的,感觉也不是很需要,很简单的配置……

闲谈:
字幕的字体是字幕正常显示的基础,虽然目前内封字体的资源不在少数,但是分享外挂字幕时主要还是ass+字体包的形式,而且vcb等一些大佬都有分享比较全的字体包。由于把大而全的字体全部安装会对日常使用有影响,一般都推荐使用临时挂载字体的方法,其中比较常用的工具有:FontLoader.exe (这种手动找字体加载的工具真的还有人在用吗?)。之前的yzwduck 大佬的FontLoaderSub也不错,但是每次使用前需要手动选择字幕让软件分析后再自动加载,看完后还要手动关闭。然后就是SubtitleFontHelper,基本实现了自动了。


以下是历史版本,不建议使用






枫谷剑仙 发表于 2026-3-13 02:44:38

本帖最后由 枫谷剑仙 于 2026-3-13 03:52 编辑

你怎么知道刚好要来找{:4_87:}



我平时是用 K-Lite Codec Pack 的 MPC-HC,所以我还得把监听进程名改成 mpc-hc64.exe



在同一台电脑上应该是比 FontLoaderSub 更方便,但是绝对路径数据库的话,不方便便携式使用。假设我把视频和字体都放在移动硬盘上,随时找任意电脑观看,就会因为绝对路径改变而出错吧。FontLoaderSub 的数据库好像是相对路径的。

我平时使用 Total Commander 作为文件管理器,可以非常方便的将程序添加为按钮,这样 FontLoaderSub 打开字幕其实会方便很多。当然这里只作为演示,并没有去做成相对路径。
https://p.sda1.dev/31/db9957f5476198263a49b4b5e7684feb/TOTALCMD64_NBu1iwPDAe.webp
https://p.sda1.dev/31/d27b9f826231d9c6d76f3b2eaf05334a/TOTALCMD64_H14DkGVV2q.webp

shadows 发表于 2026-3-13 11:10:17

本帖最后由 shadows 于 2026-3-13 11:22 编辑

枫谷剑仙 发表于 2026-3-13 02:44
你怎么知道刚好要来找



这个主要是支持多个字体文件夹的,要是全部用相对路径的话一样有问题,同一台电脑,只是软件移了位置,数据就得重建了,也很奇怪吧


不过我觉得可以支持相对路径,初步想法是假如设置的索引路径都是相对路径,那么生成的字体索引也是相对路径

而且fontloadersub的问题是,软件必须和字体包放一起,相当于只能有一个字体包路径,并且字体变化需要手动全量更新…

另外fontloadersub也支持注册到右键菜单里,但是这多少还是需要手动操作那么一下

苏辰汐 发表于 2026-3-13 19:27:19

我也一直在用 SubtitleFontHelper 工具,不过 mpv 的话还有一个比较有意思的东西:https://github.com/Koopex/FontInAss_mpv-script

shadows 发表于 2026-3-13 20:57:17

苏辰汐 发表于 2026-3-13 19:27
我也一直在用 SubtitleFontHelper 工具,不过 mpv 的话还有一个比较有意思的东西:https://github.com/Koop ...

FontInAss 普通人用还是有点重了,还要部署docker

shadows 发表于 2026-3-14 00:00:04

枫谷剑仙 发表于 2026-3-13 02:44
你怎么知道刚好要来找




支持相对路径了,对于旧版本的索引,运行新版时会在更改时自动更新为相对路径版。不过还是建议手动删除旧版索引……

字体索引的相对路径,指的是字体文件相对字体索引的路径,所以只要保证字体索引相对字体包的位置不变,可以便携移动的。

配置文件也支持使用相对路径了,所以软件也能和字体包这些一起便携了~


SAOKiller 发表于 2026-3-14 13:24:51

话说字体全部安装有什么后遗症吗?有没有能根据我建立的字体索引删除已安装在系统里的字体

shadows 发表于 2026-3-14 14:27:46

SAOKiller 发表于 2026-3-14 13:24
话说字体全部安装有什么后遗症吗?有没有能根据我建立的字体索引删除已安装在系统里的字体 ...

有些支持设置字体的软件,在字体数量多的时候容易卡。你要是用的没问题可以先这样吧

shadows 发表于 2026-3-15 21:10:35

好像没有需要改的了。

像读取http或者nas上的字体,感觉延迟很大,用的人也少

自动下载没有的字体,有点困难,毕竟从我的使用场景来说,本地已经有了vcb的字体包,其余字体没有方便直接下载的地方

枫谷剑仙 发表于 2026-3-20 02:39:04


这是我的文件结构
https://p.sda1.dev/31/2431e8c3cf0fc1ad3d771bd114f5bab2/TOTALCMD64_DQl2WSfdok.webp

配置文件写法是
https://p.sda1.dev/31/b6a46149bcf6ae7ea05b533c82eab551/TOTALCMD64_PwiVswtsRq.webp

运行之后只显示这个提示,并不会产生数据库
https://p.sda1.dev/31/b89a4923a70854003950a0cee0cb7753/GraMKAi287.webp

是不是因为直接传递字符串导致的错误?
https://p.sda1.dev/31/957bacde0907fee378e73e8d4e2285c3/WindowsTerminal_zTyN2Cu7IR.webp
我习惯在后面加上 \ 来表示这是文件夹而不是文件,但是命令行里直接输入 \ 会把后面的 " 转义。
页: [1] 2 3
查看完整版本: SubtitleFontHelper修改版: 字幕字体全自动按需加载