找回密码
 立即注册
楼主: yzwduck

FontLoaderSub: 加载ass/ssa字幕所需字体的小工具 (r7-20200525)

2

主题

90

回帖

0

VC币

荣誉会员

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

积分
110349
yzwduck  楼主| 发表于 2020-2-10 13:29:51 | 显示全部楼层
tonyhsie 发表于 2020-2-10 11:19
換個話題

其實 2.x 版的 Noto Sans/思源黑體,把 Noto Sans CJK TC Bold 視為 Noto Sans CJK TC 的附屬, ...

Noto Serif CJK TC Bold 对于字体工具而言,它能做的事情只有加载 NotoSerifCJK-Bold.ttc,剩下的事情交给操作系统与字幕渲染器。
如果字幕作者指定的字体名称就是 Noto Serif CJK TC Bold,那么:
  • 简单使用 Windows 字体匹配机制的软件(如 XySubFilter)会无法找到字体;
  • 部分自行实现字体匹配的软件(如 mpv)能会找到字体。

即使知道这个问题的存在,在不修改字幕、不改动字幕渲染器(当然也不能修改字体本身)的前提下,光靠中间的那个字体加载工具,能力极为有限,无法解决这个问题。
回复

使用道具 举报

69

主题

1438

回帖

1万

VC币

星辰大海

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

积分
3161197

卓越贡献

tonyhsie 发表于 2020-2-11 04:32:43 | 显示全部楼层
本帖最后由 tonyhsie 于 2020-2-11 04:38 编辑
yzwduck 发表于 2020-2-10 13:29
Noto Serif CJK TC Bold 对于字体工具而言,它能做的事情只有加载 NotoSerifCJK-Bold.ttc,剩下的事情交 ...

一個正常使用到 "Noto Serif CJK TC Bold" 字型的字幕檔案

它一定不是直接用 "Noto Serif CJK TC Bold" 這個字型名稱

而是使用 "Noto Serif CJK TC" 然後再指定粗體,不管是在 style 定義行將 Bold 欄位定義成 -1,或是使用 {\b1} 來指定粗體,兩者都可以

1. Style: CN,Noto Serif CJK TC,68,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,1,0,1,1,1,2,15,15,15,1
2. {\fnNoto Serif CJK TC\b1}

在這兩種情況下,該字幕所指定的,其實不是字面上的 "Noto Serif CJK TC" 這個非粗體字型,而是 "Noto Serif CJK TC Bold" 這個粗體字型


而這兩種情況,難道 FontLoaderSub 都是掛載到非粗體的 "Noto Serif CJK TC" 字型嗎?

這樣的話,好像就已經是不正確的結果了


換句話說,回到 Noto Sans CJK 的 case

不管是 1.x 版或是 2.x 版,兩種字型的匹配規則,都是現有字型的匹配規則,並沒有新增什麼例外規則


如果 FontLoaderSub 在處理 2.x 的匹配規則上有問題,那表示,跟 Noto Sans CJK 2.x 版一樣匹配規則的思源宋體、微軟雅黑等字型

肯定也存在著匹配錯誤的問題?

回复

使用道具 举报

2

主题

90

回帖

0

VC币

荣誉会员

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

积分
110349
yzwduck  楼主| 发表于 2020-2-11 09:06:42 | 显示全部楼层
本帖最后由 yzwduck 于 2020-2-11 09:10 编辑
tonyhsie 发表于 2020-2-11 04:32
一個正常使用到 "Noto Serif CJK TC Bold" 字型的字幕檔案

它一定不是直接用 "Noto Serif CJK TC Bold"  ...

我的字体匹配算法里,考虑到了类似 Noto Serif CJK TC 这种字体的情况;但是现在复查时发现它有一个的 bug,导致它无法正常工作。
不仅仅是 Noto Serif 系列的中文字体,大多数英文字体会把粗体、斜体、粗斜体的变种封装成单独的文件,我在设计算法时考虑到了这种情况,匹配字体名称与文件时,会先找到该系列字体中的一个文件,然后找到字体名称里包含相同前缀、文件格式相同、版本相同的字体,一并加载
如果字体库里的 Noto Serif 系列字体只有 Noto Serif*.ttc 这 7 个文件,然后用 FontLoaderSub 加载一个包含 "Noto Serif CJK TC" 的字幕,它会把 7 个文件全部加载进来。

刚才调试时,发现一个 bug 导致它只加载了 2 个字体变种,现在已经将其修复了。

理想的算法是,寻找字体变种时,只匹配字体的 Family name。但是现在的代码里没有保存这种信息,所以当前版本无法简单实现,只能依靠名称的前缀了。
回复

使用道具 举报

69

主题

1438

回帖

1万

VC币

星辰大海

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

积分
3161197

卓越贡献

