如何在Google Chrome中调试“丢失的字体”(由Chrome扩展程序添加)

fquxozlt  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(161)

TL;DR:是否可以在网站(Chrome)上查看 * 可用 * 字体?

我使用Chrome操作系统,它不允许你在系统上安装自定义字体。
为了解决这个问题,我创建了一个Chrome扩展程序,可以将我想要的字体添加到网页中:

"content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"], 
      "css" : ["fonts.css"]
    }
  ],
  "web_accessible_resources": [
    {
        "resources": ["fonts/*.ttf", "fonts/*.woff2"],
        "matches": ["http://*/*", "https://*/*"]
    }
  ]

CSS只是定义了font-face:

@font-face {
  font-family: 'Hack';
  src: url('chrome-extension://__MSG_@@extension_id__/fonts/hack-regular.woff2');
  font-weight: 400;
  font-style: normal;
}

code { font-family: 'Hack', monospace !important; }
pre { font-family: 'Hack', monospace !important; }
:root { --monospace-font-family: 'Hack'; }

最后的css规则是无关紧要的(我认为)。
一般来说,这在类似于vscode-remote的网站上运行得很好,它让我在设置中选择字体。然而,我发现我公司的一个内部网站不允许我这样做。
我看到了计算的css,它指定了我的字体,但显然没有找到:

font-family: Hack, "Comic Sans MS", monospace;

我还看到css规则被一个“注入的样式表”应用(但是我不能调试那个样式表,因为它来自一个扩展。
基本上,我有我的字体在其他网站上工作。我有我的css正在安装,我有我的字体正在使用,为什么它不加载?.
我检查了网络标签,它甚至没有被下载(因为它是在其他网站)。

xjreopfe

xjreopfe1#

事实证明,您需要在所有框架上安装字体。
更新后的manifest.json

"content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"], 
      "all_frames": true,
      "css" : ["fonts.css"]
    }
  ],

一位同事暗示了这个问题,当我试图使用添加到父iframe而不是我想要的字体时,我证实了这一点。
至于“如何调试”这类问题,目前还没有一个明确的答案。我无法找到一种方法来列出给定框架的可用字体,也无法查看注入的CSS是否安装在该框架上。

相关问题