[!TIP]
- * 142 Programming Fonts
- * arrowtype/recursive
- * ryanoasis/nerd-fonts
- * iMarslo NerdFonts | install guild
- Patch Fonts with Cursive Italic Styles
- sainnhe/icursive-nerd-font | thlineric/icursive-nerd-font | sainnhe/mono-nerd-font | 40huo/Patched-Fonts
- INPUT™ fonts
- Consolas font family
- monaspace
- ryanoasis/powerline-extra-symbols
- ArrowType
- oldschool font list
- subframe7536/maple-font
font patcher
patch fonts
setup font-patcher
# osx
$ brew install fontforge
# ubuntu
$ sudo apt install python3-fontforge
# install font-patcher v3.2.1.1
$ [[ -d /opt/FontPatcher ]] || mkdir -p /opt/FontPatcher
$ curl -o /opt/FontPatcher/FontPatcher.zip \
-fsSL https://github.com/marslo/fonts/raw/fonts/FontPatcher.v3.2.1.1.zip
$ unzip -o /opt/FontPatcher/FontPatcher.zip /opt/FontPatcher
# setup completion
## osx
$ cp /opt/FontPatcher/completion/font-patcher.sh $(brew --prefix)/etc/bash_completion.d/
## centos/rhel/ubuntu/wsl
$ cp /opt/FontPatcher/completion/font-patcher.sh /usr/share/bash-completion/completions/
## centos/rhel
$ cp /opt/FontPatcher/completion/font-patcher.sh /etc/bash_completion.d/
# setup environment
$ cat >> ~/.bashrc << EOF
FONT_PATCHER='/opt/FontPatcher'
test -d "${FONT_PATCHER}" && PATH+=":${FONT_PATCHER}"
export $PATH
EOF
patch fonts
mono
$ font-patcher RecMonoSemicasual-Regular-1.085.ttf --mono --complete --quiet -ext ttf -out . # or patch for folders $ while read -r _f; do for _e in otf ttf; do outpath="$(dirname $(dirname $_f))_NF/$(basename $(dirname $_f))/${_e}"; [[ -d "${outpath}" ]] || mkdir -p "${outpath}"; echo ".. ${_e} » $(basename ${_f}) » ${outpath}"; /opt/FontPatcher/font-patcher $(realpath "${_f}") --mono --complete --quiet -ext ${_e} -out "${outpath}"; done; done < <(fd -u -tf -e ttf -e otf --full-path /path/to/folder)
san
with name
$ font-patcher --complete --progressbars --outputdir . --name 'Recursive Mono Casual Static Italic Nerd Font' /path/to/font.ttf 2>/dev/null # using name dynamically $ font='/path/to/font.ttf' $ fontfamily="$(fc-query -f '%{family}' "$(realpath "${font}")" | awk -F, '{print $1}')"; $ style="$(fc-query -f '%{style}' "$(realpath "${font}")" | awk -F, '{print $1}')"; $ name="${fontfamily} ${style} Nerd Font"; $ font-patcher --complete --quiet --outputdir . --name "${name}" "${font}" 2>/dev/null
check fonts
[!NOTE|label:references:]
list installed fonts
$ fc-list | sed -re 's/^.+\/([^:]+):\s?([^,:]+),?:?.*$/\1 : \2/g' | column -t -s: -o: | sort -t: -k2 # or $ fc-list | awk '{$1=""}1' | sed -re 's/^\s*([^:,]+:?,?[^,:]+).*$/\1/' | column -t -s:
- i.e.:
$ fc-list | sed -re 's/^.+\/([^:]+):\s?([^,:]+),?:?.*$/\1 : \2/g' | column -t -s: -o: | sort -t: -k2 | grep operator OperatorProNerdFont-Italic.ttf : Operator Pro Nerd Font OperatorProNerdFont-Regular.ttf : Operator Pro Nerd Font OperatorMonoNerdFontMono-Light.ttf : OperatorMono Nerd Font Mono OperatorMonoNerdFontMono-LightItalic.ttf : OperatorMono Nerd Font Mono OperatorMonoLigNerdFontMono-Light.otf : OperatorMonoLig Nerd Font Mono OperatorMonoLigNerdFontMono-LightItalic.otf : OperatorMonoLig Nerd Font Mono OperatorProNerdFont-Light.ttf : OperatorPro Nerd Font OperatorProNerdFont-LightItalic.ttf : OperatorPro Nerd Font
- i.e.:
list fonts properties
$ fc-query /path/to/font.ttf
- i.e.:
$ fc-query Operator/OperatorMonoLigNF/OperatorMonoLigNerdFontMono-Light.ttf | grep -E 'family|style|fullname|weight|slant|spacing|file' family: "OperatorMonoLig Nerd Font Mono"(s) "OperatorMonoLig Nerd Font Mono Light"(s) familylang: "en"(s) "en"(s) style: "Light"(s) "Regular"(s) stylelang: "en"(s) "en"(s) fullname: "OperatorMonoLig Nerd Font Mono Light"(s) fullnamelang: "en"(s) slant: 0(i)(s) weight: 50(f)(s) spacing: 100(i)(s) file: "Operator/OperatorMonoLigNF/OperatorMonoLigNerdFontMono-Light.ttf"(s)
- i.e.:
list particular field of fonts properties
$ fc-query -f '%{family}\n' /path/to/font.ttf
i.e.:
$ fc-query -f '%{family}\n%{style}\n%{fullname}' Recursive/Recursive_Desktop/RecursiveSansCslSt-LtItalic.ttf Recursive Sans Casual Static,Recursive Sn Csl St Lt Light Italic,Italic Recursive Sn Csl St Lt Italic $ fc-query -f '%{family}\n%{style}\n%{fullname}' Recursive/Recursive_Desktop/RecursiveSansCslSt-LtItalic.ttf | awk -F, '{print $1}' Recursive Sans Casual Static Light Italic Recursive Sn Csl St Lt Italic
fonts
highly recommended
[!TIP]
fontsPath
:
- osx:
~/Library/Fonts
or/System/Fonts
- Linux:
~/.fonts
or~/.local/share/fonts
or/usr/share/fonts
Monaco
[!NOTE] THE BEST ALWAYS !
- Monaco
- Nerd-Fonts
- Powerline
RecMonoCasual
[!TIP|label:tips:]
- iMarslo Recursive support both
otf
andttf
format
# RecMonoCasual
$ curl --create-dirs -O --output-dir "${fontsPath}" \
-fsSL --remote-name-all \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoCasual/RecMonoCasualNerdFontMono-Regular.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoCasual/RecMonoCasualNerdFontMono-Italic.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoCasual/RecMonoCasualNerdFontMono-Bold.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoCasual/RecMonoCasualNerdFontMono-BoldItalic.otf
# RecMonoLinear
$ curl --create-dirs -O --output-dir "${fontsPath}" \
-fsSL --remote-name-all \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoLinear/RecMonoLinearNerdFontMono-Regular.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoLinear/RecMonoLinearNerdFontMono-Italic.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoLinear/RecMonoLinearNerdFontMono-Bold.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoLinear/RecMonoLinearNerdFontMono-BoldItalic.otf
# RecMonoSemicasual
$ curl --create-dirs -O --output-dir "${fontsPath}" \
-fsSL --remote-name-all \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoSemicasual/RecMonoSmCasualNerdFontMono-Regular.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoSemicasual/RecMonoSmCasualNerdFontMono-Italic.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoSemicasual/RecMonoSmCasualNerdFontMono-Bold.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoSemicasual/RecMonoSmCasualNerdFontMono-BoldItalic.otf
# RecMonoDuotone
$ curl --create-dirs -O --output-dir "${fontsPath}" \
-fsSL --remote-name-all \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoDuotone/RecMonoDuotoneNerdFontMono-Regular.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoDuotone/RecMonoDuotoneNerdFontMono-Italic.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoDuotone/RecMonoDuotoneNerdFontMono-Bold.otf \
https://github.com/marslo/fonts/raw/fonts/Recursive/Recursive_Code_NF/RecMonoDuotone/RecMonoDuotoneNerdFontMono-BoldItalic.otf
$ curl --create-dirs -O --output-dir "${fontsPath}" \
-fsSL --remote-name-all \
https://github.com/arrowtype/recursive/raw/main/fonts/ArrowType-Recursive-1.085/Recursive_Code/RecMonoCasual/RecMonoCasual-Regular-1.085.ttf \
https://github.com/arrowtype/recursive/raw/main/fonts/ArrowType-Recursive-1.085/Recursive_Code/RecMonoDuotone/RecMonoDuotone-Regular-1.085.ttf \
https://github.com/arrowtype/recursive/raw/main/fonts/ArrowType-Recursive-1.085/Recursive_Code/RecMonoLinear/RecMonoLinear-Regular-1.085.ttf \
https://github.com/arrowtype/recursive/raw/main/fonts/ArrowType-Recursive-1.085/Recursive_Code/RecMonoSemicasual/RecMonoSemicasual-Regular-1.085.ttf &&
fc-cache -f -v
# or
$ version=1.085
$ url='https://github.com/arrowtype/recursive/raw/main/fonts/ArrowType-Recursive-1.085/Recursive_Code/'
$ while read -r _t; do
curl --create-dirs -O --output-dir "${fontsPath}" \
"${url}"/"RecMono${_t}/RecMono${_t}-Regular-1.085.ttf"
done < <( echo 'Casual Duotone Linear Semicasual' | fmt -1 )
$ fc-cache -f -v
Comic Mono
[!NOTE|label:references:]
Agave
[!NOTE|label:references:]
$ curl --create-dirs -O --output-dir "${fontsPath}" \
https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Agave/AgaveNerdFontMono-Regular.ttf
$ curl --create-dirs -O --output-dir "${fontsPath}" \
https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Agave/AgaveNerdFontMono-Bold.ttf
Operator Mono
[!NOTE|label:referencess:]
patched via
Nerd Fonts Patcher v3.2.1.1 (4.13.1) (ff 20230101)
$ curl --create-dirs -O --output-dir "${fontsPath}" \ -fsSL --remote-name-all \ https://github.com/marslo/fonts/raw/fonts/Operator/OperatorMono/OperatorMono-Light.otf \ https://github.com/marslo/fonts/raw/fonts/Operator/OperatorMono/OperatorMono-LightItalic.otf
# Mono NF otf $ curl --create-dirs -O --output-dir "${fontsPath}" \ -fsSL --remote-name-all \ https://github.com/40huo/Patched-Fonts/raw/master/operator-mono-nerd-font/Operator%20Mono%20Light%20Italic%20Nerd%20Font%20Complete.otf \ https://github.com/40huo/Patched-Fonts/raw/master/operator-mono-nerd-font/Operator%20Mono%20Light%20Italic%20Nerd%20Font%20Complete.otf # Mono NF ttf $ curl --create-dirs -O --output-dir "${fontsPath}" \ -fsSL --remote-name-all \ https://github.com/xiyaowong/Operator-Fonts/raw/master/Operator%20Mono%20Nerd%20Font/Operator%20Mono%20Light%20Italic%20Nerd%20Font%20Complete.ttf \ https://github.com/xiyaowong/Operator-Fonts/raw/master/Operator%20Mono%20Nerd%20Font/Operator%20Mono%20Light%20Italic%20Nerd%20Font%20Complete.ttf # Pro NF $ curl --create-dirs -O --output-dir "${fontsPath}" \ -fsSL --remote-name-all \ https://github.com/xiyaowong/Operator-Fonts/raw/master/Operator%20Pro%20Nerd%20Font/Operator%20Pro%20Light%20Italic%20Nerd%20Font%20Complete.ttf \ https://github.com/xiyaowong/Operator-Fonts/raw/master/Operator%20Pro%20Nerd%20Font/Operator%20Pro%20Light%20Nerd%20Font%20Complete.ttf $ showfonts | grep -e ': Operator.*Nerd Font' Operator Mono Light Nerd Font Complete.otf : OperatorMono Nerd Font Operator Pro Light Italic Nerd Font Complete.ttf : OperatorPro Nerd Font Operator Pro Light Nerd Font Complete.ttf : OperatorPro Nerd Font Operator Mono Light Italic Nerd Font Complete.otf : OperatorMono Nerd Font
ligatures
$ ext='otf' # or ext='ttf' $ curl --create-dirs -O --output-dir "${fontsPath}" \ -fsSL --remote-name-all \ https://github.com/marslo/fonts/raw/fonts/Operator/OperatorMonoLigNF/OperatorMonoLigNerdFontMono-Light."${ext}" \ https://github.com/marslo/fonts/raw/fonts/Operator/OperatorMonoLigNF/OperatorMonoLigNerdFontMono-LightItalic."${ext}"
$ curl --create-dirs -O --output-dir "${fontsPath}" \ -fsSL --remote-name-all \ https://github.com/beichensky/Font/raw/master/Operator%20Mono%20Lig/OperatorMonoLig-Light.otf \ https://github.com/beichensky/Font/raw/master/Operator%20Mono%20Lig/OperatorMonoLig-LightItalic.otf $ showfonts | grep -e ': operator.*lig' OperatorMonoLig-LightItalic.otf : Operator Mono Lig OperatorMonoLig-Light.otf : Operator Mono Lig
vim configure
Plug 'morhetz/gruvbox' " ╮ Plug 'sainnhe/gruvbox-material' " ├ theme Plug 'luisiacc/gruvbox-baby', { 'branch': 'main' } " ╯ Plug 'rrethy/vim-hexokinase', { 'do': 'make hexokinase' } set go= " hide everything (go = guioptions) set cpoptions+=n set guifont=OperatorMono\ Nerd\ Font\ Mono:h29 " ╭ nerd font ╮ keep only one set guifont=OperatorMonoLig\ Nerd\ Font\ Mono:h29 " ╰ ligatures ╯ set renderoptions=type:directx,renmode:5 if has( 'gui_running' ) || 'xterm-256color' == $TERM set background=dark colorscheme gruvbox-material " sainnhe/gruvbox-material endif
Gohu
$ curl --create-dirs -O --output-dir "${fontsPath}" \
-fsSL --remote-name-all \
https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Gohu/uni-14/GohuFontuni14NerdFontMono-Regular.ttf \
https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Gohu/uni-11/GohuFontuni11NerdFontMono-Regular.ttf \
https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Gohu/14/GohuFont14NerdFontMono-Regular.ttf \
https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Gohu/11/GohuFont11NerdFontMono-Regular.ttf &&
fc-cache -f -v
Monaspace RN
[!NOTE|label:references:]
nerd-fonts
[!NOTE|label:refereces:]
- download
- Karmenzind/monaco-nerd-fonts
- xtevenx/ComicMonoNF
- #1103 What does --variable-width-glyphs do now?
Nerd Font Mono
(a strictly monospaced variant, created with--mono
)Nerd Font
(a somehow monospaced variant, maybe)Nerd Font Propo
(a not monospaced variant, created with--variable-width-glyphs
)
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Agave/AgaveNerdFontMono-Regular.ttf && fc-cache -f -v
CodeNewRoman another
Monaco
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/CodeNewRoman/Regular/CodeNewRomanNerdFontMono-Regular.otf && fc-cache -f -v
DejaVuSansMono another
Monaco
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DejaVuSansMono/Regular/DejaVuSansMNerdFontMono-Regular.ttf && fc-cache -f -v
pixel
- BigBlueTerminal
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/BigBlueTerminal/BigBlueTerm437NerdFontMono-Regular.ttf && fc-cache -f -v
hand-writing
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Monofur/Regular/MonofurNerdFontMono-Regular.ttf && fc-cache -f -v
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/ComicShannsMono/ComicShannsMonoNerdFontMono-Regular.otf && fc-cache -f -v
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DaddyTimeMono/DaddyTimeMonoNerdFontMono-Regular.ttf && fc-cache -f -v
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/FantasqueSansMono/Regular/FantasqueSansMNerdFontMono-Regular.ttf && fc-cache -f -v
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Hermit/Regular/HurmitNerdFontMono-Regular.otf && fc-cache -f -v
symbole
- NerdFontsSymbolsOnly
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/NerdFontsSymbolsOnly/SymbolsNerdFontMono-Regular.ttf && fc-cache -f -v
others
- CascadiaCode
- EnvyCodeR
- IBMPlexMono
- JetBrains original | JetBrains Nerd Font
powerline fonts
[!NOTE|label:references:]
- Comic Mono font
- Showing special Unicode characters on MacOS
- GNU Unifont Glyphs
- * lujiacn/Monaco for Powerline.md
- * supermarin/powerline-fonts
- * powerline/fonts ~ AnwarShah/fonts
- * Twixes/SF-Mono-Powerline
- * benbusby/anomaly-mono
- yumitsu/font-menlo-extra
- ithewei/powerline-fonts
- JayXon/powerline-web-fonts
- github topic: powerline-fonts
- ryanoasis/nerd-fonts
- Powerline Fonts
- windows
install via package tool
# debian $ sudo apt-get install fonts-powerline # centos/rhel $ sudo dnf install powerline-fonts
install via cmd
[!TIP|label:fonts path in different system:]
- linux:
$HOME/.local/share/fonts
- osx :
$HOME/Library/Fonts
$ fontPath=$HOME/Library/Fonts $ fontPath=$HOME/.local/share/fonts
via powershell
> Invoke-WebRequest -Uri "https://dtinth.github.io/comic-mono-font/ComicMono.ttf" -OutFile "ComicMono.ttf"; Invoke-WebRequest -Uri "https://dtinth.github.io/comic-mono-font/ComicMono-Bold.ttf" -OutFile "ComicMono-Bold.ttf"; $fonts = (New-Object -ComObject Shell.Application).Namespace(0x14); Get-ChildItem -include ComicMono* | % { $fonts.CopyHere($_.fullname) }
cominc mono && comic mono for powerline
# regular $ curl --create-dirs -O --output-dir "${fontsPath}" \ https://dtinth.github.io/comic-mono-font/ComicMono.ttf && curl --create-dirs -O --output-dir "${fontsPath}" \ https://dtinth.github.io/comic-mono-font/ComicMono-Bold.ttf && fc-cache -f -v # for powerline/vim-airline $ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/marslo/mytools/raw/master/others/fonts/monospace/Comic-Mono-for-Powerline.ttf && fc-cache -f -v
monaco for powerline osx version && monaco for powerline windows version
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/marslo/mytools/raw/master/others/fonts/monospace/Monaco-for-Powerline.otf && fc-cache -f -v
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/marslo/mytools/raw/master/others/fonts/monospace/Menlo-Regular.ttf && fc-cache -f -v
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/powerline/fonts/raw/master/Monofur/Monofur%20for%20Powerline.ttf && curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/powerline/fonts/raw/master/Monofur/Monofur%20Italic%20for%20Powerline.ttf && curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/powerline/fonts/raw/master/Monofur/Monofur%20Bold%20for%20Powerline.ttf && fc-cache -f -v
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/Twixes/SF-Mono-Powerline/raw/master/SF-Mono-Powerline-Regular.otf && curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/Twixes/SF-Mono-Powerline/raw/master/SF-Mono-Powerline-RegularItalic.otf && curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/Twixes/SF-Mono-Powerline/raw/master/SF-Mono-Powerline-Bold.otf && curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/Twixes/SF-Mono-Powerline/raw/master/SF-Mono-Powerline-BoldItalic.otf && fc-cache -f -v
-
$ curl --create-dirs -O --output-dir "${fontsPath}" \ https://github.com/benbusby/anomaly-mono/raw/master/AnomalyMono-Powerline.otf && fc-cache -f -v
- linux:
tips
[!NOTE|label:references:]
Mac Office Fonts
[!TIP|label:references:]
- CloudFonts:
~/Library/Group Containers/UBF8T346G9.Office/FontCache/4/CloudFonts