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

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

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    69

    主题

    1296

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2830278

    卓越贡献

    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 時,不會有問題嗎?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    90

    回帖

    0

    VC币

    荣誉会员

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

    积分
    108030
    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)能会找到字体。

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

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    69

    主题

    1296

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2830278

    卓越贡献

    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

    积分
    108030
    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。但是现在的代码里没有保存这种信息,所以当前版本无法简单实现,只能依靠名称的前缀了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    69

    主题

    1296

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2830278

    卓越贡献

    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

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

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

    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-11-20 09:35
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    7

    主题

    34

    回帖

    29

    VC币

    高级会员

    Rank: 4

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

    使用道具 举报

    该用户从未签到

    2

    主题

    90

    回帖

    0

    VC币

    荣誉会员

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

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

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

    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-11-20 09:35
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    7

    主题

    34

    回帖

    29

    VC币

    高级会员

    Rank: 4

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

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

    我上傳了這些檔案,麻煩看看能不能debug




    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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