F9y4ng / GreasyFork-Scripts

The open source code of this project is used for userscripts (油猴脚本) for desktop browsers, including Font Rendering (Customized) (字体渲染(自用脚本)- Font Rendering.user.js), and Search Engine Assistant (优雅的搜索引擎助手 - Google & Baidu Switcher.user.js), etc.
https://f9y4ng.github.io/GreasyFork-Scripts/
GNU General Public License v3.0
951 stars 46 forks source link

内置字体与自定义字体不可用 #162

Closed TC-Mits-Qine closed 1 year ago

TC-Mits-Qine commented 1 year ago

描述错误信息
设置字体仅有「微软雅黑」与「微軟正黑體」可用,其余内置字体不在列表中可见,添加自定义字体后依然不可用,尝试重建字体列表全局缓存无果。

错误再现 (重现行为的步骤)

  1. 打开「字体渲染设置」
  2. 单击「设置字体」输入框,显示如下:

图片

  1. 尝试添加自定义字体后,依然只显示两种字体:

图片

预期结果 能够正常更换字体。

客户端信息:

附加信息 在同一台电脑上的 Chrome 浏览器中脚本工作正常,两者皆导入了相同的备份文件,配置完全相同。

以下为示例日志: console-export-2023-1-3_2-42-31.txt

F9y4ng commented 1 year ago

我查看了一下日志,没有发现相关的错误发生。

建议

开启脚本调试模式后,打开控制台,先通过脚本清空原有的字体缓存,然后重新打开脚本设置界面(Alt+P),让字体缓存重建,然后将生成的日志重新上传。(我能预感到不会报错😓)

猜测

我个人感觉,应该是该浏览器的问题。每个浏览器对字体的解析是不同的,即使常用的Chrome和Firefox也有不同(比如屏显臻宋字体,Firefox下能识别出中英文字体名,但Chrome下只能识别中文字体名,个别小众魔改浏览器却无法通过脚本识别出该字体)。

TC-Mits-Qine commented 1 year ago

在经过建议的调试后,能够在列表中找到内置的字体和自定义字体了。

图片

但经过测试,「字体重写」功能不生效,日志在下方附上。 日志中可见报错语句:

Request for font "PingFang SC" blocked at visibility level 1 (requires 3)
ttTQ4eVvAtMUApscT-YizUOjk94.br.js:2:12106

console-export-2023-1-3_5-14-33.txt

F9y4ng commented 1 year ago
Blocked https://cn.bing.com/ from extracting canvas data because no user input was detected. 3 eval:1558:46

从日志上看,脚本的字体检测都被浏览器block了,字体列表中罗列出来的也并非是真实结果。我曾经在另外一款极其小众(以至于我都没记住它的名字)的浏览器上遇到过同样的问题。而其他主流浏览器不会存在这样的问题。

如果字体没有获取到真实值,那字体重写肯定是无效的。

有关浏览器内核级别处理字体逻辑的问题,可能需要你提交ISSUES 到该浏览器的项目中。

F9y4ng commented 1 year ago

建议尝试

进入about:config,修改privacy.resistFingerprinting,值为false,清空字体缓存后重启浏览器,再试试。