Greasy Fork is available in English.
让每个页面的字体变得有质感,默认使用苹方字体加阴影,自用脚本不处理外部需求。
当前为
// ==UserScript==
// @name 字体渲染(自用脚本)
// @namespace https://openuserjs.org/users/t3xtf0rm4tgmail.com
// @version 2020.11.24.13
// @icon https://openuserjs.org/images/favicon.ico
// @description 让每个页面的字体变得有质感,默认使用苹方字体加阴影,自用脚本不处理外部需求。
// @author F9y4ng
// @include *
// @exclude *://openuserjs.org/*
// @exclude *://greasyfork.org/*
// @license GPL-3.0-only
// @create 2020-11-24
// @copyright 2020, F9y4ng
// @run-at document-start
// ==/UserScript==
(function() {
let isdebug = false;
let debug = isdebug ? console.log.bind(console) : function() {};
const shadow_r = 1; //阴影大小
let tshadow = `
* {
text-shadow: 0px 0px ` + shadow_r + `px currentcolor!important;
font-family: 'PingFang SC','Microsoft YaHei'!important;
}
*:not(button):not([class*='icon']):not(.fa):not(.fas):not(i) {
font-family: 'PingFang SC',
'Heiti SC',
'myfont',
'Microsoft YaHei',
'Source Han Sans SC',
'Noto Sans CJK SC',
'HanHei SC',
'sans-serif',
'icomoon',
'Icons',
'brand-icons',
'FontAwesome',
'Material Icons',
'Material Icons Extended',
'Glyphicons Halflings'!important;
}`;
addStyle(tshadow, "Font_Render", "head");
if (location.host.includes(".baidu.com")) {
document.addEventListener('DOMNodeInserted', Callback, false);
}
function Callback(e) {
if (e.target !== null && typeof(e.target.className) === "string" && e.target.className.indexOf("Font_Render") === 0) {
return;
}
setTimeout(function() {
addStyle(tshadow, "Font_Render", "head");
}, 200);
}
function addStyle(css, className, addToTarget, isReload, initType) {
RAFInterval(function() {
let addTo = document.querySelector(addToTarget);
if (typeof(addToTarget) === "undefined") {
addTo = (document.head || document.body || document.documentElement || document);
}
isReload = isReload || false;
initType = initType || "text/css";
if (typeof(addToTarget) === "undefined" || (typeof(addToTarget) !== "undefined" && document.querySelector(addToTarget) !== null)) {
if (isReload === true) {
safeRemove("." + className);
} else if (isReload === false && document.querySelector("." + className) !== null) {
return true;
}
let cssNode = document.createElement("style");
if (className !== null) {
cssNode.className = className;
}
cssNode.setAttribute("type", initType);
cssNode.innerHTML = css;
try {
addTo.appendChild(cssNode);
} catch (e) {
debug('//-> ' + e.name);
}
return true;
}
}, 200, true);
}
function safeRemove(Css) {
safeFunction(() => {
let removeNodes = document.querySelectorAll(Css);
for (let i = 0; i < removeNodes.length; i++) {
removeNodes[i].remove();
}
});
}
function safeFunction(func) {
try {
func();
} catch (e) {
debug('//-> ' + e.name);
}
}
function RAFInterval(callback, period, runNow) {
const needCount = period / 1000 * 60;
let times = 0;
if (runNow === true) {
const shouldFinish = callback();
if (shouldFinish) {
return;
}
}
function step() {
if (times < needCount) {
times++;
requestAnimationFrame(step);
} else {
const shouldFinish = callback() || false;
if (!shouldFinish) {
times = 0;
requestAnimationFrame(step);
} else {
return;
}
}
}
requestAnimationFrame(step);
}
})();