由于某种原因,某些字体在我的电脑上看起来很糟糕——有些线条是双倍粗的,有“墨迹”斑点,等等。它们几乎不可读,而且肯定没有按预期显示。以下是设计字体的示例:
并在我的屏幕上显示:
(抱歉,手头没有更好的例子)。
一方面,最好能诊断出问题本身。(Vista 机器,问题发生在 Firefox 和 Chrome 中,但不发生在 IE 中,等等)但我认为更实用的权宜之计是阻止下载 webfonts。有办法吗?
我并不关心这种情况何时发生:停止 CSS 中的某些 @ 规则、禁止显示自定义字体、在 TCP 或 HTTP 级别阻止它。我不想对 fonts.googleapis.com 和 themes.googleusercontent.com 进行 DNS 阻止,因为这也会阻止不相关的好东西。
答案1
如果您有代理服务器,您可以在 http 级别阻止它。然后您应该能够告诉它阻止与字体关联的 Content-Type。现在我不知道内容类型,但应该很容易找到它Fiddler。
另一个稍微相关的说明。我的电脑上有一种字体的行为与此类似。这是由 Windows 中的字体和 Clear Type 中的错误引起的。如果我关闭 Clear Type,字体看起来会很好。或者字体看起来和没有 Clear Type 时一样好。所以也许你可以先试试?
我已经检查过了,你也许可以使用以下方法阻止字体Fiddler。通过更改自定义规则,您可能能够做到这一点。看看它是否有效可能会很有用。尝试将此代码添加到 OnBeforeResponse 函数中的 CustomRules.js。
if(oSession.oResponse.headers.ExistsAndContains("Content-Type", "font/woff")) {
oSession.oRequest.FailSession(404, "Blocked", "Fiddler blocked font file");
}
答案2
今天我遇到了这个要求,因为 Google 似乎已经开始在搜索结果标题中推出“Google Sans”。就我而言,字体(我认为)显示符合预期,但尝试阅读该特定字体而不是传统字体(如 Arial)的文本绝对让我头疼。
理论上我可以使用 CSS 用户样式,但这种方法意味着要为引用字体的每条规则编写覆盖,并在网站的 CSS 发生变化时保持更新。(此外,就 Google 而言,他们的许多类名等似乎都是随机的 - 可能是压缩器或类似工具的副作用,而不是刻意选择,但绝对让人感觉非常不方便访问。)
无论如何,经过一番努力,我能够编写一个 GreaseMonkey 脚本来完成这项工作:
// ==UserScript==
// @name Block Fonts
// @namespace mynamespace
// @version 1
// @grant none
// ==/UserScript==
function BlockFonts(blockedFonts) {
var blockFont = {};
for (var i in blockedFonts)
{
blockFont[blockedFonts[i]] = true;
}
var sheets = document.styleSheets;
for (var i in sheets) {
try {
var rules = sheets[i].rules || sheets[i].cssRules;
for (var r in rules) {
if (rules[r].style && rules[r].style.fontFamily)
{
var items = rules[r].style.fontFamily.split(',');
var newItems = [];
for (var n in items)
{
var font = items[n].replaceAll('"', '');
if (font in blockFont)
{
console.log('Blocked "'+font+'"');
}
else
{
newItems.push(items[n]);
}
}
rules[r].style.fontFamily = newItems.join(',');
}
}
} catch (e) {
console.log(e);
}
}
}
BlockFonts(['Google Sans']);
要根据您的使用情况进行定制,只需['Google Sans']
最后将其更改为包含要阻止的字体名称的数组(例如['Google Sans', 'Example Font 2']
)——我写它是为了阻止任意数量的字体,即使在我的用例中只需要一种字体。
try-catch 是针对每个工作表的,因为我在控制台中执行此操作时,某些工作表会收到“SecurityError”,这阻止了以后的工作表被扫描。当作为 GreaseMonkey 脚本运行时不会发生这种情况(至少在撰写本文时),但我认为值得保留它。
在 Pale Moon 29.1.1 中进行了测试,PM GreaseMonkey 叉 3.31.4。