QH7B 发表于 2024-8-15 18:36:42

请教关于部分字体子集化后查看提示无效的问题

例如腾祥嘉丽粗圆、腾祥嘉丽准粗圆,子集化后打开和安装都提示字体无效,ListAssFonts无法识别,但是封装在mkv文件里播放能却能正常显示文字,请问这是什么原理?为什么无效字体封装后能正常加载?怎样才能使ListAssFonts正确识别这些字体?使用fontforge倒是能打开,但是重新生成的字体文字都走形了。

tmdtmdtmdqq 发表于 2024-8-15 19:02:55

你应该说出你的需求,你为何要打开子集化后的字体?这种操作本来就没什么意义

QH7B 发表于 2024-8-15 20:21:53

只是想检查自己几个月前封装的mkv文件是否存在问题,当时还是刚学习如何封装字幕,有些字体缺字或者不兼容就直接忽略用mkvtoolnix封装进去了,现在观看发现问题有点多,就把字体字幕全部导出然后用ListAssFonts检查,发现有几个字体播放显示正常但工具无法识别,甚至还有的字体没有被子集化,例如AvenirNextW1G-Demi这个字体,所以才在这里请教确认是工具bug或者字体版本不对,还是正常现象不用管。子集化用的assfonts这个工具,AssFontSubset经常蓝屏不敢再用了。

StarRingChild 发表于 2024-8-15 20:31:23

不建议把字幕和字体封装进 MKV,可以单独封装成 MKS

tmdtmdtmdqq 发表于 2024-8-15 21:11:59

本帖最后由 tmdtmdtmdqq 于 2024-8-15 21:13 编辑

ListAssFonts如果没报错,那基本是正常的
ListAssFonts报错,并不代表说一定就是有问题。有可能是误报,或因缺失某些功能导致检测失效报错。
比如,ListAssFonts不能检测出使用调用Full font name设置的字体,但是播放器是可以识别正常显示的
以自己实际观看效果才是最准确的。




关于AvenirNextW1G-Demi这个,我试了一下用assfonts v0.7.1是能正常子集化和改名的,应该属于个别情况,有问题就去assfonts那帖回帖询问(带字幕文件)。


QH7B 发表于 2024-8-16 01:16:35

感谢解答,目前貌似无法上传附件,所以只能用文字描述。
例如下面这行,fn后面的字体直接忽略了,没有被子集化也没有改名:



Dialogue: 0,0:00:05.86,0:00:07.29,Default,,0,0,0,,首先是 {\rSemanian\fnAvenirNextW1G-Demi\fs55}Dāshu·zanna

但是这行却能够正常识别,就很奇怪:

Dialogue: 0,0:00:07.77,0:00:10.49,Default,,0,0,0,,{\fnMKUYZZLY\fs50}niiko·zanna{\r} 就是「能不能」
两行代码来自Cop Craft的SP字幕。
另外近30T的资源逐个提取字幕字体再检查太消耗时间了,要是能有更高效的办法就好了。。

tmdtmdtmdqq 发表于 2024-8-16 01:46:28

本帖最后由 tmdtmdtmdqq 于 2024-8-16 01:58 编辑

QH7B 发表于 2024-8-16 01:16
感谢解答,目前貌似无法上传附件,所以只能用文字描述。
例如下面这行,fn后面的字体直接忽略了,没有被子 ...
大概看了看,应该是assfonts里的一段tag分析代码逻辑考虑不周:
void AssParser::StyleOverride(const nonstd::string_view code,
                              FontDesc& font_desc,
                              const FontDesc& font_desc_style,
                              const unsigned int line_num,
                              const char* line_beg) {
ChangeFontname(code, font_desc, font_desc_style, line_num, line_beg);
ChangeBold(code, font_desc, font_desc_style);
ChangeItalic(code, font_desc, font_desc_style);
ChangeStyle(code, font_desc, font_desc_style, line_num);
}只是按顺序去判断\fn、\b、\i、\r
没有考虑到\r后再进行\fn的操作
因为判断\r的方法ChangeStyle写在最后,所以最后用了\r样式所写的字体
这样的判断逻辑是有问题的,因为\r跟\fn、\r跟\b、\r跟\i这三对操作是各有交集的,都会对各自的后者有影响,不能直接单次判断就完了
应该是这三对操作中,哪个tag最后出现就用哪个(\r样式存在的情况下)








tonyhsie 发表于 2024-8-16 02:44:53

tmdtmdtmdqq 发表于 2024-8-15 21:11
ListAssFonts如果没报错,那基本是正常的
ListAssFonts报错,并不代表说一定就是有问题。有可能是误报,或 ...


根據我個人的實驗
在 .ass 字幕檔案裡,不是所有字型都能用 full font name 的形式來調用

所以 ListAssFonts 不認 full font name

QH7B 发表于 2024-8-17 16:29:04

tonyhsie 发表于 2024-8-16 02:44
根據我個人的實驗
在 .ass 字幕檔案裡,不是所有字型都能用 full font name 的形式來調用



请问Error.txt里full-width chars in override codes错误应该怎样处理?

tonyhsie 发表于 2024-8-17 19:39:05

QH7B 发表于 2024-8-17 16:29
请问Error.txt里full-width chars in override codes错误应该怎样处理?

{\xxxxx} 裡有全型字母或數字,修正回半型即可
页: [1]
查看完整版本: 请教关于部分字体子集化后查看提示无效的问题