TA的每日心情 | 开心 2022-11-25 20:15 |
---|
签到天数: 1 天 [LV.1]初来乍到
白金会员
- 积分
- 77330
|
本帖最后由 wyzdwdz 于 2024-9-27 22:14 编辑
新人报道,分享一个自己写的小工具 assfonts
v0.6.0 实装新功能:Subfonts rename,勾选中这个选项可以在给字体做子集化时给该字体自动更换一个随机的名字,同时修改字幕中字体名称以匹配这个子集化后的字体。(该功能主要用于防止多个字幕同时集成进同一文件中时,相同名称字体互相冲突的问题)
v0.3.0 新版整合 asshdr 程序,提供两个预设选项: HDR High 对应的输出亮度为203nit,HDR Low 对应的输出亮度为 100nit 。这个功能主要用解决观看 HDR视频时字幕亮度过高的问题。注意如果只想用HDR的功能,可以把 Subset only 和 Embed only 同时勾选上。
写了一个简单的 GUI 界面,直接打开 assfonts-gui.exe 即可,它可以独立运行。
因为平时有把字体文件嵌入mkv的需求,但是有时字幕需要的字体太多,如果全部嵌入会导致视频文件体积暴涨。但其实一个字幕并不需要字体中的所有字形,因此只需要保留所需的字形并剔除无用的部分就可以显著地缩小文件体积,并且不会影响到字幕的渲染,这一过程又被称为字体的“子集化”。
基于这一思路,开发了这个小程序。它可以根据ASS字体文件在指定的字体库中查找所需字体并对其进行子集化。本程序还提供另外一个功能,根据ASS字幕文件的一个特性,即允许直接在字幕脚本中嵌入经过UUEncode编码后的字体文件,本程序可以将经子集化后的或任意指定的字体直接嵌入ASS字幕中。这样只需要一个字幕文件就可以包含全部信息,实现类似PGS等图形字幕的效果,而且与之相比具有更小的体积、放大不会模糊的特性。
程序确保无毒,可以放心下载,提供源代码链接 github.com/wyzdwdz/assfonts
不放心的可以自己编译。
GUI 程序使用说明
由 mikusa 提供的 GUI 使用教程
命令行程序使用说明
首先在你的终端或者命令提示符中进入程序所在的目录(或者直接把这个目录添加进环境变量中)。输入
- .\assfonts.exe -h 或者省略前面的 .\ 如果已经加入到环境变量中的话
复制代码
出现类似这些内容就说明运行成功了
接着如果你已经拥有一个自己的字体库(类似“超级字体整合包”)的话,建议首先初始化字体库,以我自己的目录为例
- .\assfonts.exe -f "D:\超级字体整合包 XZ\完整包" -b
复制代码 它会自动扫描这个目录及其子目录下全部的字体文件并生成一个名叫fonts.db的数据库文件(注意!如果你没有通过 -d 选项指定数据库的路径的话,它是默认保存在你当前终端的运行目录下面的,这个可能不会是程序所在的目录),之后程序在检索字体时即使你没有通过 -f 指定 fontpath 或者 fontpath 中的字体没满足要求,它也会自动调用这个数据库中信息。当然如果你的字体库有了更新只需要重新输入这条命令就可以更新数据库了。
下面假设我有一个字幕文件路径是 D:\test dir\test.ass,最简单的就是直接输入
- .\assfonts.exe "D:\test dir\test.ass" 或者 .\assfonts.exe -i "D:\test dir\test.ass"
复制代码 这样就可以自动生成一个已经嵌入字体信息的字幕 test.assfonts.ass 和一个文件夹 test_subsetted,文件夹里面有子集化后字体文件,输出目录默认与输入的字体同目录,你也可以通过 -o 选项指定其它输出目录。这样一个最简单的使用流程就结束了。另外,有时候你下载的字幕包会附带一个字体文件夹,你也可以使用 -f 命令指定这个文件夹,这样程序就会优先从这个文件夹中检索字体。
- .\assfonts.exe -f "D:\test dir\test-fonts-dir" "D:\test dir\test.ass"
复制代码
注意!根据 ASS Specs 标准文件所述,ASS 字幕只能够嵌入 Truetype 字体,即 ttf 文件,但是本程序忽略了这个规定,允许任意类型的字体嵌入。这些非 ttf 字体可能不会被某些播放器识别,造成字幕显示异常。
这里提供一种解决方法,还是以上面为例,首先键入 -s 选项,使程序只做子集化,不嵌入字幕中。
- .\assfonts.exe -s "D:\test dir\test.ass"
复制代码 然后通过第三方工具把 test_subsetted 文件夹中的非 ttf 字体转换成 ttf(推荐使用 otf2ttf 这个 python 工具),接着使用 -e 选项,规定程序只将所需的字体嵌入字幕而不再对其做子集化(因为这些已经子集化过了)。
- .\assfonts.exe -e -f "D:\test dir\test_subsetted" "D:\test dir\test.ass" 注意使用 -f 指定已经子集化后的字体目录
复制代码
这样就解决了。实在不能转换的话,也可以直接用 mkvtoolnix 等工具把字体嵌入视频文件中。
关于其它选项和更多的使用方法,可以通过 --help 查看(命令行),也欢迎在评论区中咨询。
软件只经过个人有限的测试,不保证稳定,欢迎大家使用并提交 BUG,我会尽快完善。
最后求管理员给个置顶,让更多人看到,谢谢!!!
更新日志:
v0.7.2
- GUI Linux 版修复在 mesa 24.0+ 驱动下 Wayland 环境无法显示标题栏的 bug
v0.7.1
- GUI Linux 版添加对 Wayland 的原生支持
v0.7.0
- 修复无法识别部分繁体中文字体的 bug
- GUI 使用的 Qt 框架更新至 6.6,支持夜间模式
- 新增对 armv7l 架构的 Linux 支持与对 x86 架构的 Linux 和 Windows 平台支持
v0.6.3
- 修复 GUI 中显示大括号闪退的 bug
v0.6.2
- 添加实验性新功能:font combined ,勾选后,当输入字幕大于一个时,子集化后会合并相同名字的字体
- 添加 GUI 新功能:Reset all ,恢复初始设置
- 修复无法显示最后一行日志的 bug
v0.6.1
- 修复当识别到非字体文件时闪退的 bug
- asshdr 模块更新至 v0.1.2,修复由其引起的闪退 bug
v0.6.0
- 重构 Subfonts rename 功能并正式实装,解决已知 bug
v0.5.5
- 修复 ASS 字幕解析 bug
- 修复 font rename 后的部分字体名称没有更改的 bug
v0.5.4
- 修复 ASS 字幕解析 bug
- 允许在 font directory 栏输入多个文件夹路径,用 ;隔开
- 在建立字体库时自动添加系统的默认字体文件夹,如 Windows 系统中会自动扫描 C:\Windows\Fonts 中的字体并添加进字体库
- 修复字体解析 bug,防止字体名称出现 \u0000 后缀 (升级到该版本后,建议手动删除 fonts.json 文件并重新建立字体库,该文件在 Database directory 路径的文件夹里面)
v0.5.3
- 添加新功能 : mutli thread (多线程),默认关闭,GUI 程序可以在 Other 菜单中开启,命令行程序使用 -m 开启。注意:如果电脑 cpu 的线程数过多且读取的 ASS 文件过大,程序可能会占用大量内存。
- 为 Unix 程序添加 manpage 文档
- 显著改善 ASS 字幕解析性能,可以快速解析大小超过百兆的文件
- 修复 bug:对相同名字的子集化字体文件自动重命名,以避免文件被自动覆盖
- 更改字体的字重 weight 的解析方式,以获得更精确的结果(建议手动删除 fonts.json 字体库文件,并重新建立字体库)
v0.5.2
- 修复 aarch64 Linux GUI 中无法找到最新版本号的 bug
- 当 GitHub 无法正常访问时,使用 gitee 源作为 check update 的链接
- 修复 Linux 系统无法使用输入法的 bug
- 修复 Linux 系统 HiDpi 缩放比例不正常的 bug
- 当 GUI 程序关闭,自动记录当前程序的状态,下一次打开时会自动恢复(包括程序的设置和输入框内的字符)
- 修复每次只显示一个缺失码位的 bug
v0.5.1
- Windows GUI 使用原生字体渲染引擎
- 修复 Check update 导致程序假死 bug
- 修复部分安全漏洞
v0.5.0
- GUI 回归初版布局,提供新版本的命令行工具
v0.4.1
- 修复 mkvtoolnix 无法识别改名后的字幕 bug
- 添加新版本的检测功能
v0.4.0
- 添加新功能:Subfonts rename,勾选中这个选项可以在给字体做子集化时给该字体自动更换一个随机的名字,同时修改原字幕中字体名称以匹配这个子集化后的字体。(该功能主要用于防止多个字幕同时集成进同一文件中时,相同名称字体互相冲突的问题)
- 修复 xy-subfilter 无法渲染纵向省略号的问题
- 修复 ass 字幕解析 bug
- 使用 imgui 作为 GUI 框架以提高 Linux 系统下的兼容性
下载地址(GitHub)
下载地址(码云)
Windows 版本支持 win7 及以上,如果提示缺少文件,请尝试安装 Visual C++ 可再发行程序包
Linux 版本支持 Ubuntu 18.04 及以上(或其它 Linux 发行版)
macOS 版本由于我没有 mac 机器,所以无法做测试,如果有运行问题或 Bug,欢迎回帖指出
目前由于软件没有任何签名,所以新版的 macOS 应该会提示文件损坏,需要用户手动允许软件运行
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
查看全部评分
|