Apply custom base font globally.
Custom fonts by vednoc
Imported and mirrored from https://raw.githubusercontent.com/vednoc/custom-fonts/main/fonts.user.styl
Details
Authorvednoc
LicenseMIT
Categoryglobal
Created
Updated
Size5.7 kB
Statistics
Learn how we calculate statistics in the FAQ.
Failed to fetch stats.
Description
Notes
Inspired by openstyles/stylus/#1236. If you find bugs and/or have suggestions, feel free to open an issue on GitHub.
Source code
/* ==UserStyle==
@name Custom fonts
@namespace github.com/vednoc/custom-fonts
@description Apply your favorite custom fonts with ease.
@author vednoc <vednoc@pm.me> (https://github.com/vednoc)
@homepageURL https://github.com/vednoc/custom-fonts
@supportURL https://github.com/vednoc/custom-fonts/issues
@preprocessor stylus
@version 0.6.0
@license MIT
@var text base 'Set your favorite Base font' 'null'
@var select baseStyle 'Base font style' {
'Default*': 'null',
'Normal ': 'normal',
'Italic ': 'italic',
'Oblique ': 'oblique',
}
@var select baseWeight 'Base font weight' {
'Default *': 'null',
'100 ': '100',
'200 ': '200',
'300 ': '300',
'400 (Normal) ': '400',
'500 ': '500',
'600 ': '600',
'700 (Bold) ': '700',
'800 ': '800',
'900 ': '900',
}
@var text mono 'Set your favorite Mono font' 'null'
@var select monoStyle 'Mono font style' {
'Default*': 'null',
'Normal ': 'normal',
'Italic ': 'italic',
'Oblique ': 'oblique',
}
@var select monoWeight 'Mono font weight' {
'Default *': 'null',
'100 ': '100',
'200 ': '200',
'300 ': '300',
'400 (Normal) ': '400',
'500 ': '500',
'600 ': '600',
'700 (Bold) ': '700',
'800 ': '800',
'900 ': '900',
}
@var checkbox letterSpacing 'Reset letter-spacing to 0px' 0
@var checkbox inputs 'Use Mono font in input areas' 0
==/UserStyle== */
icons = ()
code = ()
composer = ()
bold = ()
// Exclude default code areas.
append(code, 'code', 'pre', '.pre')
// Exclude icon fonts.
append(icons, '.i', '.icon', '[class*=icon]')
append(icons, '.fa', '.fab', '.fad', '.fal', '.far', '.fas')
append(icons, '.fa-solid', '.fa-regular', '.fa-light', '.fa-duotone', '.fa-thin', '.fa-sharp', '.fa-brands')
append(icons, '[class*=octicon-]') // github
append(icons, '.glyphicon') // searx
append(icons, '[aria-hidden=true]') // google meet
append(icons, '[class*=material-icons]') // material icons
append(icons, '[class*=icofont]') // icofont icons
append(icons, '[class*=selector__glyph][data-bind]') // fontello icons
// Exclude icons on DuckDuckGo.
append(icons, 'input[id^=search][type=submit][value=S]') // search bar
append(icons, '[class*=js-side-menu-]') // navbar menu
append(icons, '.ddgsi', '.btn--icon') // misc icons
// Exclude code areas on GitHub.
append(code, '[class^=blob-]', '.react-code-text', '#read-only-cursor-text-area', '.code-navigation-cursor')
// Exclude code areas on GitLab.
append(code, '.diff-line-num')
append(code, '.diff-viewer') // commit diff
// Exclude various text editors.
append(code, '.ace_editor') // #2
append(code, '.CodeMirror', '.cm-editor .cm-scroller')
append(code, '.monaco-editor')
append(composer, '#squire') // protonmail
// Gmail composer and font menu. #3
append(icon, 'div[jsaction][jslog]', '[id][style*=font-family]')
// Exclude utility classes for fonts.
append(code, '.monospace', '.text-mono', '.font-mono', '[class*=monospace]')
// mathjax
append(icons, 'mjx-math')
// Lightbox. #12
append(icons, '.fancybox-button')
// Microsoft icons. #12
append(icons, '[data-icon-name]')
append(composer, 'textarea')
// Discord
append(composer, '[data-slate-editor=true]', '[class*=channelTextArea-]')
// Gmail #3
append(composer, '[contenteditable=true]', '[g_editable]')
// inputs, but not of button type #6
append(composer, 'input:not([name=subjectbox]):not([type=button]):not([type=submit]):not([type=reset])')
// Github search
append(composer, '.QueryBuilder-StyledInputContainer')
// don't change the weight of headers and bold text
append(bold, 'strong', 'b', '[class*=bold]', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6')
// Add children elements.
append(icons, i + ' *') for i in icons
append(code, i + ' *') for i in code
append(composer, i + ' *') for i in composer
append(bold, i + ' *') for i in bold
$bold = join(', ', bold)
$code = join(', ', code)
$icons = join(', ', icons)
$composer = join(', ', composer)
@-moz-document regexp('(file|https?|(chrome|moz)-extension)://.+') {
// make sure to include all selectors that get different fonts int the :not
:not({ join(', ', $icons, $code, $composer, 'body > div') }) {
font-family: base !important if base
font-style: baseStyle !important if baseStyle
letter-spacing: 0px !important if letterSpacing
}
:not({ $bold }) {
font-weight: baseWeight if baseWeight
}
{ $code } {
font-family: mono !important if mono
font-style: monoStyle !important if monoStyle
font-weight: monoWeight if monoWeight
letter-spacing: 0px !important if letterSpacing
}
{ $composer } {
if inputs {
font-family: mono !important if mono
font-style: monoStyle !important if monoStyle
font-weight: monoWeight if monoWeight
letter-spacing: 0px !important if letterSpacing
} else {
font-family: base !important if base
font-style: baseStyle !important if baseStyle
font-weight: baseWeight if baseWeight
letter-spacing: 0px !important if letterSpacing
}
}
}
@-moz-document regexp('https?://(www\.)?github.com/.*') {
{ 'body > div' } {
font-family: mono !important if mono
font-style: monoStyle !important if monoStyle
font-weight: monoWeight if monoWeight
letter-spacing: 0px !important if letterSpacing
}
}