Override every element’s font and smoothing settings
当前为
// ==UserScript==
// @name Force UI Sans-Serif & Clear Text
// @description Override every element’s font and smoothing settings
// @match *://*/*
// @run-at document-start
// @version 0.0.1.20250601040220
// @namespace https://greasyfork.org/users/1435046
// ==/UserScript==
(function () {
// MutationObserver to handle dynamically added elements
document.fonts.ready.then(() => {
// Apply to existing DOM once fonts are ready
for (const element of document.querySelectorAll('*')) {
const computedFont = getComputedStyle(element).fontFamily;
if (computedFont.includes("Material Icons Extended")) continue;
if (element.matches('[class*="fa-"], [class*="icon-"], [class*="material-"], [class*="fa"], [class*="icon"], [class*="material"]')) continue;
element.style.fontFamily = 'ui-rounded, ui-sans-serif, system-ui, sans-serif';
element.style.textRendering = 'optimizeLegibility';
}
const observer = new MutationObserver((mutations) => {
for (const mutation of mutations) {
for (const node of mutation.addedNodes) {
if (node.nodeType !== Node.ELEMENT_NODE) continue;
// Check the added node itself
const computedFont = getComputedStyle(node).fontFamily;
if (!computedFont.includes("Material Icons Extended") &&
!node.matches('[class*="fa-"], [class*="icon-"], [class*="material-"], [class*="fa"], [class*="icon"], [class*="material"]')) {
node.style.fontFamily = 'ui-rounded, ui-sans-serif, system-ui, sans-serif';
node.style.textRendering = 'optimizeLegibility';
}
// Check all its descendants
for (const descendant of node.querySelectorAll('*')) {
const descFont = getComputedStyle(descendant).fontFamily;
if (descFont.includes("Material Icons Extended")) continue;
if (descendant.matches('[class*="fa-"], [class*="icon-"], [class*="material-"], [class*="fa"], [class*="icon"], [class*="material"]')) continue;
descendant.style.fontFamily = 'ui-rounded, ui-sans-serif, system-ui, sans-serif';
descendant.style.textRendering = 'optimizeLegibility';
}
}
}
});
observer.observe(document.documentElement, { childList: true, subtree: true });
});
})();