找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 412|回复: 3

[求助] 请教一个扩展的问题

[复制链接]

9

主题

31

回帖

423

积分

中级会员

积分
423
发表于 2025-3-2 00:32:32 | 显示全部楼层 |阅读模式
本帖最后由 vrgf1ew 于 2025-3-2 10:31 编辑

advanced font settings可以调整不同语言的默认字体,我将语言调整到Japanese时,控制台会报错,似乎是读取字体时出错了。点击reset settings for this script或者reset all settings也是报同样的错误。以上测试都是在全新的百分浏览器下进行的,没做过任何修改。这是扩展本身的问题还是浏览器的问题呢。


但是在chrome下是没有这个问题的,能够读取到默认的日文字体设置(Meiryo、Yu Mincho、Meiryo)。






image.png



image.png







回复

使用道具 举报

8

主题

7846

回帖

2万

积分

超级版主

(^^ゞ

积分
22037
发表于 2025-3-2 11:17:08 | 显示全部楼层
本帖最后由 S8F8ry 于 2025-3-2 11:18 编辑

😝 一个很久远的内核 bug,原因是由 Review CJK font list for Win10, possibly with additional logics 给了一个特性,允许日语字体的默认首选项可以是一个逗号分隔的字体列表,例如这样:
  1. ,Meiryo,Yu Gothic
复制代码
因为这在浏览器内部能正常被解析,所以不会导致出现异常。但这却导致了浏览器插件获取给定(语言)脚本和通用字体系列的字体的 API(chrome.fontSettings.getFont) 在非日语界面尝试读取日语的自定义字体时,会如下图所示返回了这个逗号分隔的字体列表:

old.jpg

由于插件里的处理逻辑是认为此 API 返回总会是单个字体名称,所以它是与现有的字体直接作相等性比较,结果当然是没有"相等"的字体,故而生成警告日志并且也没能读取到日语的默认字体。

其实早期也有一个人在提交相应的 issues:




但似乎都没被处理,最后是在 126+ 内核以上才解决此问题,详情参考:Font setting is "Custom" in new profile for Japanese

在新内核下 API 的结果已是符合常识的单个字体名称了:

new.jpg
¯\(°_o)/¯
回复

使用道具 举报

9

主题

31

回帖

423

积分

中级会员

积分
423
 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 vrgf1ew 于 2025-3-4 03:54 编辑
S8F8ry 发表于 2025-3-2 11:17
😝 一个很久远的内核 bug,原因是由 Review CJK font list for Win10, possibly with additional logics 给 ...

感谢回复解答!我还发现一个问题,也和内核有关系吗?

此页面为例:调整Simplified Chinese的sans-serif字体,页面字体会随着变化,但是如果选择的字体恰好和Default的sans-serif字体一样,页面字体不会发生变化。

我试了好几个字体,都是一样的问题,不过chrome下没有此问题。


回复

使用道具 举报

8

主题

7846

回帖

2万

积分

超级版主

(^^ゞ

积分
22037
发表于 7 天前 | 显示全部楼层
vrgf1ew 发表于 2025-3-4 03:51
感谢回复解答!我还发现一个问题,也和内核有关系吗?

以此页面为例:调整Simplified Chinese的sans-seri ...

看起来也是一个 bug。测试了下,手动设定简中的 Sans-serif 字体为隶书并读取设置后的结果:

  1. chrome.fontSettings.setFont({ genericFamily: 'sansserif', script: 'Hans', fontId: 'LiSu' }); chrome.fontSettings.getFont({ genericFamily: 'sansserif', script: 'Hans' }, res => console.log(res.fontId));
复制代码
lisu.jpg


设置的结果正常且页面中 Sans-serif 字体渲染成隶书。

然后又手动设定简中的 Sans-serif 字体为微软雅黑(*我的系统默认*)并读取设置后的结果:
  1. chrome.fontSettings.setFont({ genericFamily: 'sansserif', script: 'Hans', fontId: 'Microsoft YaHei' }); chrome.fontSettings.getFont({ genericFamily: 'sansserif', script: 'Hans' }, res => console.log(res.fontId));
复制代码


ms.jpg


设置的结果也正常,但是页面中的 Sans-serif 字体依旧渲染成了上次所设定的隶书。那说明浏览器并没有真正地响应 chrome.fontSettings.setFont({ genericFamily: 'sansserif', script: 'Hans', fontId: 'Microsoft YaHei' }) 的更改,这可能是内部代码里的判断逻辑有问题,当字体与系统默认的相等时意外地忽略掉应用字体更改处理了。

¯\(°_o)/¯
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|百分浏览器论坛

GMT+8, 2025-3-11 07:04 , Processed in 0.017597 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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