自动化字体加载工具SubtitleFontHelper

又来碎碎念了:
上一次写的ListAssFonts其实更偏向于发布向的,批量导出ASS字幕所需字体,然后打包发布。此次要写的SubtitleFontHelper更偏向于个人使用,自动化加载ASS字幕所需的字体,无需安装字体的过程,释放安装过多字体的压力,也更加的“小白”化。自动化是真滴香喔!

接下来是正片:
1.获取字体大包
不重复写了,直接参考上一篇专栏吧

2.下载并安装SubtitleFontHelper
你可以从Anime字幕论坛(原VCB分享论坛)下载到此软件(见下方链接)或者从Github页面进行下载。
论坛帖:https://bbs.acgrip.com/thread-6358-1-1.html
Github:https://github.com/Apache553/SubtitleFontHelper
论坛页面可以直接下载压缩包。github访问不畅的,同样可以使用上篇中推荐的“watt toolkit” 进行辅助。
打开github页面,点击右侧的Releases,下载最新版的v1.0.4的ReleaseBuild.zip压缩包。


下载后解压到电脑合适的位置,比如我存放在图示的位置。

配置SubtitleFontHelper
将字体大包文件夹直接拖拽到FontDatabaseBuilder.exe上释放

会弹出命令行窗口,选N即可

(此处选N是将生成的索引文件FontIndex.xml存放在了字幕大包的文件夹里,也可以选Y更改为其它目录,不过我更改目录后没生成FontIndex.xml,你可以自行尝试这种操作)
将解压后的SubtitleFontHelper.example.xml文件,重命名为SubtitleFontHelper.xml。
打开SubtitleFontHelper.xml,更改其中的配置:
wmiPollInterval
指定WMI查询的间隔时间,毫秒数。较低的值导致较高的CPU使用率。较高的值可能会导致注入进程不够及时。
lruSize
指定服务启动时预加载的条目最大大小。
IndexFile
元素 每个元素指定了索引文件的位置,在这里列出程序所使用的索引。元素开始和结束之间的所有字符(包括换行等字符)将会被当作文件路径使用,若提示找不到文件请检查相关内容。
MonitorProcess
元素 每个元素指定了要监视的进程的路径或者进程名。由于程序使用了rundll32.exe
作为注入过程中的辅助程序,指定该进程可能会导致灾难性的后果。

wmiPollInterval保持默认即可
第三行IndexFile调整为刚才你生成FontIndex.xml的实际路径,你可以右键FontIndex.xml属性,在安全选项卡下复制对象名称。

MonitorProcess代表监控并注入的软件名称(可指定路径),可指定多个exe,直接复制粘贴该行,然后更改对应的exe名称即可。
(注意仅支持传统桌面程序,不支持UWP等软件哦)
本程序可以对用户存放字体文件的目录进行扫描后建立字体信息的索引,在后台监视特定进程的创建并注入Dll劫持特定API的调用,使其在真正调用相关API之前先查询索引并装载相应的字体,从而实现自动加载字体。
目前,仅支持使用GDI相关函数来查询/加载字体的传统Win32桌面程序,不支持UWP应用,不支持使用IDWriteFontCollection/IDWriteFontSet等DirectWrite接口来查询/加载字体的程序。
exe路径寻找方法
比如我从官网下载并装了potplayer64位的版本,此时打开potplayer,打开任务管理器(快捷键:ctrl+ shift+ esc),选中Potplayer,打开“文件所在位置”,弹出文件管理器,并发现蓝框选中在PotPlayerMini64.exe上,那么就将PotPlayerMini64.exe填入到SubtitleFontHelper.xml中。

另一种方式:以aegisub为例
开始菜单找到aegisub,右键更多,打开文件位置。
桌面快捷方式也是同理右键。

此时定位到到开始菜单的快捷方式文件上
直接右键属性查看到对应exe名称aegisub64.exe。
或者右键继续“打开文件所在位置”定位exe。

点击保存后退出即可。
xml里可以根据你自己的需求,按需填入exe即可,目前我就用到这些,你也可以尝试整些新活。
注册与启动相关
右键registerETW.ps1,点击“使用PowerShell运行”,进行注册。
右键enableAutoStart.ps1,点击“使用PowerShell运行”,开启开机自启动。
注意检查启动目录内是否有相应快捷方式。

如需迁移软件位置,请先取消注册(运行unregisterETW.ps1)再进行注册(registerETW.ps1)。
取消开机自启动可以通过运行disableAutoStart.ps1或删除启动内的快捷方式等方法。

到此就已经设置完成了。
来检查下效果吧。
运行SubtitleFontAutoLoaderDaemon.exe,右下角就可以看到图标了。
来对比下效果吧!


Aegisub没想到也能支持,好耶!整字幕更加方便了。
快去给作者点个小星星!
