请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
查看: 24226|回复: 273

ListAssFonts: 小工具,分析字幕使用的字型 (2019/6/25 更新)

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    14

    主题

    321

    帖子

    901

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    414209
    tonyhsie 发表于 2016-12-11 19:35:58 | 显示全部楼层 |阅读模式
    本帖最后由 tonyhsie 于 2019-6-25 12:13 编辑

    因為最近比較常看動畫,但每一套字幕用到的字型都不同
    有時字型包裡又有缺漏,或是有些字型壓根就沒用到

    於是自己寫了個小程式來判斷字幕檔裡到底用了哪些字型
    (C# .NetFramework 4.5.2 環境)

    v170703~


    v170105 ~ v170519


    v170101


    v161212


    第一版



    主要功能


    1. 列出.ass/.ssa字幕檔裡實際用到的字型,並以紅黑顏色來表示未安裝(/粉紅) 及已安裝字型(黑/)
    2. 列出系統裡已安裝的所有字型,包含英文/繁中/簡中/日文字型名
    3. 可選擇是否自動存成文字檔 (勾選右下 Save .txt)
    4. 可選擇是否導出字型文件 (勾選下方 Save Fonts)
    5. 按F12/Menu鍵可導出 debug 用的純文字文件,方便報錯/除錯
    6. 在繁中OS下,將可能缺字的字幕部分,另外生成 "*.NeedVerify.ass",方便字幕作者檢視
    不需要產生 "*.NeedVerify.ass" 測試字幕時,可使用捷徑 "ListAssFonts.exe -nnv" 的方式來執行
    7. 另外產生完整去除字型子集 "; Font Subset: " 的字幕
    8. 另外產生內嵌字型檔案、以及,去除內嵌字型 [Fonts] 區段的字幕


    操作方式


    1. 可直接拖曳字幕檔案或目錄到其上,或用 Select 按鈕選目錄、或手動輸入目錄 enter 皆可
    2. 點 Installed Fonts 鈕,則列出系統已安裝字型
    3. fonts.txt 會存於字幕目錄下,installedFonts.txt 則存於程式本身目錄下,若有勾選 Save Fonts,則會存到 字幕\Fonts\目錄下
    4. 字型會存到字幕目錄\Fonts\ 下,不管複製成功或失敗,結果都會顯示於字型後面,如最上面的圖  copied 代表字型複製成功,not installed 代表系統未安裝此字幕,not found 代表在註冊表裡或系統字型文件夾裡找不到此字型



    截圖說明


    截圖是以俺妹字幕為例,列出俺妹一二季全字幕檔實際用到的字型


    目前除了黑色跟紅色,另外用藍色粉紅色來顯示特殊字型

    黑色 - 已安裝字型
    藍色 - 已安裝的特殊字型

    紅色 - 未安裝字型
    粉紅 - 未安裝的特殊字型


    特殊字型的定義是,在 .ass/.ssa 裡正常定義也正常安裝,卻可能仍然沒有正常顯示出來的字型
    發生的原因未知,如果有人知道原理,也請告知一下

    例如

    1. 日文字型 FOT-マティス Pro B (FOT-Matisse Pro B)
     在使用直式字型 @FOT-マティス Pro B 時,無法正常顯示,改成 @FOT-Matisse Pro B 則正常

    2. 華康中圓體(P) (DFPYuanMedium-B5)
     在使用 \fn華康中圓體(P) 時,無法正常顯示,改成 \fnDFPYuanMedium-B5 則正常

    3. Noto 字型 (Google) + Style 行設定了錯誤的 encoding 時,如繁中 Windowns + 134(GB2313) 或簡中 Windows + 136(BIG5)

    4. Source Hans/思源 字型 (Adobe) 跟 Noto 是一模一樣的字型 (只有字型名稱不同)
     思源黑體(Source Han Sans) = Noto Sans,思源宋體(Source Han Serif) = Noto Serif


    用特別的顏色來提醒使用者,這些字型可能要修改 .ass/.ssa 檔後才能正常顯示 (1/2/3),或是避免重覆安裝 (4)


    更新日誌

    v190625

    新功能 or bug 修正

      1. 修正一個跟 "思源宋體" super/mega/ultra OTCs 等超大字型檔案相關的 bug
      2. 華康字型安裝時,OS 可能會改字型的檔名;ListAssFonts 在複製字型的時候,會復原其原名 (ex: DFT_4.TTC -> DFT_CD7.TTC)
       修正 DFT_[A-F].TTC 檔名沒有被修正回來的問題

    字型相關

      3. 支援 "Cabin Bold" 字型


    v190615

    新功能 or bug 修正
      1. 更改 DPI 相關設定
      2. 一些細微修正

    字型相關

      3. 支援 "思源黑體 / Noto Sans v2.001", "思源等寬" 等字型
      4. 支援 "思源 / Noto v2.001" super/mega/ultra OTCs 等超大字型檔案
      5. 程式會區分 "思源黑體 Bold v2.001 & v1.004" 的差異 (詳情另述)
      6. 拿掉韓國字型的韓國名字


    v190527

    新功能

      1. 完整支援 user fonts:字型列表、字型拷貝等功能都適用於 user fonts
           (Win 10  v1809 之後新增的特性,允許使用者新增字型到自己帳戶上,而不是新增到系統上)

      2. 支援內嵌字型的字幕檔,能把 .ass 裡 [Fonts] 區段裡的亂碼抽取成字型檔案,並另外產生移除此區段的新字幕檔 "*.RemoveFonts.ass"


    v190130

    新功能 or bug 修正

      1. 程式可能會重啟數次以完成工作 (解決原先無法取得某些字型的問題)
      2. 之前產生的 "installedFonts.debug.txt" 會保留,不會覆蓋掉
      3. 如果產生了 "RemoveFontSubsets" 資料夾,只打開資料夾而不一一打開各文件

    字型相關

      4. 支援 "Source Han Code JP", "黑體-", "ヒラギノ ProN" 等字型
      5. 支援 "思源 / Noto" super/mega/ultra OTCs 等超大字型檔案


    v181111

    新功能
      1. 若字幕是由內封的 .mkv 所抽出,而且有 ; Font Subset: 1953CQFC - Source Han Serif SC 這種樣式的字型子集定義,ListAssFonts 會產生另一個去除子集的正常字幕
      2. 由於 "\rnd" 是無法播放的字幕特效,在繁中環境下生成 "*.NeedVerify.ass" 時也會加入含有 "\rnd" 的該行字幕
      3. 新增參數 -NNV (大小寫皆可),不需要產生 "*.NeedVerify.ass" 測試字幕時,可使用捷徑 "ListAssFonts.exe -nnv" 的方式來執行

    字型相關

      4. 支援 "H-新雅蘭" 字型
      5. 建議安裝 "思源字型" 而非 "Noto 字型",因為字幕若使用直式的 Noto 字型,可能無法正常顯示 (思源字型使用@+中文字型名稱時則正常)
      6. 支援特殊的粗體字型: "思源宋體 Bold"、"Noto Serif Bold"、"微軟正黑體 Bold"、"微软雅黑 Bold"、"Microsoft JhengHei UI Bold"、"Microsoft YaHei UI Bold"、"Adobe Devanagari Bold"、"Malgun Gothic Bold"、"Arial Bold"
      7. 如果系統裡重複安裝了同一字型的不同版本,在導出字型時,程式會選擇 "檔案存取時間" 較新的檔案


    v180623

    1. 支援 騰祥、"BONX"、"Comic Runes" 字型
    2. 支援更多 "FOT", "A-OTF", "G-OTF" 字型
    3. 修正一些 "NeedVerify.ass" 遇到直式字幕的問題
    4. 修正 Win10 更新之後多了一些空行的問題

    v180322

    1. 為避免程式在掃描系統已字裝字型時中斷,跳過那些含有不合格字元的字型 Reg key (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts)

    v180310

    1. 修正 .ass 語法裡 \r & \rnd 的判斷問題

    v180213

    1. 在繁中OS下,將可能缺字的字幕部分,另外生成 "*.NeedVerify.ass",方便字幕作者檢視
    2. 修正 "Montara"、"Noto Sans Serif"、"Limited 源真" 字型顯示錯誤的問題
    3. 檢查華康字型的 style 設定問題


    v170704

    1. 修正 "经典" 字型名稱可能會有多餘的 "<>" 問題


    v170703

    1. 修正由 \fn 定義的字型名稱,最後面有空白字元時的問題

    2. 找出更多正確的字型名稱 (尤其是 Win7 環境下)

    3. 跳過字幕動畫部分以提升程式效率

    4. 修正 "清黑體" (韓文字型)、"Relish Pro"、"平成" (日文字型) 顯示的字型名稱,或是字型無法複製的問題

    5. 新增字型複製失敗的警告訊息

    6. 程式視窗的標題附加了版號 (ex: v170703)


    v170519

    bug fix:
            1. 修正若字幕有未定義的 style 時,ListAssFonts 會找不到任何字型的問題 (v170426 版才有的問題,可從附件下載測試字幕自行測試)
            2. 修正 Win7 下,Hiragino Maru 系列字型無法偵測的問題 (感謝 mung 大大告知此問題)
            3. 修正 方正兰亭特黑_GBK、PixelMplus12 等字型無法複製的問題

    new:
            4. 華康字型安裝時,OS 可能會改字型的檔名;ListAssFonts 在複製字型的時候,會復原其原名 (ex: DFT_4.TTC -> DFT_CD7.TTC)


    v170426


    1. Noto 字型 (Google) + Style 行設定了錯誤的 encoding 時,如繁中 Windowns + 134(GB2313) 或簡中 Windows + 136(BIG5),字型無法正確顯示
     這種情況下,該 Noto 字型會顯示成藍色 (已安裝) 或粉紅色 (未安裝)

    2. Source Hans/思源 字型 (Adobe) 跟 Noto 是一模一樣的字型 (只有字型名稱不同)
     思源黑體(Source Han Sans) = Noto Sans,思源宋體(Source Han Serif) = Noto Serif
     避免重覆安裝,也會顯示成藍色 (已安裝) 或粉紅色 (未安裝)


     建議 Noto 字型跟思源字型二擇一


     Noto CJK 字型官網下載 https://www.google.com/get/noto/help/cjk/


      思源與 Noto 字型名稱對照表:


            Source Han Sans, 思源黑体, 思源黑體, 源ノ角ゴシック 系列
            Source Han Sans Heavy -> Noto Sans CJK TC Black
            Source Han Sans Bold -> Noto Sans CJK TC Bold
            Source Han Sans Medium -> Noto Sans CJK TC Medium
            Source Han Sans Regular -> Noto Sans CJK TC Regular
            Source Han Sans Normal -> Noto Sans CJK TC DemiLight
            Source Han Sans Light -> Noto Sans CJK TC Light
            Source Han Sans ExtraLight -> Noto Sans CJK TC Thin
            Source Han Sans HW -> Noto Sans Mono CJK TC

            Source Han Serif, 思源宋体, 思源宋體, 源ノ明朝 系列
            *Source Han Serif Heavy -> Noto Serif CJK TC Black
            *Source Han Serif Bold -> Noto Serif CJK TC Bold
            *Source Han Serif SemiBold -> Noto Serif CJK TC SemiBold
            *Source Han Serif Medium -> Noto Serif CJK TC Medium
            Source Han Serif, 思源宋体 CN -> Noto Serif CJK TC
            *Source Han Serif Light -> Noto Serif CJK TC Light
            *Source Han Serif ExtraLight -> Noto Serif CJK TC ExtraLight


    3. 修正 \fn0 會被當作字型名稱 "0" 的問題 (其實 \fn0 作用是還原為該行字幕 Style 所定義的字型)

    4. 判斷特殊字型的條件更精確 (特殊字型:可能需修改字幕檔才能正確顯示的字型,字型名稱會顯示成藍色 (已安裝) 或粉紅色 (未安裝))

    5. 小細節修正


    v170113

    1. 修正 Windows 7 很多字型抓不到的問題

    2. 針對以下字體作修正,方正, 文泉驛, 翩翩體, 冬青, Kozuka/小塚, A-OTF/G-OTF, FOT, Sub, 蒙納

    3. 增加 debug 功能快速鍵 (F12 or 右 Ctrl 鍵左邊的 Menu 鍵),此模式會輸出一個純文字檔記錄系統字體資訊,方便使用者回報問題


    感謝 mung 大大協助作了不少測試,程式是在 Win10 開發的,不曉得原來 Win7 上會有很多找不到字型的問題
    現在應該都修正完畢了


    v170105

    1. 增加自動偵測安裝新字型或移除舊字型的功能,並提示是否要重啟以取得最新的字型清單


    v170101

    1. 新增導出字幕所用到字型檔案功能

    2. 新增 for 特殊字型 的兩種顯示顏色,藍色(已安裝),粉紅(未安裝)

    3. 修正未安裝字型在字型列表會變全小寫的問題


    v161216

    1. 文字檔改以 UTF-8 編碼


    v161212

    1. 同一字型的不同名稱 ex: 方正准圆_GBK & FZZhunYuan-M02,不再列為2筆,改為括孤內附註 => 方正准圆_GBK (FZZhunYuan-M02)
     截圖 1 是 v121616 版本的,圖 2 是舊版的,方便比較差異

    2. 改寫了 .ass/.ssa text文本的 parser,比舊版更精確識別了起作用的字型


    因為功能簡單不複雜,大伙應該都能輕鬆使用
    只是 15KB 的小程式而已,毋需安裝,也不使用 reg key 或設定文件,完全可攜

    如果有什麼疑問或建議,都歡迎告知,謝謝!








































    本帖子中包含更多资源

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

    x

    评分

    参与人数 37活跃度 +87823 收起 理由
    732351184a + 6400 很给力!
    蚌埠回旋 + 400 很给力!
    ItsukaK0tori + 200 很给力!
    l879406014 + 320 赞一个!
    atintel + 400 很给力!
    史莱姆KING + 400 很给力!
    夜空上的流星 + 25600 赞一个!
    Seekladoom + 32000 辛苦老哥持续更新了!
    hbhslsr + 400 很给力!
    点点菌 + 400 很给力!
    Brian_lu + 480 非常感谢
    trusheyard + 233 Wunderbar!
    AcMCZ + 640 赞一个!
    stevenlele + 800 很给力!
    rucifa + 100 赞一个!
    彼音星垠 + 1600 很给力!
    klplay001 + 400 很给力!
    lee850220 + 200 實用工具
    sun128764 + 200 很给力!
    kysdm + 2000 赞一个!

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-4-13 17:12
  • 签到天数: 434 天

    [LV.9]以坛为家II

    3

    主题

    23

    帖子

    0

    VC币

    荣誉会员

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

    积分
    139358
    黑山老妖 发表于 2016-12-11 22:15:08 | 显示全部楼层
    很实用的东西,暂时还没找到合适的字幕实验,主要是电脑里装的字幕太多了
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    郁闷
    2018-4-13 17:12
  • 签到天数: 434 天

    [LV.9]以坛为家II

    3

    主题

    23

    帖子

    0

    VC币

    荣誉会员

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

    积分
    139358
    黑山老妖 发表于 2016-12-11 22:53:02 | 显示全部楼层
    黑山老妖 发表于 2016-12-11 22:15
    很实用的东西,暂时还没找到合适的字幕实验,主要是电脑里装的字幕太多了 ...

    打错了,我想说的是装过的字体太多,随便丢个字幕文件的字体都是装过的
    刚刚特意找了几个没见过的字体改了个字幕试了下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-4-19 18:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    43

    帖子

    0

    VC币

    新手上路

    Rank: 1

    积分
    169
    adan1 发表于 2016-12-29 15:27:01 | 显示全部楼层
    不错,很早前就想弄个搜索字幕用到哪些字体,然后再按需加载。
    LZ有没做个命令行输出?方便读取数据
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18

    主题

    134

    帖子

    388

    VC币

    超级版主

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    28663
    TC 发表于 2016-12-29 16:52:56 | 显示全部楼层
    比舊版更精確識別了起作用的字型

    噗 你这样一说也是,顶上一堆style,下面一个都不用(
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-4-19 18:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    43

    帖子

    0

    VC币

    新手上路

    Rank: 1

    积分
    169
    adan1 发表于 2016-12-29 18:52:49 | 显示全部楼层

    TautCony
    讲道理,单单提取字体实现起来50行都到不了,通过命令行调用不嫌吃力啊。。。 这让我想到了js的pad-left


    不太会论坛的回帖代码,点评不能回复就试着这样at。

    其实我对字幕文件 还只是停留在能用软件进行调整修改的程度,字幕文件内的编写规范还是一片空白的;先不说有没故意不遵守规范的情况,我也没啥时间去研究学习,而目前有现成的工具为何不用呢,研究和维护都归作者所有。然后,各人的编写能力异同,又不想另花时间去学习,所以才挑个命令行来简化数据传输。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-12-31 01:33
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    14

    主题

    321

    帖子

    901

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    414209
    tonyhsie  楼主| 发表于 2016-12-29 20:07:34 | 显示全部楼层
    adan1 发表于 2016-12-29 15:27
    不错,很早前就想弄个搜索字幕用到哪些字体,然后再按需加载。
    LZ有没做个命令行输出?方便读取数据 ...

    不曉得你是要讀取什麼樣的數據

    可否具體描述一下你需要的功能是什麼?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18

    主题

    134

    帖子

    388

    VC币

    超级版主

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    28663
    TC 发表于 2016-12-29 20:48:15 | 显示全部楼层
    tonyhsie 发表于 2016-12-29 20:07
    不曉得你是要讀取什麼樣的數據

    可否具體描述一下你需要的功能是什麼?

    对于 adan1 所期望的最终的效果而言,
    困难点或者说麻烦的地方并不是在读取字幕中使用了哪些字体,
    而是再将其所整理的、未安装的字体文件夹下所有的字体文件,进行文件与这个文件对应的字体名称的匹配,
    再使用从字幕中获取的字体名称找到对应字体文件,最终调用AddFontResource进行临时加载。

    说远了,对于他在本帖中所述,把读到的字体名称逗号分隔输出就结束了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-4-19 18:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    43

    帖子

    0

    VC币

    新手上路

    Rank: 1

    积分
    169
    adan1 发表于 2016-12-30 13:09:01 | 显示全部楼层
    tonyhsie 发表于 2016-12-29 20:07
    不曉得你是要讀取什麼樣的數據

    可否具體描述一下你需要的功能是什麼?

    跟TautCony所说的一样,输出字幕文件用到哪些字体的列表即可,分隔符随意,个人认为用换行符贴切些。

    LZ有没兴趣再做个统计功能?搜索统计指定文件夹及子文件夹内的字幕文件用到的字体(次数)。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-4-19 18:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    43

    帖子

    0

    VC币

    新手上路

    Rank: 1

    积分
    169
    adan1 发表于 2016-12-30 13:23:12 | 显示全部楼层
    本帖最后由 adan1 于 2016-12-30 13:24 编辑
    TautCony 发表于 2016-12-29 20:48
    对于 adan1 所期望的最终的效果而言,
    困难点或者说麻烦的地方并不是在读取字幕中使用了哪些字体,
    而是 ...

    差不多就是这样了,理想的做法是监控播放器加载了哪些视频文件,再相应地搜索字幕加载字体。
    要是播放器自带实现这个就好了,可是很多字体文件内命名不规范各有差异,估计播放器想做好映射关系也很头疼。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    VCB-S论坛镜像站X

    VCB-S微信公众号上线了,欢迎关注!

    欢迎关注VCB-S微信公众号,公众号将不定期推送有关本组最新资源的消息。...

    点击查看详情 
    快速回复 返回顶部 返回列表