Greasy Fork

Greasy Fork is available in English.

浏览器字体渲染

解决Windows平台浏览器默认情况下字体渲染偏细的问题。适用于Edge、Chrome、Firefox等。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         浏览器字体渲染
// @namespace    fontrenderning.script.cmos4k
// @version      1.4
// @description  解决Windows平台浏览器默认情况下字体渲染偏细的问题。适用于Edge、Chrome、Firefox等。
// @author       太极
// @match        *://*/*
// @grant        GM_addStyle
// @run-at       document-start
// @icon         data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzcxMDgzNTgwNzc4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE4ODMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTc5MC43NTQxMzMgOTMuODY2NjY3Qzg2Ny43MzMzMzMgOTMuODY2NjY3IDkzMC4xMzMzMzMgMTU2LjI2NjY2NyA5MzAuMTMzMzMzIDIzMy4yNDU4Njd2NTU3LjUwODI2NkM5MzAuMTMzMzMzIDg2Ny43MzMzMzMgODY3LjczMzMzMyA5MzAuMTMzMzMzIDc5MC43NTQxMzMgOTMwLjEzMzMzM0gyMzMuMjQ1ODY3QzE1Ni4yNjY2NjcgOTMwLjEzMzMzMyA5My44NjY2NjcgODY3LjczMzMzMyA5My44NjY2NjcgNzkwLjc1NDEzM1YyMzMuMjQ1ODY3QzkzLjg2NjY2NyAxNTYuMjY2NjY3IDE1Ni4yNjY2NjcgOTMuODY2NjY3IDIzMy4yNDU4NjcgOTMuODY2NjY3aDU1Ny41MDgyNjZ6TTM4OS43Njg1MzMgNzc1LjgzMzZhMTIuOCAxMi44IDAgMCAwLTEyLjggMTIuOHYxMS4yNDY5MzNhMTIuOCAxMi44IDAgMCAwIDEzLjQyNzIgMTIuNzg3MmMzMS43ODY2NjctMS41NjU4NjcgNTQuMzIzMi0yLjU5NDEzMyA2Ny42MTM4NjctMy4wODQ4IDIyLjYzODkzMy0wLjgzMiA0MS4xNzc2LTEuMjUwMTMzIDU1LjYyNDUzMy0xLjI1MDEzMyAxOS45OTc4NjcgMCA1Ny4yMjAyNjcgMS4yNTAxMzMgMTExLjY2NzIgMy43NTA0YTU0Nzk1LjU0MTMzMyA1NDc5NS41NDEzMzMgMCAwIDAgMTguMDMwOTM0IDAuNzI1MzMzIDEyLjggMTIuOCAwIDAgMCAxMi44LTEyLjh2LTExLjM3NDkzM2ExMi44IDEyLjggMCAwIDAtMTIuOC0xMi44aC0xLjc4MzQ2N2MtMTYuMTEwOTMzIDAtMjguNjA4LTEuNTI3NDY3LTM3LjQ5OTczMy00LjU4MjQtOC44ODc0NjctMy4wNTQ5MzMtMTUuNDE1NDY3LTguMDU1NDY3LTE5LjU4NC0xNS4wMDE2LTMuNjA5Ni03LjIyMzQ2Ny02LjI0NjQtMTguMTkzMDY3LTcuOTE0NjY3LTMyLjkxNzMzMy0xLjY2NC0xNC43Mi0yLjUwMDI2Ny00MC40MTM4NjctMi41MDAyNjctNzcuMDgxNnYtNzcuOTE3ODY3YzAtMzguMTQ0IDAuMTQwOC04OC4yODU4NjcgMS45Mi0yNjkuMDMwNGExMi44IDEyLjggMCAwIDEgMTIuOC0xMi42Mzc4NjdoNjAuNjk3NmM0Mi40OTYgMCA3MC45NzE3MzMgNS45MDUwNjcgODUuNDE4NjY3IDE3LjcwNjY2NyA4LjY1MjggNy4wNzg0IDE3LjI2NzIgMjYuMjQ0MjY3IDI1Ljg0NzQ2NyA1Ny41MTA0YTEyLjggMTIuOCAwIDAgMCAxNC4zMTA0IDkuMjU4NjY3bDEzLjgyNC0yLjE1MDRhMTIuOCAxMi44IDAgMCAwIDEwLjczOTItMTQuMjAzNzM0Yy0zLjM0OTMzMy0yNy4zMjM3MzMtNS41NDY2NjctNDcuNzM1NDY3LTYuNjAwNTM0LTYxLjI0MzczM2E4NjcuNTkyNTMzIDg2Ny41OTI1MzMgMCAwIDEtMi43MDUwNjYtNjcuMjkzODY3IDEwLjA4MjEzMyAxMC4wODIxMzMgMCAwIDAtMTIuMzIyMTM0LTkuODMwNGMtMTEuNDM0NjY3IDIuNjA2OTMzLTIyLjExODQgNC4yODgtMzIuMDU1NDY2IDUuMDM4OTM0LTIwLjEzODY2NyAxLjUyNzQ2Ny01NS43NjUzMzMgMi4yOTEyLTEwNi44NzU3MzQgMi4yOTEySDM4OS4wNTE3MzNjLTQ1LjU1OTQ2NyAwLTc3LjkxNzg2Ny0wLjc2MzczMy05Ny4wODM3MzMtMi4yOTEyLTkuMDI4MjY3LTAuNzE2OC0xOS4wOTc2LTIuMjEwMTMzLTMwLjIwOC00LjQ4YTEyLjggMTIuOCAwIDAgMC0xNS4zMzAxMzMgMTEuNjgyMTMzYy0xLjcxOTQ2NyAyNS41MjMyLTMuNTU0MTMzIDQ1LjM0NjEzMy01LjUwNCA1OS40NjQ1MzMtMi4wMzk0NjcgMTQuNzU4NC02LjEwNTYgMzYuOTI4LTEyLjIwMjY2NyA2Ni41MDg4YTEyLjggMTIuOCAwIDAgMCA5Ljg3NzMzMyAxNS4xMDRsMTUuMjQwNTM0IDMuMjQyNjY3YTEyLjggMTIuOCAwIDAgMCAxNC44NTY1MzMtOC42MzE0NjdjMTAuMjgyNjY3LTMyLjIyMTg2NyAyMC4yNTgxMzMtNTIuMDA2NCAyOS45MzQ5MzMtNTkuMzQ5MzMzIDE2LjExMDkzMy0xMi4yMTk3MzMgNDUuOTczMzMzLTE4LjMyOTYgODkuNTgyOTM0LTE4LjMyOTZoNTguODY3MmExMi44IDEyLjggMCAwIDEgMTIuOCAxMi44djIyNS41MzE3MzNjMCA4MS4xMDkzMzMtMC41NTQ2NjcgMTM2LjY2NTYtMS42NjQgMTY2LjY2NDUzNC0xLjEwOTMzMyAzMC4wMDMyLTMuMDU5MiA0OC44OTE3MzMtNS44MzY4IDU2LjY2OTg2Ni00LjE2NDI2NyAxMC4yNzQxMzMtMTAuNTU1NzMzIDE3LjQyOTMzMy0xOS4xNjU4NjcgMjEuNDU3MDY3cy0yMi4yMjA4IDYuMDQxNi00MC44MzIgNi4wNDE2aC0yLjYxNTQ2N3oiIGZpbGw9IiMyYzJjMmMiIHAtaWQ9IjE4ODQiPjwvcGF0aD48L3N2Zz4=
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // --- 配置区域 ---
    const config = {
        shadowSize: '0.75px',
        shadowColor: '#7C7C7CDD',
        strokeSize: '0px',
        strokeColor: 'transparent'
    };

    // --- 排除列表 ---
    const excludeSelectors = [
        'i', '[class*="glyph"]', '[class*="icon"]', '[class*="fa-"]', '[class*="vjs-"]',
        '[class*="watermark"]', '.textLayer *', 'pre', 'pre *', 'code', 'code *',
        '.mjx-container *', '.katex *'
    ].join(',');

    // --- 生成 CSS ---
    const css = `
        /* 1. 全局抗锯齿 */
        html {
            -webkit-font-smoothing: antialiased !important;
            -moz-osx-font-smoothing: grayscale !important;
            text-rendering: optimizeLegibility !important;
            -webkit-text-size-adjust: 100% !important;
        }

        /* 2. 核心渲染 */
        body, * {
            text-shadow: 0 0 ${config.shadowSize} ${config.shadowColor};
            -webkit-text-stroke: ${config.strokeSize} ${config.strokeColor};
        }

        /* 3. 排除项 */
        ${excludeSelectors} {
            text-shadow: none !important;
            -webkit-text-stroke: 0px transparent !important;
        }

        /* 4. 选中样式修复 */
        ::selection {
            background: Highlight !important;
            color: HighlightText !important;
            text-shadow: none !important;
            -webkit-text-stroke: 0px transparent !important;
        }
    `;

    // --- 注入样式 ---
    if (typeof GM_addStyle !== "undefined") {
        GM_addStyle(css);
    } else {
        const style = document.createElement('style');
        style.textContent = css;
        (document.head || document.documentElement).appendChild(style);
    }

})();