op200
发表于 2024-10-18 10:01:41
请问mkvtool有将子集化后的字体保留名字的功能吗?
类似于"字体名.0.随机数"
这样可以用ListAssFonts进行还原
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
b8b41e3c
发表于 2024-10-18 11:19:53
QH7B 发表于 2024-10-18 10:33
mkvtool是有在ASS文件里记录原字体名信息的,可以用记事本打开查看,但是只能作为参考,字符串替换不一一 ...
理论上只要没出现字体名混用问题(从v5.6.3开始这种情况会默认报错罢工),是可以一一对应上的,最多是和原来的字体名不一样,但对应的都是同一个字体文件.直接还原没有问题,但如果有字体名混用的情况,那不好意思了,确实会有概率对应不上.
788也瘋狂
发表于 2024-10-18 12:07:15
我說其實那不算字體名混用 是本來就可以這樣用 字體名+樣式
還有一種(可變字體Variable Font 簡稱VF) 要細用 都是 字體名 + 樣式 這樣去選擇他的不同樣式
我自己寫的工具直接邏輯大改. 現在只對 nameid1 改名 保留樣式資料 並對ASS文件加了判斷 判斷他是不是字體名 + 樣式 這樣命名的 然後 只會針對 字體名 重新定義名稱
我也不清楚我思路有沒有走對 不過測試下來 還沒發現問題
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}的东西来实现粗体,这种对工具来说就是不待见的,我说的字体名混用就是指这种情况,当然放在原版字幕里,它就是合法的,可以正常播放的,但子集化工具为了兼容这种东西,要花很多精力.
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.
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才会认为是斜体。
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.
op200
发表于 3 天前
本帖最后由 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会导致无法渲染