Substitutes arbitrary fonts on webpages
当前为
// ==UserScript==
// @name Font Substitution v3
// @description Substitutes arbitrary fonts on webpages
// @author Alan Davies
// @copyright 2015, Alan Davies
// @version 3.0.1
// @date 2015-08-26
// @namespace FontSub3
// @include *
// @grant GM_addStyle
// @run-at document-start
// ==/UserScript==
var globalDebug = false;
if (globalDebug) console.log("Font substitution start");
var fontMap = new Map([
[ "arial", "Verdana" ],
[ "helvetica", "Verdana" ],
[ "courier", "Consolas" ],
[ "courier new", "Consolas" ]
]);
var weights = [ "normal", "bold" ];
var styles = [ "normal" , "italic" ];
function OverrideFontFaces()
{
for (let fontSub of fontMap)
{
for (w = 0; w < weights.length; ++w)
{
let weight = weights[w];
for (s = 0; s < styles.length; ++s)
{
let style = styles[s];
let replacementFont = fontSub[1];
if (weight != "normal")
replacementFont = replacementFont + " " + weight;
if (style != "normal")
replacementFont = replacementFont + " " + style;
let css =
"@font-face {" +
"font-family: \"" + fontSub[0] + "\"; " +
"src: local(\"" + replacementFont + "\"); " +
"font-style: " + style + "; " +
"font-weight: " + weight +
"}";
if (globalDebug) console.log("Adding CSS: " + css);
GM_addStyle(css);
}
}
}
}
var done = false;
// create an observer instance
var observer = new MutationObserver(function(mutations) {
if (globalDebug) console.log("Mutation event");
// Add the font face overrides once we have a body element
if (!done && (null != document.body))
{
observer.disconnect();
OverrideFontFaces();
done = true;
}
});
observer.observe(document, { childList: true, attributes: false, characterData: false, subtree: true });