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

mkvtool:一个ass字幕子集化/mkv文件处理一条龙工具

  • TA的每日心情
    慵懒
    15 小时前
  • 签到天数: 250 天

    [LV.8]以坛为家I

    7

    主题

    31

    回帖

    0

    VC币

    荣誉会员

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

    积分
    101127
    op200 发表于 2024-10-18 10:01:41 | 显示全部楼层
    请问mkvtool有将子集化后的字体保留名字的功能吗?
    类似于"字体名.0.随机数"
    这样可以用ListAssFonts进行还原
    回复

    使用道具 举报

    该用户从未签到

    7

    主题

    50

    回帖

    0

    VC币

    注册会员

    Rank: 2

    积分
    898
    QH7B 发表于 2024-10-18 10:33:01 | 显示全部楼层
    op200 发表于 2024-10-18 10:01
    请问mkvtool有将子集化后的字体保留名字的功能吗?
    类似于"字体名.0.随机数"
    这样可以用ListAssFonts进行还 ...

    mkvtool是有在ASS文件里记录原字体名信息的,可以用记事本打开查看,但是只能作为参考,字符串替换不一一对应是无法完全还原的。你可以看看这个帖子:

    https://bbs.acgrip.com/forum.php?mod=redirect&goto=findpost&ptid=9897&pid=110584


    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    92

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    30514
    b8b41e3c  楼主| 发表于 2024-10-18 11:19:53 | 显示全部楼层
    QH7B 发表于 2024-10-18 10:33
    mkvtool是有在ASS文件里记录原字体名信息的,可以用记事本打开查看,但是只能作为参考,字符串替换不一一 ...

    理论上只要没出现字体名混用问题(从v5.6.3开始这种情况会默认报错罢工),是可以一一对应上的,最多是和原来的字体名不一样,但对应的都是同一个字体文件.直接还原没有问题,但如果有字体名混用的情况,那不好意思了,确实会有概率对应不上.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-12-11 05:40
  • 签到天数: 151 天

    [LV.7]常住居民III

    3

    主题

    77

    回帖

    63

    VC币

    荣誉会员

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

    积分
    101912
    788也瘋狂 发表于 2024-10-18 12:07:15 | 显示全部楼层
    我說其實那不算字體名混用 是本來就可以這樣用 字體名+樣式
    還有一種(可變字體Variable Font 簡稱VF) 要細用 都是 字體名 + 樣式 這樣去選擇他的不同樣式
    我自己寫的工具直接邏輯大改. 現在只對 nameid1 改名 保留樣式資料 並對ASS文件加了判斷 判斷他是不是字體名 + 樣式 這樣命名的 然後 只會針對 字體名 重新定義名稱
    我也不清楚我思路有沒有走對 不過測試下來 還沒發現問題
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    92

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    30514
    b8b41e3c  楼主| 发表于 2024-10-18 12:43:02 | 显示全部楼层
    本帖最后由 b8b41e3c 于 2024-10-18 12:59 编辑
    788也瘋狂 发表于 2024-10-18 12:07
    我說其實那不算字體名混用 是本來就可以這樣用 字體名+樣式
    還有一種(可變字體Variable Font 簡稱VF) 要細 ...

    是,如果仅仅从使用上来讲,那确实是正常的使用方式没有任何问题,但为了这种支持使用方式写的ass,工具要花大量的精力去做匹配,根本原因是现在除了隔壁的assfonts,其他的工具子集化的产物,一个字体文件只能包含一个唯一的字体名,除非不合并文件,但这样会引发其他问题.而隔壁的assfonts的方案是,把那些字体用到的所有名字再打进子集化的字体文件里,够简单粗暴,后果也很明显,如果发生了重命名,那么重命名后的字体就有概率还原不回去.

    反正我是准备一刀切了,实在太费神了这种事.而且收益比不太大,如果你硬要用子集化,自己修改一下ass也不是什么问题.

    关于这种情况有个例子:
    比如你在同一份ass里,用到了常规体和粗体的"微软雅黑",你最好是用{\b1\fn微软雅黑}或者在style里把Bold设置成-1来实现粗体,不要有"{\b1\fn微软雅黑}"的同时还有类似{\fn微软雅黑 Bold}的东西来实现粗体,这种对工具来说就是不待见的,我说的字体名混用就是指这种情况,当然放在原版字幕里,它就是合法的,可以正常播放的,但子集化工具为了兼容这种东西,要花很多精力.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-12-11 05:40
  • 签到天数: 151 天

    [LV.7]常住居民III

    3

    主题

    77

    回帖

    63

    VC币

    荣誉会员

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

    积分
    101912
    788也瘋狂 发表于 2024-10-18 14:01:54 | 显示全部楼层
    我在說的是另一種字體 例如 SourceHanSerifSC-VF.otf
    在ASS 中可以定義為 (其實不只限ASS 只要是可以選擇字體的東西好像都支援這樣定義?)
    Source Han Serif SC VF Weight
    Source Han Serif SC VF ExtraLight
    Source Han Serif SC VF Light
    Source Han Serif SC VF Medium
    等等還蠻多的都可以指向它 照我說的只重命名nameid1的話是
    自定義FontName Weight
    自定義FontName ExtraLight
    自定義FontName Light
    自定義FontName Medium
    微軟雅黑那個就不是一個可變字體不同性質

    好吧你懶得改我尊重你的選擇維持現狀就好 反正我只是上來閒聊的mm

    額外話
    還有我覺得字集化是否需要返回成原始字體名的支持是持反對的 因為子集化最終都是要包進mks 或mpv 裡面的... 抽出來字幕每行排序都會被重新排序,根本沒辦法是原始ASS的排序(請叫發布者提供他不提供就是叫你別搞),還會增加屁眼大小的容量,不過照我這思入返回原本字體沒感覺到有BUG.
    回复

    使用道具 举报

    该用户从未签到

    7

    主题

    50

    回帖

    0

    VC币

    注册会员

    Rank: 2

    积分
    898
    QH7B 发表于 2024-10-18 14:19:35 | 显示全部楼层
    b8b41e3c 发表于 2024-10-18 11:19
    理论上只要没出现字体名混用问题(从v5.6.3开始这种情况会默认报错罢工),是可以一一对应上的,最多是和原来 ...

    好的,感谢指正!还有一个小问题想请教一下:一个样式要想使用斜体,Italic那里是只能设置为-1,还是-1和1都可以?assfonts和MPC-HC好像两种都会认为是斜体,而mkvtool只有设置-1才会认为是斜体。
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    92

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    30514
    b8b41e3c  楼主| 发表于 2024-10-18 15:37:07 | 显示全部楼层
    本帖最后由 b8b41e3c 于 2024-10-18 15:40 编辑
    QH7B 发表于 2024-10-18 14:19
    好的,感谢指正!还有一个小问题想请教一下:一个样式要想使用斜体,Italic那里是只能设置为-1,还是-1和 ...

    以ass specs为准

    Field 8:        Bold. This defines whether text is bold (true) or not (false). -1 is True, 0 is False. This is independant of the Italic attribute - you can have have text which is both bold and italic.

    Field 9:        Italic. This defines whether text is italic (true) or not (false). -1 is True, 0 is False. This is independant of the bold attribute - you can have have text which is both bold and italic.


    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    15 小时前
  • 签到天数: 250 天

    [LV.8]以坛为家I

    7

    主题

    31

    回帖

    0

    VC币

    荣誉会员

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

    积分
    101127
    op200 发表于 前天 07:01 | 显示全部楼层
    本帖最后由 op200 于 2024-11-20 09:16 编辑

    你好,我遇到了一个bug:

    我尝试子集化 FOT-RodinProN-DB.otf,子集化后的字体封装在mkv中,我发现有些字幕滤镜无法正确调用mkv中的这个子集化后的字体,有些则可以:
    vsfilter(mod)可以、mpv 可以、直接安装子集化后的字体 可以、xy subfilter with libass 不可以、mpc-hc内置的libass 不可以


    我也尝试了另一个基于fonttools的子集化工具,这个工具甚至无法子集化这个字体,所以我认为大概率是字体本身的问题


    2024.11.20
    补充:
    我发现直接封装未子集化的字体、或者将这个字体转为ttf再子集化,字幕滤镜就可以成功渲染;
    在不改变字幕滤镜的情况下,有些ttf字体转为otf会导致无法渲染

    本帖子中包含更多资源

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

    x
    回复

    使用道具 举报

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

    本版积分规则

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