找回密码
 立即注册
查看: 2374|回复: 40

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

  • TA的每日心情
    慵懒
    2026-4-5 18:15
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    3

    主题

    415

    回帖

    42

    VC币

    至尊会员

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

    积分
    209872

    活跃达人

    shadows 发表于 2026-3-13 00:05:38 | 显示全部楼层 |阅读模式
    本帖最后由 shadows 于 2026-6-7 21:52 编辑

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

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

    下载:

    提醒!仅有Windows版,只适用于使用libass的播放器,例如mpv、xy-VSFilter with libass。可能有BUG!
    SubtitleFontHelper-v1.4.0.zip (6.26 MB, 下载次数: 0)
    建议从github下载,因为有时不记得更新了论坛上的附件:https://github.com/zhongfly/SubtitleFontHelper/releases

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

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

    图片预览:

    PixPin_2026-03-12_22-24-20.png
    字体索引窗口:

    字体.jpg
    日志查看:
    日志.jpg
    配置编辑器:
    配置文件.jpg

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

    8. [notifications]
    9. # managed_index_notifications = true
    10. # managed_index_failure_notifications = true
    11. # missing_font_notifications = true
    12. # missing_font_ignore = ['Some Missing Font', 'i:.*arial.*']
    13. #
    14. # [[notifications.process_missing_font_ignore]]
    15. # regex = ['Some Missing Font', '[A-Z0-9]{8}']
    16. # processes = ['mpc-hc64.exe', 'mpc-hc_nvo.exe']
    17. #
    18. # [[notifications.process_missing_font_ignore]]
    19. # regex = '.*arial.*'
    20. # processes = ['mpc-hc64.exe']
    21. # flags = 'i'

    22. [[index_files]]
    23. path = 'indexes/FontIndex.xml'
    24. source_folders = [
    25.   'fonts',
    26. ]

    27. [[index_files]]
    28. path = 'indexes/FontIndex-2.xml'
    29. source_folders = [
    30.   '/another_fonts',
    31.   '/another_fonts_2',
    32. ]
    复制代码
    wmi_poll_interval 和lru_size 其实不用设置
    对于不会变化的字体包,可以在初次建立索引后,删除它的source_folders 设置,只留下path设置,那么软件就不会自动监控那个字体文件夹的变化
    支持相对路径
    具体介绍见github的readme

    2. 双击运行SubtitleFontAutoLoaderDaemon.exe

    闲谈:

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


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









    评分

    参与人数 5活跃度 +4866 收起 理由
    fog + 1600 good
    Mercury + 666
    KronJs + 800 很给力!
    蒙太奇字幕组 + 1000
    lisbt + 800

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2025-7-13 12:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    4

    回帖

    0

    VC币

    新手上路

    Rank: 1

    积分
    89
    枫谷剑仙 发表于 2026-3-13 02:44:38 | 显示全部楼层
    本帖最后由 枫谷剑仙 于 2026-3-13 03:52 编辑

    你怎么知道刚好要来找




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




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

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

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2026-4-5 18:15
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    3

    主题

    415

    回帖

    42

    VC币

    至尊会员

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

    积分
    209872

    活跃达人

    shadows  楼主| 发表于 2026-3-13 11:10:17 | 显示全部楼层
    本帖最后由 shadows 于 2026-3-13 11:22 编辑
    枫谷剑仙 发表于 2026-3-13 02:44
    你怎么知道刚好要来找



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


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

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-12-23 15:09
  • 签到天数: 42 天

    [LV.5]常住居民I

    5

    主题

    497

    回帖

    215

    VC币

    星辰大海

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

    积分
    369106
    苏辰汐 发表于 2026-3-13 19:27:19 | 显示全部楼层
    我也一直在用 SubtitleFontHelper 工具,不过 mpv 的话还有一个比较有意思的东西:https://github.com/Koopex/FontInAss_mpv-script
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2026-4-5 18:15
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    3

    主题

    415

    回帖

    42

    VC币

    至尊会员

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

    积分
    209872

    活跃达人

    shadows  楼主| 发表于 2026-3-13 20:57:17 | 显示全部楼层
    苏辰汐 发表于 2026-3-13 19:27
    我也一直在用 SubtitleFontHelper 工具,不过 mpv 的话还有一个比较有意思的东西:https://github.com/Koop ...

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2026-4-5 18:15
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    3

    主题

    415

    回帖

    42

    VC币

    至尊会员

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

    积分
    209872

    活跃达人

    shadows  楼主| 发表于 2026-3-14 00:00:04 | 显示全部楼层
    枫谷剑仙 发表于 2026-3-13 02:44
    你怎么知道刚好要来找



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

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

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


    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 118 天

    [LV.6]常住居民II

    6

    主题

    75

    回帖

    208

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    9293
    SAOKiller 发表于 2026-3-14 13:24:51 | 显示全部楼层
    话说字体全部安装有什么后遗症吗?有没有能根据我建立的字体索引删除已安装在系统里的字体
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2026-4-5 18:15
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    3

    主题

    415

    回帖

    42

    VC币

    至尊会员

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

    积分
    209872

    活跃达人

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

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

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2026-4-5 18:15
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    3

    主题

    415

    回帖

    42

    VC币

    至尊会员

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

    积分
    209872

    活跃达人

    shadows  楼主| 发表于 2026-3-15 21:10:35 | 显示全部楼层
    好像没有需要改的了。

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

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

    使用道具 举报

  • TA的每日心情
    擦汗
    2025-7-13 12:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    4

    回帖

    0

    VC币

    新手上路

    Rank: 1

    积分
    89
    枫谷剑仙 发表于 2026-3-20 02:39:04 | 显示全部楼层

    这是我的文件结构


    配置文件写法是


    运行之后只显示这个提示,并不会产生数据库


    是不是因为直接传递字符串导致的错误?

    我习惯在后面加上 \ 来表示这是文件夹而不是文件,但是命令行里直接输入 \ 会把后面的 " 转义。

    点评

    最近会看看什么问题,估计是相对路径的处理有些问题  发表于 2026-3-21 11:55
    回复

    使用道具 举报

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

    本版积分规则

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