tonyhsie
发表于 2020-2-10 11:19:25
換個話題
其實 2.x 版的 Noto Sans/思源黑體,把 Noto Sans CJK TC Bold 視為 Noto Sans CJK TC 的附屬,而非兩套各自獨立的字型
這個作法其實就是 Noto Serif / 思源宋體 從以前到現在的標準作法
如果 FontLoaderSub 在調用 2.x 版的 Noto Sans CJK TC Bold 上有問題
那在調用 Noto Serif CJK TC Bold 時,不會有問題嗎?
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)能会找到字体。
即使知道这个问题的存在,在不修改字幕、不改动字幕渲染器(当然也不能修改字体本身)的前提下,光靠中间的那个字体加载工具,能力极为有限,无法解决这个问题。
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 版一樣匹配規則的思源宋體、微軟雅黑等字型
肯定也存在著匹配錯誤的問題?
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。但是现在的代码里没有保存这种信息,所以当前版本无法简单实现,只能依靠名称的前缀了。
tonyhsie
发表于 2020-2-11 10:03:15
yzwduck 发表于 2020-2-11 09:06
我的字体匹配算法里,考虑到了类似 Noto Serif CJK TC 这种字体的情况;但是现在复查时发现它有一个的 bug ...
我好像有點明白 FontLoaderSub 的邏輯了
並不是字幕用到 A 字型,就只載入 A 字型
而是會把 A 字型的所有不同 SubFamily 都一併載入
的確這也是一種可行的作法沒錯
我之前以為 FontLoaderSub 會精確的辨識、並載入字幕檔所指定的單一種字型,看來是我誤會了
Axcinr
发表于 2020-2-23 18:06:36
我创建了一个文件夹,然后把临时要用的的字体考进去,然后再把程序考进去,然后按你说的把字体拖到程序上打开,但是还是无法加载
yzwduck
发表于 2020-2-24 08:15:31
Axcinr 发表于 2020-2-23 18:06
我创建了一个文件夹,然后把临时要用的的字体考进去,然后再把程序考进去,然后按你说的把字体拖到程序上打 ...
你的操作流程应该没有问题,但我现在还不太明白“无法加载”是什么状况;如果可以的话,希望能提供一些更有意义的信息(比如在工具的界面里,先展开详细信息(如果有的话),然后按 Ctrl+C,最后粘贴在帖子的回复里)。
[*]首先,我猜你遇到的情况是“索引中有 xxx 个字体,xxx 种名称”这一行提示,里面的数字应该不是 0,但是上面一行提示的是“0 个字体加载成功”;
[*]然后,请看一下详细信息是否显示“ok”,如果是的话,你已经系统全局安装了这些字体,不需要再用这个工具来临时加载了。
[*]如果没有详细信息的话,大概是工具没有识别出字幕,请检查一下字幕文件是否已经解压缩,格式是否为 ASS,字幕里是否有指定字体的命令。(如果不知道如何判断的话,可以挑一个字幕文件作为附件上传到贴子里)。
kelvintsang
发表于 2020-5-25 05:04:49
發覺最近重新安裝了windows,並更新到最新版本,使用這程式加載字體會閃退(拉字幕到程式,載入字幕 -> 立即閃退)
是不是有dependency 未安裝令到軟件出錯?
ps: winver 1909(18363.836)
yzwduck
发表于 2020-5-25 07:40:23
kelvintsang 发表于 2020-5-25 05:04
發覺最近重新安裝了windows,並更新到最新版本,使用這程式加載字體會閃退(拉字幕到程式,載入字幕 -> 立即 ...
这个工具没有 Windows 操作系统本身以外的 dependency,从描述来看,应该是遇到 bug 了。
能否将下列文件附在帖子里,这样我就能调查问题了。
[*]FontLoaderSub.exe
[*]fc-subs.db
[*]导致闪退的字幕
kelvintsang
发表于 2020-5-25 15:22:39
本帖最后由 kelvintsang 于 2020-5-25 15:25 编辑
yzwduck 发表于 2020-5-25 07:40
这个工具没有 Windows 操作系统本身以外的 dependency,从描述来看,应该是遇到 bug 了。
能否将下列文件 ...
從結論來看是所有字幕都會閃退不是某一個字幕造成的
我也試了不同字體
在加載的時候會閃退,不論字幕或字體是甚麼
我上傳了這些檔案,麻煩看看能不能debug
页:
1
2
3
4
5
6
7
8
9
[10]
11
12
13
14
15
16
17