找回密码
 立即注册
查看: 41510|回复: 108

自动按需加载字体的轮子

2

主题

35

回帖

0

VC币

至尊会员

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

积分
262369
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
ReleaseBuild.zip (1.4 MB, 下载次数: 1116)

注意:在升级1.0.2后需要重新构建索引和注册事件清单。


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






SubtitleFontHelper_5ba41f1_20200726.zip

8.35 MB, 下载次数: 619

SubtitleFontHelper_3a5fbe6_20200727.zip

7.92 MB, 下载次数: 612

SubtitleFontHelper_7886366_20200729.zip

7.94 MB, 下载次数: 734

ReleaseBuild.zip

486.26 KB, 下载次数: 538

v1.0

ReleaseBuild.zip

486.29 KB, 下载次数: 626

v1.0.1

ReleaseBuild.zip

1.37 MB, 下载次数: 637

v1.0.2

评分

参与人数 14活跃度 +164206 收起 理由
lmrs + 3200 很给力!
那只猫 + 666 好用爱用
apsap + 200 很给力!
铁皮厚厚 + 6400 神马都是浮云
马可solo + 1600 很给力!
御坂umr + 800 很给力!
shadows + 240 建议更新下release
Seekladoom + 83200
kysdm + 32000 很给力!
菜姬 + 32000 赞一个!
霄月銀牙 + 2000 很给力!
arition + 1600 很给力!
Shadow + 200 赞一个!
椎名千鹤 + 100 赞一个!

查看全部评分

回复

使用道具 举报

1

主题

8

回帖

0

VC币

注册会员

Rank: 2

积分
633
andor 发表于 2020-7-26 22:22:28 | 显示全部楼层
为什么你叫Apache却用GPL.....
回复

使用道具 举报

1

主题

8

回帖

0

VC币

注册会员

Rank: 2

积分
633
andor 发表于 2020-7-26 22:41:32 | 显示全部楼层
感受了一下,没有成功。我用FontloaderSub可以load的,但是用你这个

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


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

PS:star你了
回复

使用道具 举报

3

主题

270

回帖

680

VC币

星辰大海

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

积分
1069159
ssnake 发表于 2020-7-26 22:42:19 | 显示全部楼层
andor 发表于 2020-7-26 22:22
为什么你叫Apache却用GPL.....

插嘴代答(

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

回复

使用道具 举报

2

主题

35

回帖

0

VC币

至尊会员

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

积分
262369
Apache553  楼主| 发表于 2020-7-27 00:45:30 | 显示全部楼层
本帖最后由 Apache553 于 2020-7-27 00:47 编辑
andor 发表于 2020-7-26 22:41
感受了一下,没有成功。我用FontloaderSub可以load的,但是用你这个

[12]

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

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

使用道具 举报

49

主题

468

回帖

2581

VC币

星辰大海

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

积分
1787471

崭露头角活跃达人新人登场渐入佳境

菜姬 发表于 2020-7-27 07:22:22 | 显示全部楼层
本帖最后由 菜姬 于 2020-7-27 07:51 编辑

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

使用道具 举报

2

主题

90

回帖

0

VC币

荣誉会员

Rank: 14Rank: 14Rank: 14Rank: 14

积分
110349
yzwduck 发表于 2020-7-27 07:39:14 | 显示全部楼层
如果 xy-VSFilter 更新很频繁的话,我觉得直接改本体的代码就不太合适,这需要单独维护每个常见 xy-VSFilter,会很麻烦;如果用 hook 的方法,就只需要维护一份 release,会方便很多。
回复

使用道具 举报

2

主题

35

回帖

0

VC币

至尊会员

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

积分
262369
Apache553  楼主| 发表于 2020-7-27 08:10:06 | 显示全部楼层
yzwduck 发表于 2020-7-27 07:39
如果 xy-VSFilter 更新很频繁的话,我觉得直接改本体的代码就不太合适,这需要单独维护每个常见 xy-VSFilte ...

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

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

可以再造个轮子了(
回复

使用道具 举报

2

主题

35

回帖

0

VC币

至尊会员

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

积分
262369
Apache553  楼主| 发表于 2020-7-27 08:13:54 | 显示全部楼层
菜姬 发表于 2020-7-27 07:22
有点厉害
还是用AddFontResource
RemoveFontResource 这两个API吗

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

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

使用道具 举报

15

主题

41

回帖

40

VC币

至尊会员

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

积分
284315

小有所成崭露头角BD!

arition 发表于 2020-7-27 10:09:04 | 显示全部楼层
好,满足了我多年的需求
一年前尝试做auto loading结果看到xy vsfilter一坨上古代码直接放弃了
期待hook版本
回复

使用道具 举报

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

本版积分规则

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