自动按需加载字体的轮子
本帖最后由 Apache553 于 2022-6-28 23:53 编辑因为论坛下的字幕并不总是很方便能得到所使用的字体的包,手里拿着超级字体整合包里面可能有对应的字体,然而又要自己去找,就十分的痛苦,就算是用yzwduck佬的FontLoaderSub也还要手动操作,最后自己自娱自乐造了个轮子出来
2022/2/23: 整个软件重写了一遍(以前的代码太屎了),虽然还是没有界面(想不到必要性而且做不来)
2022/4/8: 不再尝试加载系统中已安装的字体了,可能会修复一些问题
2022/6/28: 添加了预加载功能:能够保存最近加载的数个字体文件并在下一次启动时自动预加载,这样可以有效地减少libass系播放器的卡顿感; 添加了索引建立时的去重功能(文件级去重); 使用异步方式执行WMI查询; 优化字体索引构建性能; 杂项更改
目前可以实现自动按需加载字体并局限于播放器进程的生命周期,不污染全局字体列表,日志会在事件查看器中。
具体说明请移步:
代码仓库: https://github.com/Apache553/SubtitleFontHelper
v1.0.4
注意:在升级1.0.2后需要重新构建索引和注册事件清单。
欢迎大家使用并反馈!
旧版本
为什么你叫Apache却用GPL..... 感受了一下,没有成功。我用FontloaderSub可以load的,但是用你这个
Query: 方正准圆_GBK
Result: not found in index
说起来deamon是不是可以弄成类似于service的东西,毕竟手动开也怪麻烦的。。
PS:star你了
andor 发表于 2020-7-26 22:22
为什么你叫Apache却用GPL.....
插嘴代答(
因为从 VSFilter -> xy-VSFilter (xySubFilter) 就是 GPLv2 ,传染继承下来的。
本帖最后由 Apache553 于 2020-7-27 00:47 编辑
andor 发表于 2020-7-26 22:41
感受了一下,没有成功。我用FontloaderSub可以load的,但是用你这个
...我的问题 已经更新描述
因为建立的索引我没有让他自动记录到配置文件中去,所以还得手动指定一下或者写进配置去...
大概是这个原因
service的话确实可以这么做 但是感觉又不太干净(涉及到全局的注册)
不过已经有xysubfilter这样的 好像也没差了
本帖最后由 菜姬 于 2020-7-27 07:51 编辑
有点厉害
还是用AddFontResource
RemoveFontResource 这两个API吗
不过现在好像用pinterf fork的版本 和 基于pinterf添加了VS接口的HolyWu fork版本比较多
要不要移植到这两个fork上(压制的时候也能临时加载字体简直爽翻 如果 xy-VSFilter 更新很频繁的话,我觉得直接改本体的代码就不太合适,这需要单独维护每个常见 xy-VSFilter,会很麻烦;如果用 hook 的方法,就只需要维护一份 release,会方便很多。 yzwduck 发表于 2020-7-27 07:39
如果 xy-VSFilter 更新很频繁的话,我觉得直接改本体的代码就不太合适,这需要单独维护每个常见 xy-VSFilte ...
我最开始也想过用hook,但是我觉得xysubfilter本身并没有什么变种和更新,所以就找了本体的代码来改
结果现在发现有一堆...
用hook的问题在于会钩上整个进程的函数调用,感觉还是挺脏的,还有就是报毒的问题
不过确实适用性更加宽广,甚至可以扩展到所有使用gdi来绘制的程序上
可以再造个轮子了(
菜姬 发表于 2020-7-27 07:22
有点厉害
还是用AddFontResource
RemoveFontResource 这两个API吗
是这两家伙,因为好像就这两个能用(
移植的话,根据 yzwduck 佬的意见,现在准备整个用hook的版本出来,到时候应该就都能行了( 好,满足了我多年的需求
一年前尝试做auto loading结果看到xy vsfilter一坨上古代码直接放弃了
期待hook版本