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

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

该用户从未签到

7

主题

50

回帖

0

VC币

注册会员

Rank: 2

积分
898
QH7B 发表于 2024-10-7 15:40:05 | 显示全部楼层
最新版对于同名字体的处理还是有问题:

截图上的这几个字都没能正确显示,原始字体是 冬青黑体简体中文 W6 ,图中“我”“的”显示的是 冬青黑体简体中文 W3 ,其他文字都是默认字体。
字幕和字体蓝奏云:iXiOf2bvceof


我自己分析出的原因是冬青黑体简体中文 W6 和 冬青黑体简体中文 W3 这两个字体子集化后字体名相同,字幕文本里的字体名称也相同,而且都是Regular样式,播放器无法区分这两个字体,只能使用其中的一个。
回复

使用道具 举报

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

    [LV.7]常住居民III

    3

    主题

    77

    回帖

    63

    VC币

    荣誉会员

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

    积分
    101914
    788也瘋狂 发表于 2024-10-7 19:35:55 | 显示全部楼层
    QH7B 发表于 2024-10-7 15:40
    最新版对于同名字体的处理还是有问题:

    截图上的这几个字都没能正确显示,原始字体是 冬青黑体简体中文 W6 ...

    這個問題著實難受,我也要去修改我的程式了mmm
    他們其實 nameID 1 是一樣的 nameID 2 是不一樣的 就跟 msyh 與 msyhbd一樣 不過我懷疑 原始ASS文件中 是使用他的 nameID 4 去命名的 感覺是有優先權的概念在裡面


    [V4+ Styles]
    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    Style: Default,微软雅黑,46,&H00FFFFFF,&H00FFFFFF,&H00275FD4,&H00275FD4,0,0,0,0,100,100,0,0,1,1,2,2,10,10,10,1
    Style: Screen,Hiragino Sans GB W6,32,&H00477A9F,&H00477A9F,&H00477A9F,&H00477A9F,0,0,0,0,100,100,0,0,1,0,0,5,10,10,10,1

    [Events]
    Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    Dialogue: 0,0:00:00.00,0:00:25.87,Default,,0,0,0,,请享用我们的{\fn微软雅黑 Bold}头部吧
    Dialogue: 0,0:00:00.00,0:07:58.29,Screen,,0,0,0,,{\an4\fn微软雅黑\b1\c&H000000&\pos(16,52)}一直以来承蒙

    這是一個範例 其中 (微软雅黑 Bold) 跟 (\fn微软雅黑\b1) 使用的字體因該是一樣的....
    當子集化後因該保留該字體原始的樣式名稱 然後對 nameID 1 名稱進行重命名(微软雅黑)就好 不用 (微软雅黑 Bold) 整個更名

    不過這問題讓我腦袋很卡中CPU都快被幹掉了





    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    92

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    30514
    b8b41e3c  楼主| 发表于 2024-10-7 19:47:18 | 显示全部楼层
    QH7B 发表于 2024-10-7 15:40
    最新版对于同名字体的处理还是有问题:

    截图上的这几个字都没能正确显示,原始字体是 冬青黑体简体中文 W6 ...

    v5.6.2已修复这个问题.
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    92

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    30514
    b8b41e3c  楼主| 发表于 2024-10-7 19:55:39 | 显示全部楼层
    788也瘋狂 发表于 2024-10-7 19:35
    這個問題著實難受,我也要去修改我的程式了mmm
    他們其實 nameID 1 是一樣的 nameID 2 是不一樣的 就跟 msy ...

    用v5.6.2测试了你的这个demo,没有问题:
    [Script Info]
    ; ----- Font subset begin -----
    ; Font subset: NGLSB1AJ - 微软雅黑

    ; Processed by mkvlib 3.1.2 at 2024-10-07 19:53:55
    ; -----  Font subset end  -----

    [V4+ Styles]
    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    Style: Default,NGLSB1AJ,46,&H00FFFFFF,&H00FFFFFF,&H00275FD4,&H00275FD4,0,0,0,0,100,100,0,0,1,1,2,2,10,10,10,1
    Style: Screen,Hiragino Sans GB W6,32,&H00477A9F,&H00477A9F,&H00477A9F,&H00477A9F,0,0,0,0,100,100,0,0,1,0,0,5,10,10,10,1

    [Events]
    Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    Dialogue: 0,0:00:00.00,0:00:25.87,Default,,0,0,0,,请享用我们的{\fnNGLSB1AJ}头部吧
    Dialogue: 0,0:00:00.00,0:07:58.29,Screen,,0,0,0,,{\an4\fnNGLSB1AJ\b1\c&H000000&\pos(16,52)}一直以来承蒙




    本帖子中包含更多资源

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

    x
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    3

    主题

    77

    回帖

    63

    VC币

    荣誉会员

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

    积分
    101914
    788也瘋狂 发表于 2024-10-7 20:10:03 | 显示全部楼层
    本帖最后由 788也瘋狂 于 2024-10-7 20:11 编辑
    b8b41e3c 发表于 2024-10-7 19:55
    用v5.6.2测试了你的这个demo,没有问题:

    我知道文件不會缺字 種點是播放器不會判斷給粗體 因該會缺字播放器上面
    你想想
    Dialogue: 0,0:00:00.00,0:00:25.87,Default,,0,0,0,,请享用我们的{\fnNGLSB1AJ}头部吧
    {\fnNGLSB1AJ}基本上就沒改啊
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    92

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    30514
    b8b41e3c  楼主| 发表于 2024-10-7 20:27:36 | 显示全部楼层
    本帖最后由 b8b41e3c 于 2024-10-7 23:11 编辑
    788也瘋狂 发表于 2024-10-7 20:10
    我知道文件不會缺字 種點是播放器不會判斷給粗體 因該會缺字播放器上面
    你想想
    Dialogue: 0,0:00:00.00,0: ...

    正常的啊?
    mpv

    potplayer


    mpv没有问题,但PotPlayer"头部吧"有问题,
    哦,我大概知道你的意思了,但这种问题确实难搞啊,这种字幕确实很犯贱

    本帖子中包含更多资源

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

    x
    回复

    使用道具 举报

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

    [LV.7]常住居民III

    3

    主题

    77

    回帖

    63

    VC币

    荣誉会员

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

    积分
    101914
    788也瘋狂 发表于 2024-10-7 23:22:46 | 显示全部楼层
    我想了一下我給自己的程式增加兩條規則
    nameID1 要完全一樣才能觸發 子集後字體名一致
    另一條是 如果ASS原始定義的名稱 在 nameID1 裡面收集不到 則輸出時使用自定義的 nameID 4 來代替

    解論輸出因該會這樣>

    [V4+ Styles]
    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    Style: Default,NGLSB1AJ,46,&H00FFFFFF,&H00FFFFFF,&H00275FD4,&H00275FD4,0,0,0,0,100,100,0,0,1,1,2,2,10,10,10,1
    Style: Screen,Hiragino Sans GB W6,32,&H00477A9F,&H00477A9F,&H00477A9F,&H00477A9F,0,0,0,0,100,100,0,0,1,0,0,5,10,10,10,1

    [Events]
    Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    Dialogue: 0,0:00:00.00,0:00:25.87,Default,,0,0,0,,请享用我们的{\fnNGLSB1AJ Bold}头部吧
    Dialogue: 0,0:00:00.00,0:07:58.29,Screen,,0,0,0,,{\an4\fnNGLSB1AJ\b1\c&H000000&\pos(16,52)}一直以来承蒙
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    92

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    30514
    b8b41e3c  楼主| 发表于 2024-10-8 00:05:11 | 显示全部楼层
    本帖最后由 b8b41e3c 于 2024-10-8 00:09 编辑
    788也瘋狂 发表于 2024-10-7 23:22
    我想了一下我給自己的程式增加兩條規則
    nameID1 要完全一樣才能觸發 子集後字體名一致
    另一條是 如果ASS原 ...

    还有一个办法,但要重写整个字体解析的部分,外带子集化的实现也得重写,为了这种犯贱的字幕真的值得吗?

    最终解决方案是:用了多少个名字,子集化的时候就加多少个进去
    隔壁assfonts在不勾选重命名的时候,就是这么做的,但一旦勾选重命名了,那照样翻车.

    我反正是不太想管的,感觉从v5.5.7开始就在给不规范的字幕擦屁股,仿佛永远都擦不干净一样.

    回复

    使用道具 举报

    该用户从未签到

    7

    主题

    50

    回帖

    0

    VC币

    注册会员

    Rank: 2

    积分
    898
    QH7B 发表于 2024-10-8 11:00:00 | 显示全部楼层
    (纯个人观点)感觉只要字幕按照ass specs相关文档去写,没有未定义的用法,都应该算是规范的,只能说ass格式本身为了实现可编辑性导致不够严谨,给播放器实现和子集化操作造成困难。如assfonts作者所说,解决办法好像只有使用pgs这种工业格式,我也倾向于在封装时都使用这种格式的字幕,但目前还没有见到哪个字幕组肯制作pgs字幕,想转换出正确的pgs字幕还是得逐个检查修改保证原ass字幕没有问题才行,而且这个转换实在太慢太费时了。
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    92

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    30514
    b8b41e3c  楼主| 发表于 2024-10-8 15:07:05 | 显示全部楼层
    本帖最后由 b8b41e3c 于 2024-10-8 16:26 编辑
    QH7B 发表于 2024-10-8 11:00
    (纯个人观点)感觉只要字幕按照ass specs相关文档去写,没有未定义的用法,都应该算是规范的,只能说ass格 ...

    只要字体名字不混用,不把粗体族当普通族用,就不会出现子集化后乱配字体名的问题.
    已经懒得再擦屁股了.
    按我的想法直接报错就算了.

    v5.6.3开始,发现混用字体名默认直接报错,可通过--no-font-check-strict参数关掉严格模式以跳过.

    回复

    使用道具 举报

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

    本版积分规则

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