AmusementClub / AssFontSubset

使用 fonttools 生成 ASS 字幕文件的字体子集,并自动修改字体名称及 ASS 文件中对应的字体名称
185 stars 4 forks source link

当同时使用一个字体的多个不同字体名时,仅能找到其中的一个 #3

Closed krishukr closed 1 year ago

krishukr commented 1 year ago

方正准雅宋_GBK.ttf 为例,其 name 部分的 ttx 如下:

<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.34">

  <name>
    <namerecord nameID="0" platformID="1" platEncID="0" langID="0x0" unicode="True">
      Copyright(c) Beijing Founder Electronics Co.,Ltd.2008
    </namerecord>
    <namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
      FZYaSong-M-GBK
    </namerecord>
    <namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
      Regular
    </namerecord>
    <namerecord nameID="3" platformID="1" platEncID="0" langID="0x0" unicode="True">
      Founder:FZYaSong-M-GBK    Regular
    </namerecord>
    <namerecord nameID="4" platformID="1" platEncID="0" langID="0x0" unicode="True">
      FZYaSong-M-GBK
    </namerecord>
    <namerecord nameID="5" platformID="1" platEncID="0" langID="0x0" unicode="True">
      1.00
    </namerecord>
    <namerecord nameID="6" platformID="1" platEncID="0" langID="0x0" unicode="True">
      FZZYSK--GBK1-0
    </namerecord>
    <namerecord nameID="7" platformID="1" platEncID="0" langID="0x0" unicode="True">
      By Beijing Founder Electronics Co.,Ltd. ±±æ©±±¥Û∑Ω’˝µÁ◊””–œfiπ´Àæ
    </namerecord>
    <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
      Copyright(c) Beijing Founder Electronics Co.,Ltd.2008
    </namerecord>
    <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
      FZYaSong-M-GBK
    </namerecord>
    <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
      Regular
    </namerecord>
    <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
      Founder:FZYaSong-M-GBK    Regular
    </namerecord>
    <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
      FZYaSong-M-GBK
    </namerecord>
    <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
      1.00
    </namerecord>
    <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
      FZZYSK--GBK1-0
    </namerecord>
    <namerecord nameID="7" platformID="3" platEncID="1" langID="0x409">
      By Beijing Founder Electronics Co.,Ltd. 北京北大方正电子有限公司
    </namerecord>
    <namerecord nameID="0" platformID="3" platEncID="1" langID="0x804">
      Copyright(c) Beijing Founder Electronics Co.,Ltd.2008
    </namerecord>
    <namerecord nameID="1" platformID="3" platEncID="1" langID="0x804">
      方正准雅宋_GBK
    </namerecord>
    <namerecord nameID="2" platformID="3" platEncID="1" langID="0x804">
      Regular
    </namerecord>
    <namerecord nameID="3" platformID="3" platEncID="1" langID="0x804">
      Founder:方正准雅宋_GBK Regular
    </namerecord>
    <namerecord nameID="4" platformID="3" platEncID="1" langID="0x804">
      方正准雅宋_GBK
    </namerecord>
    <namerecord nameID="5" platformID="3" platEncID="1" langID="0x804">
      1.00
    </namerecord>
    <namerecord nameID="6" platformID="3" platEncID="1" langID="0x804">
      FZZYSK--GBK1-0
    </namerecord>
    <namerecord nameID="7" platformID="3" platEncID="1" langID="0x804">
      By Beijing Founder Electronics Co.,Ltd. 北京北大方正电子有限公司
    </namerecord>
  </name>

</ttFont>

其有两个 fullname :FZYaSong-M-GBK方正准雅宋_GBK 。如果此时在字幕文件中同时出现这两种 fullname 的使用,仅能找到前者而会报找不到后者。

相关代码片段:

https://github.com/tastysugar/AssFontSubset/blob/c2893ae50fd1494aa382bd4e3f4f3ee2d5fdecda/AssFontSubset/MainWindow.xaml.cs#L322-L326