- // ==UserScript==
- // @name font mono beta🔧
- // @description let english website display mono font
- // @namespace font_mono
- // @author Covenant
- // @version 0.9.2
- // @license MIT
- // @homepage
- // @match *://*/*
- // @exclude https://fonts.google.com/*
- // @exclude https://fonts.bunny.net/*
- // @exclude https://codepen.io/*
- // @exclude https://web.archive.org/*
- // @exclude https://www.programmingfonts.org/*
- // @exclude https://www.codingfont.com/*
- // @exclude https://fonts.adobe.com/*
- // @exclude file:///*
- // @icon data:image/svg+xml;base64,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgZGF0YS12aWV3LWNvbXBvbmVudD0idHJ1ZSIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1pbmZvIj4KICAgIDxwYXRoIGQ9Ik0wIDhhOCA4IDAgMSAxIDE2IDBBOCA4IDAgMCAxIDAgOFptOC02LjVhNi41IDYuNSAwIDEgMCAwIDEzIDYuNSA2LjUgMCAwIDAgMC0xM1pNNi41IDcuNzVBLjc1Ljc1IDAgMCAxIDcuMjUgN2gxYS43NS43NSAwIDAgMSAuNzUuNzV2Mi43NWguMjVhLjc1Ljc1IDAgMCAxIDAgMS41aC0yYS43NS43NSAwIDAgMSAwLTEuNWguMjV2LTJoLS4yNWEuNzUuNzUgMCAwIDEtLjc1LS43NVpNOCA2YTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMloiIGZpbGw9IiNGRkZGRkYiPjwvcGF0aD4KPC9zdmc+
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_registerMenuCommand
- // @connect
- // @run-at document-body
- // @noframes
- // ==/UserScript==
- const ary_os_font=[["","'Consolas',","'Cascadia Mono',","'Noto Mono',","'Noto Sans Mono',","'Liberation Mono',","'DejaVu Sans Mono',","'DroidSans_Mono',"],["'Cutive Mono',","'Courier Prime',","'M PLUS 1 Code',","'Xanh Mono',","'New Tegomin',"]];
- const ary_url=["https://fonts.googleapis.com/css2?family=Cutive+Mono&display=swap",
- "https://fonts.googleapis.com/css2?family=Courier+Prime:ital,wght@0,400;0,700;1,400;1,700&display=swap",
- "https://fonts.googleapis.com/css2?family=M+PLUS+1+Code:wght@100;200;300;400;500;600;700&display=swap",
- "https://fonts.googleapis.com/css2?family=Xanh+Mono:ital@0;1&display=swap",
- "https://fonts.googleapis.com/css2?family=New+Tegomin&display=swap"];
- var value=GM_getValue('value', [0,0]);
- var web_font_name=GM_getValue('web_font_name', ary_os_font[value[0]][value[1]]);
- var font_weight=GM_getValue('font_weight', 300);
- var letter_spacing=web_font_name=="'Cutive Mono',"?"letter-spacing: -0.05em;":"";
- var timeoutID_1;
- function create_style(textContent,id,class_name){
- let style=create_node("style",class_name,true,document.body);
- style.type='text/css';
- style.id=id;
- style.textContent=textContent;
- return style;
- }
- const font_family_code="font-family: "+web_font_name+"'Noto Sans Mono','Noto Mono','Cascadia Code','Consolas','Liberation Mono','Monaco','Courier New','flag_patch','flag_white_patch','color_emoji','Noto Sans CJK JP','Meiryo','Yu Gothic','Microsoft JhengHei','symbol_sans','symbol2_sans','emoji_back',monospace;";
- const font_face_default=`
- @font-face{font-family: 'color_emoji';src: local('Twemoji Mozilla'),/*url('file:///C:/Program Files/Mozilla Firefox/fonts/TwemojiMozilla.ttf'),*/local('Noto Color Emoji'),local('Segoe UI Emoji'),local('Apple Color Emoji');}
- @font-face{font-family: 'symbol_sans';src: local('Segoe UI Symbol'),local('NotoSansSymbols-Regular'),local('NotoSansSymbols-Regular-Subsetted'),local('Noto Sans Symbols')/*,local('Apple Symbols')*/;}
- @font-face{font-family: 'symbol2_sans';src: local('NotoSansSymbols2-Regular'),local('NotoSansSymbols-Regular-Subsetted2'),local('Meiryo');}
- @font-face{font-family: 'emoji_back';src: local('Noto Color Emoji'),local('Toss Face Font Web'),local('Segoe UI Emoji');}
- @font-face{font-family: 'old_google';src: local('Noto Color Emoji'),local('NotoColorEmoji');}\n@font-face{font-family: 'old_samsung';src: local('SamsungColorEmoji');}
- @font-face{font-family: 'DroidSans_Mono';src: local('DroidSansMono');}\n@font-face{font-family: 'Cutive_Mono';src: local('Cutive Mono');}
- @font-face{font-family: 'Roboto_Regular';src: local('Roboto');}\n@font-face{font-family: 'Noto_Serif';src: local('NotoSerif');}
- @font-face{font-family: 'Dancing_Script';src: local('DancingScript');}\n@font-face{font-family: 'Coming_Soon';src: local('ComingSoon');}\n@font-face{font-family: 'Carrois_GothicSC';src: local('CarroisGothicSC-Regular');}
- \n`;
- var style_font_face;
- var style_user_css;
- if(document.body!=null){
- style_font_face=create_style(font_face_default,"gm_font_face_font_monospace",["user_gm_font_face","css_font_monospace"]);
- style_user_css=create_style("","gm_user_css_font_monospace",["user_gm_css","css_font_monospace"]);
- style_user_css.textContent+=`
- html:lang(en),body:lang(en),body:not(.fake_class) p:lang(en):not(.fake_class),body:lang(en):not(.fake_class) a:not(.fake_class),body:lang(en) li,body:lang(en) div:not(.emoji),body:lang(en) section,body:lang(en) blockquote
- {`+font_family_code+`font-weight: `+font_weight+`;`+letter_spacing+`/*font-size: 0.99em;font-stretch: ultra-condensed;*/}
- body:not(.fake_class) p:lang(en):not(.fake_class){font-size: 1rem;}
- html:lang(en) a{font-stretch: ultra-condensed;}\n`;
- }
- function create_link_stylesheet(url,class_name,is_appendChild,node,refNode){
- let link_stylesheet=create_node("link",class_name,is_appendChild,node,refNode);
- link_stylesheet.rel="stylesheet";
- link_stylesheet.href=url;
- return link_stylesheet;
- }
- function create_node(tagname,class_name,is_appendChild,node,refNode){
- let element=document.createElement(tagname);
- element.id="";
- if(Array.isArray(class_name)){
- for(let i=0; i<class_name.length; i++){element.classList.add(class_name[i]);}
- }else if(typeof class_name==='string'){element.classList.add(class_name);}
- if(is_appendChild){node.appendChild(element);}else{node.insertBefore(element, refNode);}
- return element;
- }
- function fn_url(url){
- let obj_url=new URL(url);
- let params=obj_url.searchParams;
- //let params=new URLSearchParams(obj_url.search);
- return [obj_url,params];
- }
- //console.log("break");
- function style_01(){
- if(style_user_css.parentNode==undefined){
- console.log("style_font_mono undefined");
- document.body.appendChild(style_font_face);
- document.body.appendChild(style_user_css);
- window.clearInterval(timeoutID_1);
- }
- }
- (function() {
- 'use strict';
- if(document.body==null)return;
- let url=fn_url(document.location);
- timeoutID_1=window.setInterval(( () => style_01()), 1000);
- //window.setTimeout(( () => style_01() ), 10000);
- GM_registerMenuCommand("use os mono font"+(value[0]==0?"✔️":""), () => {
- if(value[0]==0){
- value[1]=(value[1]+1)%(ary_os_font[value[0]].length);
- value=GM_setValue('value', [value[0],value[1]]);
- }else if(value[0]==1){
- value=GM_setValue('value', [0,1]);
- }
- });
- GM_registerMenuCommand("use web font"+(value[0]==1?"✔️":""), () => {
- if(value[0]==1){
- value[1]=(value[1]+1)%(ary_os_font[value[0]].length);
- value=GM_setValue('value', [value[0],value[1]]);
- }else if(value[0]==0){
- value=GM_setValue('value', [1,0]);
- }
- });
- if(value[0]==1){
- if(url[0].host.search(new RegExp("github.com", "i"))!=0&&url[0].host.search(new RegExp("steamdb.info", "i"))!=0&&url[0].host.search(new RegExp("developer.mozilla.org", "i"))!=0){
- let link=create_link_stylesheet(ary_url[value[1]],"gm_font_face_font_monospace",true,document.head);
- GM_registerMenuCommand("rst, "+web_font_name, () => {
- value=GM_setValue('value', [0,0]);
- });
- }else{
- GM_registerMenuCommand("rst, load webfont css fail", () => {
- value=GM_setValue('value', [0,0]);
- });
- }
- }
- //console.log(style_user_css.parentNode);
- })();