Apache553 发表于 2020-7-26 21:27:07

自动按需加载字体的轮子

本帖最后由 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后需要重新构建索引和注册事件清单。


欢迎大家使用并反馈!
旧版本






andor 发表于 2020-7-26 22:22:28

为什么你叫Apache却用GPL.....

andor 发表于 2020-7-26 22:41:32

感受了一下,没有成功。我用FontloaderSub可以load的,但是用你这个


Query: 方正准圆_GBK
Result: not found in index


说起来deamon是不是可以弄成类似于service的东西,毕竟手动开也怪麻烦的。。

PS:star你了

ssnake 发表于 2020-7-26 22:42:19

andor 发表于 2020-7-26 22:22
为什么你叫Apache却用GPL.....

插嘴代答(

因为从 VSFilter -> xy-VSFilter (xySubFilter) 就是 GPLv2 ,传染继承下来的。

Apache553 发表于 2020-7-27 00:45:30

本帖最后由 Apache553 于 2020-7-27 00:47 编辑

andor 发表于 2020-7-26 22:41
感受了一下,没有成功。我用FontloaderSub可以load的,但是用你这个



...我的问题 已经更新描述
因为建立的索引我没有让他自动记录到配置文件中去,所以还得手动指定一下或者写进配置去...
大概是这个原因

service的话确实可以这么做 但是感觉又不太干净(涉及到全局的注册)
不过已经有xysubfilter这样的 好像也没差了

菜姬 发表于 2020-7-27 07:22:22

本帖最后由 菜姬 于 2020-7-27 07:51 编辑

有点厉害
还是用AddFontResource
RemoveFontResource 这两个API吗
不过现在好像用pinterf fork的版本 和 基于pinterf添加了VS接口的HolyWu fork版本比较多
要不要移植到这两个fork上(压制的时候也能临时加载字体简直爽翻

yzwduck 发表于 2020-7-27 07:39:14

如果 xy-VSFilter 更新很频繁的话,我觉得直接改本体的代码就不太合适,这需要单独维护每个常见 xy-VSFilter,会很麻烦;如果用 hook 的方法,就只需要维护一份 release,会方便很多。

Apache553 发表于 2020-7-27 08:10:06

yzwduck 发表于 2020-7-27 07:39
如果 xy-VSFilter 更新很频繁的话,我觉得直接改本体的代码就不太合适,这需要单独维护每个常见 xy-VSFilte ...

我最开始也想过用hook,但是我觉得xysubfilter本身并没有什么变种和更新,所以就找了本体的代码来改
结果现在发现有一堆...

用hook的问题在于会钩上整个进程的函数调用,感觉还是挺脏的,还有就是报毒的问题
不过确实适用性更加宽广,甚至可以扩展到所有使用gdi来绘制的程序上

可以再造个轮子了(

Apache553 发表于 2020-7-27 08:13:54

菜姬 发表于 2020-7-27 07:22
有点厉害
还是用AddFontResource
RemoveFontResource 这两个API吗


是这两家伙,因为好像就这两个能用(

移植的话,根据 yzwduck 佬的意见,现在准备整个用hook的版本出来,到时候应该就都能行了(

arition 发表于 2020-7-27 10:09:04

好,满足了我多年的需求
一年前尝试做auto loading结果看到xy vsfilter一坨上古代码直接放弃了
期待hook版本
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 自动按需加载字体的轮子