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

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

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2020-10-16 05:23:47 | 显示全部楼层
    本帖最后由 tonyhsie 于 2020-10-16 05:25 编辑

    ListAssFonts 有個小小的已知問題,經過實測後決定不作修正,在此跟大家分享一下
    當你先移除了一個字型「A」,然後又安裝了同一個字型「A」兩個字型檔名又一模一樣(連檔名大小寫也相同)

    但事實上,這兩個字型檔案的內容並不相同

    目前的 ListAssFonts,並不會發現這個字型「A」的檔案,已經有所改變
    因此也不會重新產生相關的快取檔案

    所以檢查缺字的功能,也就是 NeedVerify.txt 裡的內容,就會還是依照舊的字型檔案為基準,而不是按照新的字型檔案


    這種狀況發生的可能性其實很低,我自己也沒遇過,只是昨天突然想到有這種可能性而已


    然後我就試著修正這個問題,但是實測後,發現付出的時間成本太高

    因為在系統字型有更動時,ListAssFonts 變成要逐一檢查所有字型檔案的大小跟修改時間,才能確定各字型有沒有被修改過
    這樣會花費太多時間,而且 99% 的時間都是無意義的,一切只為了斷絕那個極低的可能性

    使用者移除、又重新安裝了同樣檔名、不同內容的同一個字型

    (猜想 Aegisub 的檢查字型功能,或許也是為了處理這種機率極低的情況,才會在更新字型時都花上不少時間)


    雖然遇到這種情況的機率很低,但還是有可能會發生

    這裡提供一個解決方法

    如果你想要重新安裝同樣檔名不同內容的同一個字型

    1. 一定要先移除舊的字型
    2. 在移除字型後,就先跑一下「Installed Fonts

    ListAssFonts 就會將此字型的相關快取都移除掉,這樣就能避免發生這個問題了


    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2020-10-26 03:08:29 | 显示全部楼层
    Rikkano 发表于 2020-10-25 16:40
    请问可以整个 CLI 吗?——Mac 用户

    這程式完全是依據 Windows 的字型機制量身打造的
    並不適用於任何非 Windows 環境


    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2020-11-16 22:19:51 | 显示全部楼层
    invinciberry 发表于 2020-11-16 21:53
    有办法更改检测Installed Fonts的文件夹么?
    另:有没有Git?

    更改檢測文件夾是什麼意思?

    GIT 是有,但目前沒公開
    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2020-11-17 01:59:59 | 显示全部楼层
    invinciberry 发表于 2020-11-16 22:30
    程序默认检测当前系统已安装的字体,能否添加功能和某文件夹进行比对而不是系统默认?
    Git没公开有什么特 ...

    跟資料夾比對是辦得到的,但我不清楚這樣做的用處是什麼


    不公開也沒有什麼特殊理由,目前改版跟 bug 都可以在這個帖子處理

    暫時沒有放到 github 的想法

    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2020-11-17 14:45:53 | 显示全部楼层
    Mekozoko 发表于 2020-11-17 09:19
    【报错】
    貌似会把\rnd标签全部识别为错误

    vsfilter 系不支援 \rnd

    所以對使用 MPC-HC/MPC-BE/Potplayer 內建字幕 renderer 的人來說,字幕裡有 \rnd 會有問題(會被當成 \r)


    如果你確定你的環境下可以使用 \rnd,那就略過那個錯誤提示就好

    如果不能確定的話,那最好還是拿掉所有字幕裡 \rnd
    其實 \rnd 有沒有並沒什麼差,但如果被字幕 renderer 誤當成 \r,那問題就糟糕多了





    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2020-11-29 18:36:15 | 显示全部楼层
    ppqcool 发表于 2020-11-29 17:45
    遇到了這種無法正常顯示的情況,有什麼解決辦法嗎

    需要根據各種情況去做對應的修改


    例如:        //      1. 日文字型 + 直式,只能使用英文字型名稱才能正常顯示

    那就把日文字型名稱改成英文名稱,就可以正常顯示了


               //      2. 華康 (P) 字型 + \fn,如果不是 style 定義而是 \fn 定義的,則只能使用英文字型名稱才能正常顯示

    \fn華康中圓體(P) 不正常,改成 \fnDFPYuanMedium-B5 就可以了

    依此類推

    回复 支持 1 反对 0

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2021-4-19 03:03:37 | 显示全部楼层
    漫步ACG 发表于 2021-4-18 23:47
    请问是否方便加个功能,支持临时加载字体的检测,例如通过FontLoader加载的字体。 ...

    臨時掛載的字型,並不是正常的字型安裝方式,可能類似於一種即時外掛 (?)
    因為我沒在用,這方面也不是很清楚


    不過話說回來
    字型掛載程式,原本應該就有「檢測字幕檔案裡用了哪些字型」的功能了
    這樣它才能只挑需要的字型來掛載

    不曉得為什麼還需要 ListAssFonts 來支援「臨時掛載字型」?
    這樣做有什麼特別的意義嗎?

    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2021-4-20 01:15:17 | 显示全部楼层
    漫步ACG 发表于 2021-4-19 20:30
    感谢回复。
    关于第二段,坛里的FontLoaderSub是比较合乎需求的软件,不过我这边加载有问题,等开发者回复 ...

    ListAssFonts 並不看內存裡有什麼字型,只看 Registry 裡安裝了什麼字型
    程式的邏輯完全不同,所以沒辦法實現你的想法

    由 FontLoaderSub 那邊來處理你的需求會比較適合一點

    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2021-4-20 21:53:44 | 显示全部楼层
    漫步ACG 发表于 2021-4-20 19:07
    我对Windows的字体管理机制也不太理解,只是遇到了一些问题去猜测,先前我以为我在硬盘上都删除了文件,那 ...
    另外我通过NexusFont管理字体还遇到了些问题,比如安装了的字体系统的Fonts中看不到,安装的字体没法卸载,还有卸载了在Fonts中看不到但是在Fonts目录中还存在,暂时没搞明白是什么情况。
    最好不要用第三方軟體來安裝字體,因為這些奇奇怪怪的狀況,很難找出問題出在哪
    直接在檔案總管裡右鍵安裝字型,在控制台/設定裡移除字型,是最保險的

    有不少字体管理工具提供了临时加载的功能,不依赖系统却依旧可以被调用。所以不知ListAssFonts能不能做到检测此类加载,这样更贴近实际使用情况。
    你可以把 ListAssFonts 當成依賴系統的一個字型程式

    「不依賴系統而加載字型」的字型管理程式,跟依賴系統的 LAF 是沒有交集的

    测试了下,发现ListAssFonts最新版不完全根据[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts],而是会以C:\Windows\Fonts\为准,因为我在目录中删除了字体,而注册表信息还在,ListAssFonts就检测为没有安装字体了。
    这样问题就变得简单了,ListAssFonts可否指定字体目录,这样可以在安装前就比对下载的字体是否是字幕所需的字体了。
    你的推測是錯的

    LAF 還是以註冊表為準,但如果註冊表裡的檔案已經不存在了,被刪除或是無法存取
    LAF 自然會略過這個字型,就只是這麼簡單而已


    掃描指定目錄的作法,以前曾經有考慮過把它加進 LAF,但後來覺得沒有用處就放棄了

    LAF 的目標是「找出已安裝的字型」、「找出字幕裡使用的字型」,並不是「字型管理程式」
    用任何字型管理程式來掃描指定目錄,其效果一定比 LAF 更好

    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    69

    主题

    1340

    回帖

    1万

    VC币

    星辰大海

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

    积分
    2869155

    卓越贡献

    tonyhsie  楼主| 发表于 2021-4-21 02:04:55 | 显示全部楼层
    本帖最后由 tonyhsie 于 2021-4-21 02:07 编辑
    漫步ACG 发表于 2021-4-21 00:15
    我用系统自带的安装/卸载功能,两次装卸以后也会存在字体卸载不了,强行删除字体文件依旧可以调用的问题 ...
    我用系统自带的安装/卸载功能,两次装卸以后也会存在字体卸载不了,强行删除字体文件依旧可以调用的问题,还没找出原因,虽然我关闭了两个系统服务。

    可能裝了同一個字型的不同版本/檔案
    你刪除了一個字型檔案,但卻還有別的檔案也是同一個字型,所以還能繼續用 (瞎猜的)

    「安裝了複數的相同字型」這方面我也不曉得 Windows 是怎麼處理的...


    不過再怎麼樣還是建議不要用第三方來安裝/移除
    因為加入第三方的因素,只會讓問題變得更複雜而已

    要單純,就是只用 Windows 內建的機制來處理字型的安裝/移除
    这个原理好懂,但LAF方便模拟播放器检测字体么?因为我的Pot在删除了字体文件后还能调用,感觉很神奇。

    這等於是另外寫一個偵測外掛字型的程式了,並不是 LAF 原本就有的功能
    那能再考虑下加入这个功能吗?如果方便的话,虽然网上字体管理工具一搜一大把,但同时又兼具扫描字幕文件的一个都没有。
    我考虑的是我以为用了正确的字体,但是程序却不这么认为,最终导致加载失败。比如我在FontLoaderSub上就碰到了这个问题,我下载的字体没错,但FontLoaderSub就是不认。

    LAF 掃了字幕之後,列出的字型列表就是一個參考
    如果這個字型列表有錯,那歡迎反饋給我,我來看看問題出在哪

    但如果不是字型列表有問題
    而是別的程式不認你的字型檔案,這跟 LAF 有沒有偵測外掛字型的功能,就完全不相干了

    就算 LAF 能偵測外掛字型,那對你遇到的狀況也沒有任何幫助
    你還是需要 FontLoaderSub 去修正它的問題


    我覺得你把問題想得太複雜了

    你就實際把那個有問題的字型安裝到系統上,然後再把字幕拖進 LAF,看看結果如何

    如果 LAF 認定你有安裝該字型,那明顯就是掛載的機制有問題
    如果 LAF 認定你沒安裝該字型,那大概就是該字型檔案有問題 (或是 LAF 有問題....)
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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