tonyhsie 发表于 2020-2-11 10:03:15 | 显示全部楼层
yzwduck 发表于 2020-2-11 09:06
我的字体匹配算法里,考虑到了类似 Noto Serif CJK TC 这种字体的情况;但是现在复查时发现它有一个的 bug ...

我好像有點明白 FontLoaderSub 的邏輯了

並不是字幕用到 A 字型,就只載入 A 字型

而是會把 A 字型的所有不同 SubFamily 都一併載入


的確這也是一種可行的作法沒錯

我之前以為 FontLoaderSub 會精確的辨識、並載入字幕檔所指定的單一種字型,看來是我誤會了
回复

使用道具 举报

4

主题

15

回帖

0

VC币

注册会员

Rank: 2

积分
838
Axcinr 发表于 2020-2-23 18:06:36 | 显示全部楼层
我创建了一个文件夹,然后把临时要用的的字体考进去,然后再把程序考进去,然后按你说的把字体拖到程序上打开,但是还是无法加载
回复

使用道具 举报

2

主题

90

回帖

0

VC币

荣誉会员

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

积分
110349
yzwduck  楼主| 发表于 2020-2-24 08:15:31 | 显示全部楼层
Axcinr 发表于 2020-2-23 18:06
我创建了一个文件夹,然后把临时要用的的字体考进去,然后再把程序考进去,然后按你说的把字体拖到程序上打 ...

你的操作流程应该没有问题,但我现在还不太明白“无法加载”是什么状况;如果可以的话,希望能提供一些更有意义的信息(比如在工具的界面里,先展开详细信息(如果有的话),然后按 Ctrl+C,最后粘贴在帖子的回复里)。
  • 首先,我猜你遇到的情况是“索引中有 xxx 个字体,xxx 种名称”这一行提示,里面的数字应该不是 0,但是上面一行提示的是“0 个字体加载成功”;
  • 然后,请看一下详细信息是否显示“ok”,如果是的话,你已经系统全局安装了这些字体,不需要再用这个工具来临时加载了。
  • 如果没有详细信息的话,大概是工具没有识别出字幕,请检查一下字幕文件是否已经解压缩,格式是否为 ASS,字幕里是否有指定字体的命令。(如果不知道如何判断的话,可以挑一个字幕文件作为附件上传到贴子里)。

回复

使用道具 举报

7

主题

35

回帖

29

VC币

高级会员

Rank: 4

积分
28288
kelvintsang 发表于 2020-5-25 05:04:49 | 显示全部楼层
發覺最近重新安裝了windows,並更新到最新版本,使用這程式加載字體會閃退(拉字幕到程式,載入字幕 -> 立即閃退)
是不是有dependency 未安裝令到軟件出錯?
ps: winver 1909(18363.836)
回复

使用道具 举报

2

主题

90

回帖

0

VC币

荣誉会员

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

积分
110349
yzwduck  楼主| 发表于 2020-5-25 07:40:23 | 显示全部楼层
kelvintsang 发表于 2020-5-25 05:04
發覺最近重新安裝了windows,並更新到最新版本,使用這程式加載字體會閃退(拉字幕到程式,載入字幕 -> 立即 ...

这个工具没有 Windows 操作系统本身以外的 dependency,从描述来看,应该是遇到 bug 了。
能否将下列文件附在帖子里,这样我就能调查问题了。
  • FontLoaderSub.exe
  • fc-subs.db
  • 导致闪退的字幕

回复

使用道具 举报

7

主题

35

回帖

29

VC币

高级会员

Rank: 4

积分
28288
kelvintsang 发表于 2020-5-25 15:22:39 | 显示全部楼层
本帖最后由 kelvintsang 于 2020-5-25 15:25 编辑
yzwduck 发表于 2020-5-25 07:40
这个工具没有 Windows 操作系统本身以外的 dependency,从描述来看,应该是遇到 bug 了。
能否将下列文件 ...

從結論來看是所有字幕都會閃退不是某一個字幕造成的
我也試了不同字體
在加載的時候會閃退,不論字幕或字體是甚麼

我上傳了這些檔案,麻煩看看能不能debug
New folder.zip (73.36 KB, 下载次数: 204)



回复

使用道具 举报

2

主题

90

回帖

0

VC币

荣誉会员

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

积分
110349
yzwduck  楼主| 发表于 2020-5-25 21:05:22 | 显示全部楼层
kelvintsang 发表于 2020-5-25 15:22
從結論來看是所有字幕都會閃退不是某一個字幕造成的
我也試了不同字體
在加載的時候會閃退,不論字幕或字 ...

我看了一下,果然是 3 个月前修复的问题,但改完后一直没有发布正式版…我错了,以后我一定会认真填坑的。
回复

使用道具 举报

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

本版积分规则

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