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

ListAssFonts: 小工具,分析字幕使用的字型 (2023/06/13 更新)

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

    [LV.2]偶尔看看I

    69

    主题

    1296

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2830274

    卓越贡献

    tonyhsie 发表于 2016-12-11 19:35:58 | 显示全部楼层 |阅读模式
    本帖最后由 tonyhsie 于 2023-6-14 00:51 编辑

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

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

    v200508~



    v200319~v200427


    v170703


    v170105 ~ v170519


    v170101


    v161212


    第一版



    主要功能


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


    支援參數(大小寫不拘、順序不拘)

    1. -NNV,意即 No Need Verify,不檢查缺字、不產生 NeedVerify.txt
    2. -Everything,在字型列表的最後面,加上一行方便 Everything 搜尋功能用的未安裝字型清單
    3. -ShortcutFonts,若是使用捷徑方式來安裝字型的話,請務必加上此參數,ListAssFonts 才能即時偵測字型的安裝/移除
    4. -OCL,意即 Only Check Letters,缺字功能只用來檢查文字、不檢查數字、標點、符號、空白等
    5. -Exit, 執行完後自動關閉 ListAssFonts
    6. -SaveText,讓 ListAssFonts 執行時自動勾選此選項
    7. -SaveFonts,讓 ListAssFonts 執行時自動勾選此選項
    8. -NoEgg,不再出現提示信箱的視窗
    9. -Ext="<字型目錄1>";"<字型目錄2>";...;"<字型目錄n>",使用指定的字型目錄,來代替系統上安裝的字型,作為 ListAssFonts 的字型來源


    去除字型子集前



    去除字型字集後



    操作方式


    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字型 + Style 行設定了錯誤的 encoding 時,如繁中 Windowns + 134(GB2313) 或簡中 Windows + 136(BIG5)
     仿宋、黑体、楷体 則必須為 1 或 134,不可為 136
     方正 必須為 1 或 134

    4. 思源 字型 + 直式,某些字型名稱會造成無法正常顯示 (ex: "@Source Han Sans TC" 顯示不正常,需改成 "@思源黑體" 才可)
     思源中文字型 + 直式,使用英文字型名稱無法正常顯示,需使用中文名稱 (style 或 \fn 皆是)
     思源日文字型 + 直式,使用日文字型名稱無法正常顯示,需使用英文名稱 (style 或 \fn 皆是)

     冬青中文字型 + 直式,使用英文字型名稱無法正常顯示,需使用中文名稱 (style 或 \fn 皆是)

    5. Source Hans/思源 字型 (Adobe) 跟 Noto 是一模一樣的字型 (只有字型名稱不同)
     思源黑體(Source Han Sans) = Noto Sans,思源宋體(Source Han Serif) = Noto Serif,建議安裝思源字型,因為 Noto 無法使用直式字型

    6. 汉仪字型在使用直式字型,如 @HYQiHei-50S 時,無法正常顯示,改成 @汉仪旗黑-50S 則正常


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


    更新日誌


    v230613

    1. 不再打開所有自動產生的檔案或目錄,而是記錄在 "GeneratedFiles.txt" 裡
    2. 移除 RemoveFontSubsets 字幕檔裡的 mkvlib、AssFontSubset 的註解行、空行
    3. 一些細微修正


    v230414

    1. 偵測「使用方正字型的 style,其 Encoding 沒設定成 1 或 134」的錯誤
    2. 支援 "思源宋體 香港"、"Noto Serif HK" 等相關字型
    3. 修正當外部字型目錄路徑結尾為 '\' 會無法辨識的問題
    4. 一些細微修正


    v220512

    1. 修正 220506 造成的取得字型列表太慢的問題



    v220506

    1. 新增「-Ext」參數,可自行指定字型目錄,來代替安裝在系統上的字型,作為 ListAssFonts 的字型來源

     使用時請指定字型目錄 (1~多個皆可),中間以分號隔開,如 -ext="D:\Fonts";"D:\字體"
    2. 修正偵測 \n \N \h 等 ass 控制碼的小問題
    3. 支援 \b<字重> 的 ass 控制碼
    4. 修正一個偶發性的剪貼簿錯誤
    5. 手動在文字框內輸入的目錄/檔案參數,改以分號 ; 來區隔,如「D:\字幕;E:\test.ass;C:\[ass]」


    v220318

    1. 修正「Lucida Calligraphy」字體的檢測問題
    2. 新增「-NoEgg」參數,不再出現提示信箱的視窗
    3. 在 Error.txt 裡添加關於各行字幕錯在哪的描述:

    illegal line - 此行莫名結束了
    illegal Sytle Name - 錯誤的 Style 名稱
    illegal Fontname - 錯誤的字型名稱
    illegal Encoding - 錯誤的編碼
    illegal Bold/Italic setting - 錯誤的粗體/斜體設定
    illegal Fontname/Filename - 字幕內嵌檔名有誤
    illegal Start/End time - 指定了錯誤的開始/結束時間
    illegal Style - 此行的 Style 欄位有問題
    illegal Text - 此行的字幕文本有問題
    illegal \fe setting - 使用了錯誤的 \fe 指令
    srt override codes - 使用了 srt 的指令
    full-width chars in override codes - 在指令裡誤用了全形字元
    style "X" undefined - 指定使用 X style,卻沒有定義它

    v220216

    1. 修正內封字體的字幕相關問題
    (範例字幕:https://bbs.acgrip.com/forum.php ... =82999&fromuid=8179 )


    v220126

    Bug 修正

    1. 修正「文鼎」字體的亂碼及檢測問題


    v211024

    Bug 修正

    1. 修正在已安裝「经典中圆简」的環境下,檢測有用到該字型的字幕,卻未能正確顯示出來的問題



    v211010

    新功能或行為改變

    1. 按下 F12 或 app key 之後,一律產生新的
    "installedFonts.debug.txt"
    2. 支援「"霞鹜文楷」、「霞鹜文楷等宽」、「霞鶩文楷 TC」、「霞鶩文楷等寬 TC」等字型

    Bug 修正

    1. 在處理路徑過長的字幕檔時,LAF 會先把字幕 copy 到 "\[LAF]" 後再做處理,結束後自動刪除
     如果有缺字,"NeedVerify.txt" 會記錄當初 copy 到 "\[LAF]" 下的檔案,現在修正為記錄檔案的原始路徑


    v210428

    新功能

    1. 對於字幕裡的 "\rnd",不再視為 error,而是另外產生一份完全移除 "\rnd" 的字幕
    2. 檢查字幕裡以 "\" 開頭的指令,除了 "\fn"、"\r" 以外,其它指令不能含有全型字元,
    找出這種錯誤並存入 "error.txt"
    3. 偵測直式思源字型的字型名稱問題:
     思源中文字型 + 直式,使用英文字型名稱無法正常顯示,需使用中文名稱 (style & \fn 皆同)
     思源日文字型 + 直式,使用日文字型名稱無法正常顯示,需使用英文名稱 (style & \fn 皆同)
    4. 偵測冬青字型的相關問題:
     在繁中環境下,不能使用簡中的字型名稱
     冬青中文字型 + 直式,使用英文字型名稱無法正常顯示,需使用中文名稱 (style 或 \fn 皆是)
    5. 改變少部分字型的名稱,如 ".Hiragino Sans GB Interface" 改回 ".Hiragino Sans GB Interface W3"

    Bug 修正

    1. 修正遊標會自動跑到字型列表最後面的問題
    2. 修正 ListAssFonts 自動重啟時的一個問題


    v201010

    新功能

    1. 新增「-Exit」參數,執行完後自動關閉 ListAssFonts
    2. 新增「-SaveText」「-SaveFonts」參數,讓 ListAssFonts 執行時自動勾選這兩個選項
    3. 在複製完字型檔案後,自動開啟該目錄
    4. 若無法複製任何字型,不新增 Fonts 目錄
    5. 偵測 ass 指令的全型數字錯誤,如 \fs30 (應為 \fs30),並存入 Error.txt
    6. 新增支援「有兩個以上的 [V4 Styles] 區段」的字幕檔案
    7. 偵測使用「仿宋、楷体」但 Encoding=136 的錯誤
    8. NeedVerify.txt 現會記錄可能無法正確顯示的特殊字型
     如「Maybe not displayed correctly: KaiTi」


    Bug 修正

    1. 修正「在過長路徑下,自動產生的 ass 檔案有時無法產生」的問題
    2. 修正「在過長路徑下,有時會發生 PathTooLongException」的問題
    3. 修正 「使用相對路徑時,NeedVerify.txt 可能會出現在根目錄」的問題


    v200705

    新功能

    1. 汉仪字型在使用直式字型,如 @HYQiHei-50S 時,無法正常顯示,ListAssFonts 會偵測這種錯誤 (範例: 喵萌的七日戰爭字幕)
    2. 可使用命令列來輸入字幕,如在命令提示字元下輸入 ListAssFonts "D:\test.ass"
    3. 可直接拖曳字幕檔到 ListAssFonts 的執行檔(或捷徑)上面,也可以輸入字幕

    Bug 修正

    1. 針對某些有問題的字型做特別處理,避免程式發生「給定關鍵字不在字典中」之類的問題
     如果遇到類似的問題,請先把 %USERPROFILE%\AppData\Local\ListAssFonts 這個目錄砍掉,再重新執行 ListAssFonts v200705 之後的版本即可


    v200604

    這次改版主要是針對 Error.txt 做改善跟加強

    [NeedVerify.txt]
    1. 對於有字型子集的字幕,不再產生 NeedVerify.txt

    [Error.txt]
    2. 更改 Error.txt 的產生規則,原本針對每個有問題的字幕檔都產生一個 Error.txt,現在是每個目標只會產生一個 Error.txt
     (假設一個目錄 A 下面有五個字幕檔案 1 ~ 檔案 5,如果把目錄 A 丟進 ListAssFonts,那麼在目錄 A 下最多只有一個 Error.txt;
                        如果是把檔案1 ~ 檔案5 丟進 ListAssFonts,那最多就會產生五個 Error.txt)

     現在的 Error.txt 大概長這樣,跟 NeedVerify.txt 的風格類似
     單一檔案裡包含多個字幕檔的問題,包括問題所在的行號、該行的所有文字


    3. ListAssFonts 現在也會檢查編碼(style 定義行的最後一個數字,或 \fe 所指定的編碼),如果編碼不合理,就會列為錯誤
     常見的編碼有 134 (GB2312),136 (BIG5),128 (SHIFT-JIS),1 (Default),0 (ANSI),除此之外還有十來個數字是合理編碼

     不合理的編碼就如上圖,各 style 行最後一個數字都是135,不屬於任何一個合理編碼

    4. Error.txt 每次都會重新產生,不會保留

    5. 對於程式自動產生的 *.txt,不再把檔名複製到剪貼簿

    v200517

    新功能 或 bug 修正

    1. 修正沒缺字時,"NeedVerify.txt" 可能沒被刪除的問題
    2. 修正移除某些字體後,ListAssFonts 會出現「未經處理的異常」問題
    3. 新增參數 "-OCL",(意指 Only Check Letters),缺字檢查時只檢查文字,對於數字、標點、符號、空白,一律略過不管
                           未加此參數時,會檢查文字、數字、標點、符號,只略過空白
    4. 對於某些 .Net Framework 無法處理的字型,如:「经典中圆简」、「迷你简细行楷
     以額外支援的方式,讓它們在 ListAssFonts 裡能夠正常顯示安裝狀態、已安裝的話也能順利使用字型檔案複製功能
     但不支援缺字檢查功能(此功能需 .Net Framework 支援)
    5. 將有用到「未安裝字型」、或是「不支援檢查缺字功能的字型」的字幕檔案,列進程式自動產生的「NeedVerify.txt」裡
     (當有加 -NNV 參數時,此功能無效,因為 NNV = No Need Verify,不會產生 NeedVerify.txt)


    v200509

    bug 修正

    1. 修正 Win7 下,列出系統上已安裝的字型列表時,文字會顯示成紅色的問題

    Win10 沒有這個問題,可選擇性更新


    v200508-2

    bug 修正

    1. 修正 "-shortcutfonts" 參數在按下 F12 或是 menu 鍵後,會導致無限重啟 ListAssFonts 的問題

    感謝 neil78 的協助!


    v200508

    新功能 or bug 修正

    1. 改變 "NeedVerify.txt" 裡面缺字的顯示方式,如:
    Verdana Bold:「?~」:#86「」, #89「?~


    依序是,A. 有缺字的字型,B. 同個字幕檔裡,用到此字型而缺的字,C. 行號,以及該行缺的字

    2. 可以接受帶 " 的參數,不需要拿掉 ",如:"D:\ReLIFE\01.ass"

    3. 修正同一行字幕,同時有兩個 \r 可能會判斷錯誤的問題 (v200423 才有的 bug)

    4. 修正 \r, \b, \i, \fe, \p 等的判斷邏輯

    5. 如果字幕檔裡不再有缺字了,會刪除以前檢查時自動產生的 "NeedVerify.txt"

    6. 修正在執行 debug 功能時,新安裝或移除的字型,沒有反映在列表裡的問題

    7. 支援多語系的 face name。所謂的 face name 是指 Regular、Bold、Light 這些字重,有的字型可能有英文以外的 face name,如 "纤体"、"ボールド"

    8. 在 MPC-HC 內建的字幕 renderer 或 XySubFilter 下,.ass 檔其實也可以使用 .srt 的字幕指令,如 "<font face="X">, <b>, <i>" 等等;
     本來打算讓 ListAssFonts 支援這些語法,程式也改好了,但後來這功能沒有實際放進去

     因為使用這種語法的字幕真的很罕見,Aegisub 也不支援,現在 ListAssFonts 做法是,把用到這些指令的字幕行,收集起來存入 "error.txt"

    9. 本版最大的改變之一,會把在所有字型裡、所有文字的列表,快取起來,大幅提升檢查缺字的速度
     但是第一次執行這一版時,ListAssFonts 會先花上好幾分鐘來作快取,這是沒辦法的事,也只有第一次執行時需要這麼做

     後續再安裝字型、或刪除字型,也不會再重複作快取,會僅針對差異的部分即時處理,秒快取

     如果執行時帶了 "-nnv" 參數,那 ListAssFonts 就不會作快取,也不會檢查缺字;之後若拿掉 "-nnv" 參數,程式會再作一次完整的快取

    10. 本版最大的改變之二,程式不會再沒有回應了,起碼會在文字框裡秀出目前的進度、或是程式的狀況,如圖



    圖中的字幕檔名,是會即時更新的,一直到字型列表的結果產生出來為止

    v200427

    新功能 or bug 修正

    1. 因為 "思源黑體" & "Noto Sans CJK" v2.0 版以後,改變了 "一般 Regular" & "粗體 Bold" 的字型名稱形式
     所以 ListAssFonts 會把 v1.x 版以前的字型名稱,都當成「定義錯誤的字型」來看待,顯示成暗紫色


       ex: "思源黑體 Regular"、"Noto Sans CJK TC Bold" 這些名稱皆為 v1.x 以前的定義方式,視為定義錯誤
          "思源黑體"、"Noto Sans CJK TC" + "\b1" or "style 行的 Bold 欄設為 -1",v2.0 以後的定義方式,視為唯一正確定義


     "思源宋體" 以前就是這種定義方式,所以沒有不同定義的問題,而現在 "思源黑體" v2.0 也跟進使用了一樣的定義方式

    2. 如果有勾選 "Save .txt",ListAssFonts 會自動打開這個文字檔
    3. 支援內嵌的圖形檔 (類似內嵌的字型檔一樣,但沒有實際看過有這種字幕檔,只是根據 spec 實作這功能)
    4. 如果字幕檔裡有內嵌字型或圖形,ListAssFonts 會跳出提示視窗
    5. 如果字幕檔裡有某些行有問題 (1. 不符合正常字幕行規範, 2. 含有 "\rnd", 3. 字幕行指定的 style 不存在),ListAssFonts 會將這些有問題的行存成 error.txt
    6. 修正當「處理過長路徑」時,ListAssFonts 可能會停止回應的問題
    7. ListAssFonts 所使用的 .Net Framework 從 4.5.2 變成 4.8


    8. ListAssFonts 不再產生 ".NeedVerify.ass",改為產生 "NeedVerify.txt",內容為真正缺字的字幕、字型、所缺的字



    v200321

    新功能 or bug 修正

    1. 修正 v200319 會誤判 "Arial Bold" 或其它字幕裡的粗/斜體定義的問題
    2. 修正 v200319 會把 "翩翩體 繁粗體 <HanziPen TC Bold>" 誤認成 "翩翩體 繁粗體 Bold <HanziPen TC Bold Bold>"
     (除了翩翩體,還有極少數字體也有可能會辨識錯誤)
    3. 其它細項修改


    v200319


    新功能 or bug 修正


    1. 加入偵測斜體 (Italic) 以及 粗斜體 (Bold Italic) 的功能 (通常只有英文字型,才會有這兩種的獨立字型,如 Arial )

    2. 在標題列顯示執行程式時所帶的參數 (-NNV / -Everything / -ShortcutFonts),方便使用者確認

    3. 使用暗紫色來標示定義錯誤的字型,如 "思源黑體 Bold"  (正確定義應該是 "思源黑體" + style 列定義 Bold = -1,或是文本列使用 {\b1} 來指定使用粗體)

       有些字型可以使用 "X Bold" 的方式來表示粗體,如 "Arial" 的粗體可以用 "Arial Bold",也可以用 "Arial" + (Bold = -1) or {\b1}
       程式會自行判斷,如果發現 .ass 裡定義的字型是錯誤的,那字型名稱就會顯示成暗紫色 (不是已安裝字型、也不是未安裝字型,是不存在的字型)


    4. 其它細項修改


    v200213

    新功能 or bug 修正


    1. 修正 當按下 "Installed Fonts" 鈕,在少數情況下,程式可能會報錯的問題 (案例見:http://bbs.acgrip.com/forum.php?m ... =51287&fromuid=8179 )
    2. 小幅修改部分程式,稍稍減少程式體積以及略微提升執行速度




    v200210

    新功能 or bug 修正


    1. 新增參數 "-ShortcutFonts",對於 "使用捷徑安裝字型" 的環境,這參數會讓 ListAssFonts 即時更新系統上 "新增 或 移除" 的字型 而代價是,程式執行各功能時,會多花一點時間,系統上安裝的字體越多,越耗時 (在安裝了約 1300 個字型的系統上測試,大約會多 0.3 秒)
    2. 如果某行字幕使用了未定義的 style,LAF 會將它加入 .NeedVerify 字幕裡,方便除錯
    3. 如果字幕檔的路徑過長,程式會另外複製一份字幕來處理,用完自動刪除,包含程式自行產生的目錄 (位於字幕所在磁碟區的根目錄)
    4. 其它細項修改



    v191106

    新功能 or bug 修正


    1. 忽略字體名稱前的空白  ex: {\fn     方正准圆_GBK} 會被當成 "方正准圆_GBK" 而非 "     方正准圆_GBK"
    2. 修改一些關於自動產生的 .ass files (.RemoveFonts / .RemoveFontSubsets / .NeedVerify) 的處理原則
    3. 如果字幕檔的路徑過長,程式會另外複製一份字幕來處理,用完自動刪除
    4. 如果已有相同的字型檔案,就不再自動產生新的一份出來
    5. 其它細項修改

    v190808

    新功能 or bug 修正

      1. 修正 "安裝完新字體後,ListAssFonts 卻沒更新" 的問題
      2. 假如執行時有帶 "-everything" 參數,程式會自動把 "最後那行 everything 用的字串" 複製到剪貼簿,使用者可以不必去手動複製
      3. 縮小了程式執行檔的體積
      4. 修改了 installedFonts.debug.txt 的格式,檔名也會附加上時間資訊以便檢視,如 "installedFonts.debug.20190802.113836.txt"


    v190801

    新功能 or bug 修正

      1. 程式找尋字型的方式大幅改寫,可以找到更多字型名稱,但必須是正常安裝的字型 (= 有在 Reg 表正常註冊的字型),若是使用其它軟體臨時掛載,而沒有正常安裝到系統上的字體,ListAssFonts 將會無法辨視

      2. 程式速度大幅提升:在掃描完系統上已安裝的字型後,會把字型資訊保存在 %LOCALAPPDATA%\ListAssFonts\,之後再執行 ListAssFonts,速度會顯著提升 (以開發環境作測試的結果,新版大約比舊版快了十倍,載入 1576 字體所需時間:新版 0.551 秒,舊版 5.035 秒) 現在也不會再重啟程式了

      3. 程式會由 系統預設的字型資料夾%LOCALAPPDATA%\Microsoft\Windows\Fonts 兩個資料夾的時間來判斷系統是否有安裝/移除字型,如果你安裝/移除的字型檔案不在這兩個資料夾內,可能需要手動刪除 %LOCALAPPDATA%\ListAssFonts\ 下的所有檔案,才能讓 ListAssFonts 正確認出

      4. 簡單說就是,正常安裝/移除的字型,ListAssFonts 幾乎不會有問題,以其它方式安裝的字型,可能會辨識不出來

      5. 新增參數 "-Everything",在字型列表的最後增加一行未安裝字型的字串,方便使用 Everything 作進一步的搜索




    字型相關

      6. 支援 思源黑體, 思源宋體, 思源等寬, Source Han Code JP, Noto Sans, Noto Serif 等字型的 PostScript name (例:SourceHanSansTC-Regular)




    v190712

    新功能 or bug 修正

      1. 程式由 32-bit only 變成 32/64-bit
      2. 某些方正字型安裝時,檔名可能會被 OS 更改;ListAssFonts 在複製字型的時候,會復原其原名 (ex: FZYouH_512B.ttf -> FZYouH_0.ttf)
      3. 使用 "GDI scaling" 取代 "dpiAwareness" 以避免在文字大小非 100% 的環境下顯示不正常

    字型相關

      4. 支援  "EPSON-KYOKASHO", "H-新雅蘭", "Source Sans Pro Bold", "SubLanT/SubSansT/SubYuanT Bold"  字型
      5. Win7 下新增支援 "id-", "TA", "FA", "Adobe", "思源宋體/黑體", "Noto Sans/Serif", "文泉", "KSO雷神", "奈落文字フォント", "华文黑体", "HOT-" 字型


    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

    评分

    参与人数 91活跃度 +246852 收起 理由
    马可solo + 10086 很给力!
    snowy86 + 2240
    lcjhcc + 666 很给力!
    chaos32767 + 38367
    膨胀的豆制品 + 200 很给力!
    木易 + 800 很给力!
    Yahaha + 1600 赞一个!
    Nanami + 800
    凛啸 + 400 很给力!
    toaru + 800 赞一个!
    Geek86 + 200 很给力!
    tsugachinensis + 200
    snoopyzx963 + 3200 很给力!
    a164980316 + 25600 很给力!
    lee850220 + 800 很给力!
    LiKaizi + 6400 很给力!
    BlankPower + 200 很给力!
    kevinkejc + 50 很给力!
    johoco + 200 赞一个!
    Mapley + 360 很给力!

    查看全部评分

    回复

    使用道具 举报

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

    [LV.9]以坛为家II

    5

    主题

    32

    回帖

    0

    VC币

    荣誉会员

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

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

    点评

    其實隨便丟一個字幕 or 資料夾試試看就可以了說 ^_^  发表于 2016-12-11 22:30
    回复 支持 2 反对 1

    使用道具 举报

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

    [LV.9]以坛为家II

    5

    主题

    32

    回帖

    0

    VC币

    荣誉会员

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

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

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

    点评

    原來如此 哈哈  发表于 2016-12-11 23:28
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情

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

    [LV.1]初来乍到

    4

    主题

    39

    回帖

    0

    VC币

    新手上路

    Rank: 1

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

    点评

    TC
    讲道理,单单提取字体实现起来50行都到不了,通过命令行调用不嫌吃力啊。。。 这让我想到了js的pad-left  发表于 2016-12-29 16:31
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    开心
    2021-4-26 15:19
  • 签到天数: 1 天

    [LV.1]初来乍到

    18

    主题

    122

    回帖

    1

    VC币

    超级版主

    Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

    积分
    45166

    崭露头角

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

    噗 你这样一说也是,顶上一堆style,下面一个都不用(

    点评

    沒錯,很多冗餘 style,哈哈  发表于 2016-12-29 20:09
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情

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

    [LV.1]初来乍到

    4

    主题

    39

    回帖

    0

    VC币

    新手上路

    Rank: 1

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

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


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

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

    点评

    TC
    好吧 你是那样想法的话那你就那样呗,我只提个建议,认为在这个问题上调用其他程序的成本高于自己实现。  发表于 2016-12-29 20:12
    回复 支持 0 反对 1

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1296

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2830274

    卓越贡献

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

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2021-4-26 15:19
  • 签到天数: 1 天

    [LV.1]初来乍到

    18

    主题

    122

    回帖

    1

    VC币

    超级版主

    Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

    积分
    45166

    崭露头角

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

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

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

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

    点评

    如果是這樣的話 透過程序自動安裝字型 感覺也不會比自己手動快呢  发表于 2016-12-29 23:03
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情

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

    [LV.1]初来乍到

    4

    主题

    39

    回帖

    0

    VC币

    新手上路

    Rank: 1

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

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

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

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

    使用道具 举报

  • TA的每日心情

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

    [LV.1]初来乍到

    4

    主题

    39

    回帖

    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 所期望的最终的效果而言,
    困难点或者说麻烦的地方并不是在读取字幕中使用了哪些字体,
    而是 ...

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

    使用道具 举报

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

    本版积分规则

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