请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
楼主: tonyhsie

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

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

    [LV.2]偶尔看看I

    17

    主题

    376

    帖子

    2408

    VC币

    星辰大海

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

    积分
    444929

    卓越贡献

    tonyhsie  楼主| 发表于 2019-2-26 21:38:06 | 显示全部楼层
    双子★魔刃 发表于 2019-2-26 20:30
    试了几次发现好像用管理员模式运行软件就比较正常,而直接打开则容易出问题
    ...

    照理說應該不需要用管理員模式來執行,納悶....
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    VC币

    新手上路

    Rank: 1

    积分
    442
    muveex 发表于 2019-3-22 15:24:06 | 显示全部楼层
    报告一个bug:
    windows 10 1809改变了字体的安装和存储方式,用户自行安装字体不再需要管理员权限,默认情况下用户自行安装字体的位置也不再是传统的
    C:\Windows\Fonts
    而是
    C:\Users\<用户名>\AppData\Local\Microsoft\Windows\Fonts
    因此在我的系统上使用您的工具选择save fonts会提示找不到一部分字体(not found in registry),而这些字体都是我在更新1809以后安装到
    C:\Users\<用户名>\AppData\Local\Microsoft\Windows\Fonts
    里的。
    同样,由于默认是安装到个人用户而非所有用户,所以新安装的字体并不在以下注册表位置中
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]
    而是在
    [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Fonts]
    内。请考虑在未来的版本修复这一问题,谢谢。
    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    17

    主题

    376

    帖子

    2408

    VC币

    星辰大海

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

    积分
    444929

    卓越贡献

    tonyhsie  楼主| 发表于 2019-3-22 15:42:44 | 显示全部楼层
    muveex 发表于 2019-3-22 15:24
    报告一个bug:
    windows 10 1809改变了字体的安装和存储方式,用户自行安装字体不再需要管理员权限,默认情况 ...
    今天發現 Windows 10 1809 有一種新的字型安裝方式
    會把字型安裝到 C:\Users\<使用者名稱>\AppData\Local\Microsoft\Windows\Fonts


    目前 ListAssFonts 並不會去查看這個字型資料夾還有相關的 Reg key

    所以可能無法處理以這種方式安裝的字型 (可能會無法列出或無法拷貝)


      

    Win10 1809 用戶在安裝字型時請選 "為所有使用者安裝",不要選 "安裝",可以避免 ListAssFonts 發生相關問題


    謝謝回報,目前比較忙,有空的話我再來解決這個問題

    我好奇的是,為什麼要為個別用戶新增字型而不是為整個系統新增呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    VC币

    新手上路

    Rank: 1

    积分
    442
    muveex 发表于 2019-3-22 16:09:43 | 显示全部楼层
    tonyhsie 发表于 2019-3-22 15:42
    謝謝回報,目前比較忙,有空的話我再來解決這個問題

    我好奇的是,為什麼要為個別用戶新增字型而不是為 ...

    错误的字体会影响整个系统。例如我曾经安装过一个名为 萝莉体 的字体,发现它的英文名称是Heiti SC,设计者好像没有修改它。我平时系统语言为英文,这导致我在12306买火车票时整个页面都是少女文字……
    win10 1809这样的设计允许个别用户安装自己的字体(设计师一类的工作可能需要经常这样做),又不影响到其它用户。1809也允许为所有人安装字体,可以右键选择Install for all users,这样就放到Windows\Fonts里了


    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    17

    主题

    376

    帖子

    2408

    VC币

    星辰大海

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

    积分
    444929

    卓越贡献

    tonyhsie  楼主| 发表于 2019-3-22 20:31:18 | 显示全部楼层
    本帖最后由 tonyhsie 于 2019-3-22 20:33 编辑
    muveex 发表于 2019-3-22 16:09
    错误的字体会影响整个系统。例如我曾经安装过一个名为 萝莉体 的字体,发现它的英文名称是Heiti SC,设计 ...

    有問題的字型移除掉就好了 你既然能裝上去,肯定也能移除掉吧


    個別用戶自己裝字型限自己使用,我目前還真的想不出有什麼場合有這種需要

    除非用別人的電腦,又沒有管理者權限,又想裝字型時?


    另一方面,這種安裝方式其實還挺麻煩的

    畢竟是新的機制,舊有的程式不見得會支援這種作法,另外也看不出這樣作的優點在哪裡
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    VC币

    新手上路

    Rank: 1

    积分
    442
    muveex 发表于 2019-3-23 13:03:40 | 显示全部楼层
    tonyhsie 发表于 2019-3-22 20:31
    有問題的字型移除掉就好了 你既然能裝上去,肯定也能移除掉吧

    举个例子,我们这里上千台电脑都以Active Directory连在一起,一个人在一台电脑上存储数据以后,换一台电脑用相同的用户名密码登录,不需要任何手动操作就能把这些文件和设置从服务器上转移过来。一般用户没有管理员权限,也禁止执行或安装除现有程序和MS Store App以外的所有程序,但能做的事情很多,一般足够用了。如果我们是一个设计公司,那可能会希望设计师们能自己有权限来自行安装卸载不同的字体。
    对一般程序而言系统如何使用字体是透明的;对一般程序而言,获取字体列表比较好的实现方式不是枚举注册表而是调用API,比如.NET 里的 InstalledFontCollection 对象。
    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    17

    主题

    376

    帖子

    2408

    VC币

    星辰大海

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

    积分
    444929

    卓越贡献

    tonyhsie  楼主| 发表于 2019-3-23 14:05:50 | 显示全部楼层
    举个例子,我们这里上千台电脑都以Active Directory连在一起,一个人在一台电脑上存储数据以后,换一台电脑用相同的用户名密码登录,不需要任何手动操作就能把这些文件和设置从服务器上转移过来。一般用户没有管理员权限,也禁止执行或安装除现有程序和MS Store App以外的所有程序,但能做的事情很多,一般足够用了。如果我们是一个设计公司,那可能会希望设计师们能自己有权限来自行安装卸载不同的字体。

    其實我並不是要你 "想像出一種可能會用到 user font 的場合",而是想知道 "實際確實會用到 user font 的情況是怎麼樣的"

    以你舉的例子來說,假設有這種設計師好了,在 Win 10 1809 之前他們沒辦法作業嗎? 不可能吧
    所以代表 user font 對他們來說也並非一個必要功能,不是嗎?


    就我看來,ListAssFonts 面向的用戶,或者說一般用戶,需要使用 user font 功能的機會並不是很高

    畢竟 LAF 也是兩年多前就有的東西了,當時沒有 user font 這玩意也沒什麼問題
    現在雖然有這玩意了,但我看不出一般用戶把字型安裝成 user font 而非 system font 來用,能帶來什麼好處?

    对一般程序而言系统如何使用字体是透明的;对一般程序而言,获取字体列表比较好的实现方式不是枚举注册表而是调用API,比如.NET 里的 InstalledFontCollection 对象。


    InstalledFontCollection 有不少漏網字型,並不是尋找系統上所有字型的一個完美解答


    另外,你可以試看看 Aegisub 能不能找到 user font 吧

    你可能以為 user font 應該能直接無痛被所有程式支援,而現實卻不是那麼美好
    那難道你要一個個去請不支援 user font 的程式作者去改版來支援 user font,還是選擇自己照舊使用 system font?


    這問題我當初升級到 1809 時就考慮過了,我選了後者,所以 LAF 支援 user font 的計畫也就擱置了,畢竟 user font 的必要性真的不大

    http://bbs.vcb-s.com/forum.php?m ... 25&fromuid=8179


    另外有個問題,如果 user 沒有管理員權限,無法自行安裝字型

    那他有權限把系統字型 copy 出來嗎?  這我不太清楚

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    VC币

    新手上路

    Rank: 1

    积分
    442
    muveex 发表于 2019-3-24 02:04:54 | 显示全部楼层
    本帖最后由 muveex 于 2019-3-24 04:39 编辑
    tonyhsie 发表于 2019-3-23 14:05
    其實我並不是要你 "想像出一種可能會用到 user font 的場合",而是想知道 "實際確實會用到 user font 的情 ...
    可以試看看 Aegisub 能不能找到 user font

    测试了一下,Aegisub(最新是2014年的3.2.2版)可以列出user font,可以正常保存字幕,但是font collector不能复制导出user font。不太清楚它是怎么实现的。我记得列举字体有好几种不同的API和库刚才找到了这里bit.ly/2FsiVOV    ,Aegisub的Font Collector调用了get_installed_fonts(),这个函数是枚举注册表的(作者虽然写了一个GdiFontFileLister,但它里面仍然是调用了这个列举注册表的函数),于是就报错了。
    但是,一般的功能可以正常工作(比如Style Editor),原因是是直接调用了wxWidgets框架的wxFontEnumerator::GetFacenames(),而wxWidgets for windows部分源码bit.ly/2U6c4Uw  中似乎是调用了Windows GDI的EnumFontFamiliesEx(),所以跟着正常工作了。不过这个API列出来的很多字体名称前带@,这些是垂直书写字体,与InstalledFontCollection结果不同。
    也许对LAF 或者Aegisub font collector来说最适合的还是直接枚举注册表吧。
    他有權限把系統字型 copy 出來嗎?  這我不太清楚
    可以的。LAF本身是以普通用户权限运行的,这也是它在1809上可以保存系统字体的原因。



    Windows升级A搞挂了B其实挺常见的,而且bug也多,比如stack overflow上有个非常诡异的问答:win10系统无法预览和安装字体,结果最后发现解决方法竟然是完全没有关系的“启用Windows防火墙”…… superuser.com/questions/957907/unable-to-install-fonts-on-windows-10

    回复 支持 反对

    使用道具 举报

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

    [LV.2]偶尔看看I

    17

    主题

    376

    帖子

    2408

    VC币

    星辰大海

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

    积分
    444929

    卓越贡献

    tonyhsie  楼主| 发表于 2019-3-24 05:41:42 | 显示全部楼层
    测试了一下,Aegisub(最新是2014年的3.2.2版)可以列出user font,可以正常保存字幕,但是font collector不能复制导出user font。不太清楚它是怎么实现的。我记得列举字体有好几种不同的API和库刚才找到了这里bit.ly/2FsiVOV    ,Aegisub的Font Collector调用了get_installed_fonts(),这个函数是枚举注册表的(作者虽然写了一个GdiFontFileLister,但它里面仍然是调用了这个列举注册表的函数),于是就报错了。
    但是,一般的功能可以正常工作(比如Style Editor),原因是是直接调用了wxWidgets框架的wxFontEnumerator::GetFacenames(),而wxWidgets for windows部分源码bit.ly/2U6c4Uw  中似乎是调用了Windows GDI的EnumFontFamiliesEx(),所以跟着正常工作了。不过这个API列出来的很多字体名称前带@,这些是垂直书写字体,与InstalledFontCollection结果不同。
    也许对LAF 或者Aegisub font collector来说最适合的还是直接枚举注册表吧。
    目前 LAF 也能辨識出字幕有此字型,加上系統是否已安裝此字型,這些功能都正常,有問題的部分只是無法把字型複製出來

    對不支援 user font 的字型程式來說,這種結果應該都是一樣的

    窮舉 Registry 是必然的,看起來你也是專業的程式工作者,或許你再想想就能知道原因了

    可以的。LAF本身是以普通用户权限运行的,这也是它在1809上可以保存系统字体的原因。



    Windows升级A搞挂了B其实挺常见的,而且bug也多,比如stack overflow上有个非常诡异的问答:win10系统无法预览和安装字体,结果最后发现解决方法竟然是完全没有关系的“启用Windows防火墙”…… superuser.com/questions/957907/unable-to-install-fonts-on-windows-10


    哈哈,真虧他能找出這個辦法


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-12-30 02:36
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    6

    主题

    33

    帖子

    85

    VC币

    中级会员

    Rank: 3Rank: 3

    积分
    5632
    seven202 发表于 2019-4-10 03:34:01 | 显示全部楼层
    本帖最后由 seven202 于 2019-4-10 03:35 编辑

    回文不小心犯傻了
    麻煩管理員大大刪文一下了<O>
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    VCB-Studio分享论坛X

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

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

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