Exo Font Engine

Force Product Sans fonts on specific sites

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Exo Font Engine
// @namespace    exo.font.engine
// @version      1.0
// @description  Force Product Sans fonts on specific sites
// @match        *://open.spotify.com/*
// @match        *://discord.com/*
// @match        *://twitter.com/*
// @match        *://x.com/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const fontCSS = `
    /* === PRODUCT SANS FONT SET === */
    @font-face {
        font-family: 'Product Sans';
        src: url('https://fonts.gstatic.com/s/productsans/v5/pxiByp8kv8JHgFVrLBT5Z1xlEA.ttf') format('truetype');
        font-weight: 400;
    }

    @font-face {
        font-family: 'Product Sans Medium';
        src: url('https://fonts.gstatic.com/s/productsans/v5/pxiEyp8kv8JHgFVrJJfecg.ttf') format('truetype');
        font-weight: 500;
    }

    @font-face {
        font-family: 'Product Sans Bold';
        src: url('https://fonts.gstatic.com/s/productsans/v5/pxiByp8kv8JHgFVrLCz7Z1xlEA.ttf') format('truetype');
        font-weight: 700;
    }

    /* === GLOBAL FONT OVERRIDE === */
    * {
        font-family: 'Product Sans', 'Product Sans Medium', 'Product Sans Bold', sans-serif !important;
        -webkit-font-smoothing: antialiased !important;
        text-rendering: optimizeLegibility !important;
    }

    /* === WEIGHT CONTROL === */
    b, strong {
        font-family: 'Product Sans Bold' !important;
        font-weight: 700 !important;
    }

    h1, h2, h3, h4, h5, h6 {
        font-family: 'Product Sans Bold' !important;
    }

    button, nav, .medium {
        font-family: 'Product Sans Medium' !important;
        font-weight: 500 !important;
    }
    `;

    const style = document.createElement("style");
    style.textContent = fontCSS;
    document.head.appendChild(style);

})();