- Notifications
You must be signed in to change notification settings - Fork3.8k
Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts: Hack, Source Code Pro, more. Glyph collections: Font Awesome, Material Design Icons, Octicons, & more
License
Unknown, Unknown licenses found
Licenses found
ryanoasis/nerd-fonts
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Nerd Fonts is a project that patches developer targeted fonts with a high number of glyphs (icons). Specifically to add a high number of extra glyphs from popular 'iconic fonts' such asFont Awesome,Devicons,Octicons, andothers.
The following flow diagram shows the current glyph sets included:
Diagram created using@SankeyMATICmasterbranch file paths arenot considered stable.Verify your repository URI references- cloning this repository isnot recommended (due to Repo size) unless you are going to becontributing to development
- 1 - Release Archive Download
- 2 - Homebrew Fonts (macOS (OS X))
- 3 - Chocolatey or Scoop (Windows)
- 4 - Arch Linux Repository (Extra, AUR)
- 5 - PowerShell Installer (Multi-Platform)
- 6 - Ad Hoc Curl Download
- 7 - Install Script
- 8 - Use Fontfallback
- 9 - Clone Repo
- 10 - Patch Your Own Font
Additional Info
Nerd Fonts takes popular programming fonts and adds a bunch of Glyphs.There is also afont patcher available if your desired font isn't already patched.For more high level information see thewiki. If you are looking for the Vim plugin seeVimDevIcons ➶.
If you...
Option 1.want to download afont family package of variations (bold, italic, etc.) seedownload an archiveOption 2.are onmacOS and want to useHomebrew seeHomebrew FontsOption 3.are onWindows and want to useChocolatey orScoop seeUnofficial Chocolatey or Scoop RepositoriesOption 4.are onArch Linux and want to useExtra packages seeArch Extra RepositoriesOption 5.are usingPowerShell and want aninteractive setup oruse in scripts see thePowerShell InstallerOption 6.want to use thecurlcommand or use inscripts seeAd Hoc Curl DownloadOption 7.want toautomate installing or use inscripts see theInstall ScriptOption 8.want to install only one font for all fonts seeFont FallbackOption 9.wantcomplete control then seecloning the repoOption 10.want to patch your own font see theFont Patcher
- AFontForge Python script to patch any font
- Includes an option to createMonospaced (fixed-pitch, fixed-width)ordouble-width (non-monospaced) glyphs
- For more details see theFont Patcher section
67alreadypatched font families- Over
10,000glyphs/icons combined(more details)- Current glyph sets include:Powerline with Extra Symbols,Font Awesome,Material Design Icons,Weather,Devicons,Octicons,Font Logos (Formerly Font Linux),Pomicons,Codeicons
- Monospaced (fixed-pitch, fixed-width)ordouble-width (non-monospaced)orproportional glyphs version of each font
- This refers to the Nerd Font glyphs themselves not necessarily the Font as a whole
- A Developer/Contributor providedbash script to re-patch all the fonts
🔍 🔍 You can search for glyphs easily onNerdFonts.com via theCheat Sheet
SeeWiki: Glyph Sets and Codepoints for more details
A preview of all fonts can be foundhere.
*RFN = Reserved Font Name
- no flags given (defaults to onlySeti-UI + Custom andDevicons)
- double(variable/proportional) orsingle(fixed/monospaced) orproportional width icon-glyphs
- Font Awesome
- Font Awesome Extension
- Material Design Icons
- Weather
- GitHub Octicons
- Font Logos (Formerly Font Linux)
- Powerline Extra Symbols
- IEC Power Symbols
- Pomicons
- Codicons
Some of the options below just help you to download the font file(s) (i.e..ttf or.otf) or archives of font files.These must be installed on your system, depending on your OS. Usually (double) clicking the font files individually does the trick.Ask your OS' community if installing a font file is a problem.
Best option if you want anarchive or completefont family of variations (Bold, Italic, etc.).
Fonts are available for download as packages in thelatest releaseA nice overview ison the Nerd Font site (but misses the more compactxv archives).
If you want download the latest release of a given font inside a script you can use (replace "JetBrainsMono" with your font):
curl -OL https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz
Best option if onmacOS and want to useHomebrew.
All fonts are available viaHomebrew Cask on macOS (OS X)
brew install font-hack-nerd-font
On Linux you have to add--cask afterinstall.
Option forWindows and wanting to useChocolatey orScoop.
Chocolatey users can download fonts published to theChocolatey Community Repository (CCR):
choco install nerd-fonts-hack
Scoop users can download fonts using theScoop bucket for Nerd Fonts:
scoop bucket add nerd-fontsscoop install Hack-NF
Option forArch Linux and wanting to useExtra packages.
Most fonts are available viaArch Extra packages.Some special packages arein AUR.
Best option forinteractive setup guidance orautomating installations throughPowerShell scripts.
This is a 3rd-party community tool. More information can be found on its GitHub repositoryhere.
To install the module:
Install-PSResource-Name NerdFontsImport-Module-Name NerdFonts
To install one font:
Install-NerdFont-Name'FiraCode'# Tab completion works on name
This is a 3rd-party community tool. More information can be found on its GitHub repositoryhere.
- Requires PowerShell 7+ to be installed on Windows, macOS, or Linux.
- Windows PowerShell 5.1 is also supported.
To run the interactive installer, use the following command:
& ([scriptblock]::Create((iwr'https://to.loredo.me/Install-NerdFont.ps1')))
To install specific fonts directly, use the following command:
& ([scriptblock]::Create((iwr'https://to.loredo.me/Install-NerdFont.ps1')))-Name hack, heavy-data
Option if you want to use the
curlcommand or for use inscripts.
Note: Will not work to get newer fonts as they are not inside the repo anymore.
mkdir -p~/.local/share/fontscd~/.local/share/fonts&& curl -fLO https://github.com/ryanoasis/nerd-fonts/raw/HEAD/patched-fonts/DroidSansMono/DroidSansMNerdFont-Regular.otf
Note: deprecated alternative paths:~/.fonts
cd~/Library/Fonts&& curl -fLO https://github.com/ryanoasis/nerd-fonts/raw/HEAD/patched-fonts/DroidSansMono/DroidSansMNerdFont-Regular.otf
Best option if you want toautomate installing or for use inscripts.
Note:
- Requires (shallow) cloning the repo as of now :-(
- Will not work to get newer fonts as they are not inside the repo anymore.
- Installs all the patched Fonts (Warning: This is a lot of Fonts adding up to a large size)
./install.sh
or, in PowerShell (Windows only):
./install.ps1- Installs a single Font of your choice
./install.sh<FontName>./install.sh Hack./install.sh HeavyData
or, in PowerShell (Windows only):
./install.ps1<FontName>./install.ps1 Hack./install.ps1 HeavyData./install.ps1 FiraCode, Hack./install.ps1 DejaVuSansMono-WhatIf
Most systems have a mechanism to search for an alternative font when the current font does nothave a glyph that is needed. For example you edit a Latin text and insert a Chinese character,that glyph is taken not from your active font (it does not have it) but from some other font.
For this font fallback you can use one of theSymbolsOnly fonts.
For fontconfig based systems like Linux you can improve the behavior with the10-nerd-font-symbols.conf configuration file, that needs to be manually installed.
- Pro: One symbol font is sufficient for all text fonts
- Con: Scaling and placement of the fallback symbols can be hit or miss
Best option forfull control,all orsome of the fonts, orcontributing to development.
Note: Will not work to get newer fonts as they are not inside the repo anymore.
A full clone of this repository isnot required nor efficient (mostly due to Repository size) if you are simply only interested in a limited set of fonts.
If you do want to clone the entire repo be sure toshallow clone:
git clone --depth 1
Even if you develop you probably do not need the old versions of the font files. With this command you have all commits but not all the old data - it will be loaded only if you check out old binaries (or do a blame):
git clone --filter=blob:none git@github.com:ryanoasis/nerd-fonts
If you want to clone just a sub-directory, usegit sparse-checkout.
git clone --filter=blob:none --sparse git@github.com:ryanoasis/nerd-fontscd nerd-fontsgit sparse-checkout add patched-fonts/JetBrainsMonoThe option forpatching yourown font or fullycustomizing the patched font.
Use the provided Python command line script to generate a patched font from your own font to get the extra new glyphs
See:Font Patcher for usage
- use this option if you donot want to use one of thefonts provided
- you will still need to copy the generated font to the correct font directory on your system
Patching the font of your own choosing:
Use the script
- Download script and its helper files asarchive and extract
- Just downloading the
font-patcherscript is not enough. - Requires: Fontforge, Python 3,
python-fontforgeandargparsepackages- Fontforge can be installed as package
- or on OSX via
brew install fontforge - or asAppImage
- Usage, recommended:
fontforge -script font-patcher PATH_TO_FONT- Usage, direct (more convenient call, if it works for you):
./font-patcher PATH_TO_FONTUsage, with Fontforge AppImage
Note:
chmod u+xthe AppImage after download. All supplied paths need to beabsolute and an explicit output path is required! If everything is located in the same directory, you can use the$PWDshorthand.
./FontForge.AppImage -script $PWD/font-patcher $PWD/BaseFont.ttf -out /tmpUse docker
- Default parallel tasks
docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z nerdfonts/patcher [OPTIONS]- Single process (slow)
docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z -e "PN=1" nerdfonts/patcher [OPTIONS]- Specify the parallel tasks number to 10
docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z -e "PN=10" nerdfonts/patcher [OPTIONS]
Note
The resulting font's family (aka font name) will be set to the original family after CamelCasing, removing whitespace and appending Nerd Font. For example,iosevka term would becomeIosevkaTerm Nerd Font.
Full options follow, see alsopage explaining all options:
Nerd Fonts Patcher v3.4.0-5 (4.20.3) (ff 20230101)usage: font-patcher [--careful] [--debug [{0,1,2,3}]] [--extension EXTENSION] [--help] [--makegroups [{-1,0,1,2,3,4,5,6}]] [--mono] [--outputdir OUTPUTDIR] [--quiet] [--single-width-glyphs] [--variable-width-glyphs] [--version] [--complete] [--codicons] [--fontawesome] [--fontawesomeext] [--fontlogos] [--material] [--octicons] [--pomicons] [--powerline] [--powerlineextra] [--powersymbols] [--weather] [--adjust-line-height] [--boxdrawing] [--cell CELLOPT] [--configfile CONFIGFILE] [--custom CUSTOM] [--dry] [--glyphdir GLYPHDIR] [--has-no-italic] [--metrics {HHEA,TYPO,WIN}] [--name FORCE_NAME] [--postprocess POSTPROCESS] [--removeligs] [--xavgcharwidth [XAVGWIDTH]] [--progressbars | --no-progressbars] fontNerd Fonts Font Patcher: patches a given font with programming and development related glyphs* Website: https://www.nerdfonts.com* Version: 3.4.0-5* Development Website: https://github.com/ryanoasis/nerd-fonts* Changelog: https://github.com/ryanoasis/nerd-fonts/blob/-/changelog.mdpositional arguments: font The path to the font to patch (e.g., Inconsolata.otf)options: --careful Do not overwrite existing glyphs if detected --debug [{0,1,2,3}] Verbose mode (optional: 1=just to file; 2*=just to terminal; 3=display and file) --extension EXTENSION, -ext EXTENSION Change font file type to create (e.g., ttf, otf) --help, -h Show this help message and exit --makegroups [{-1,0,1,2,3,4,5,6}] Use alternative method to name patched fonts (default=1) --mono, -s Create monospaced font, existing and added glyphs are single-width (implies --single-width-glyphs) --outputdir OUTPUTDIR, -out OUTPUTDIR The directory to output the patched font file to --quiet, -q Do not generate verbose output --single-width-glyphs Whether to generate the glyphs as single-width not double-width (default is double-width) (Nerd Font Mono) --variable-width-glyphs Do not adjust advance width (no "overhang") (Nerd Font Propo) --version, -v Show program's version number and exitSymbol Fonts: --complete, -c Add all available Glyphs --codicons Add Codicons Glyphs (https://github.com/microsoft/vscode-codicons) --fontawesome Add Font Awesome Glyphs (http://fontawesome.io/) --fontawesomeext Add Font Awesome Extension Glyphs (https://andrelzgava.github.io/font-awesome-extension/) --fontlogos Add Font Logos Glyphs (https://github.com/Lukas-W/font-logos) --material, --mdi Add Material Design Icons (https://github.com/templarian/MaterialDesign) --octicons Add Octicons Glyphs (https://octicons.github.com) --pomicons Add Pomicon Glyphs (https://github.com/gabrielelana/pomicons) --powerline Add Powerline Glyphs --powerlineextra Add Powerline Extra Glyphs (https://github.com/ryanoasis/powerline-extra-symbols) --powersymbols Add IEC Power Symbols (https://unicodepowersymbol.com/) --weather Add Weather Icons (https://github.com/erikflowers/weather-icons)Expert Options: --adjust-line-height, -l Whether to adjust line heights (attempt to center powerline separators more evenly) --boxdrawing Force patching in (over existing) box drawing glyphs --cell CELLOPT Adjust or query the cell size, e.g. use "0:1000:-200:800" or "?" --configfile CONFIGFILE Specify a file path for configuration file (see sample: src/config.sample.cfg) --custom CUSTOM Specify a custom symbol font, all glyphs will be copied; absolute path suggested --dry Do neither patch nor store the font, to check naming --glyphdir GLYPHDIR Path to glyphs to be used for patching --has-no-italic Font family does not have Italic (but Oblique), to help create correct RIBBI set --metrics {HHEA,TYPO,WIN} Select vertical metrics source (for problematic cases) --name FORCE_NAME Specify naming source ('full', 'postscript', 'filename', or concrete free name-string) --postprocess POSTPROCESS Specify a Script for Post Processing --removeligs, --removeligatures Removes ligatures specified in configuration file (needs --configfile) --xavgcharwidth [XAVGWIDTH] Adjust xAvgCharWidth (optional: concrete value) --progressbars Show percentage completion progress bars per Glyph Set (default) --no-progressbars Don't show percentage completion progress bars per Glyph Set./font-patcher Droid\ Sans\ Mono\ for\ Powerline.otf./font-patcher Droid\ Sans\ Mono\ for\ Powerline.otf -s -q./font-patcher Droid\ Sans\ Mono\ for\ Powerline.otf --mono --quiet./font-patcher Inconsolata.otf --fontawesome./font-patcher Inconsolata.otf --fontawesome --octicons --pomicons./font-patcher Inconsolata.otf./FontForge.AppImage -script /tmp/nerdfonts/font-patcher /tmp/nerdfonts/CascadiaMonoPL-Semibold.ttf --fontawesome -out /tmp./FontForge.AppImage -script $PWD/font-patcher $PWD/CascadiaMonoPL-Semibold.ttf --octicons -out $HOMEdocker run --rm -v ~/myfont/patchme:/in:Z -v ~/myfont/patched:/out:Z nerdfonts/patcherdocker run --rm -v ~/Desktop/myfont/patchme:/in:Z -v ~/Desktop/myfont/patched:/out:Z nerdfonts/patcher --fontawesomeUsually you want the--complete option.
for Contributor or Developer use
re-patchesall fonts in the unpatched directory:
./gotta-patch-em-all-font-patcher\!.shcan optionally limit to specific font name pattern:
./gotta-patch-em-all-font-patcher\!.sh Hermitor to specific directory name start:
./gotta-patch-em-all-font-patcher\!.sh /Heavy
Full options:
Usage: ./gotta-patch-em-all-font-patcher!.sh [OPTION] [FILTER] OPTION: -c, --checkfont Create the font(s) in check-fonts/ instead -t, --keeptime Try to preserve timestamp of previously patched font in patched-fonts/ directory -v, --verbose Show more information when running -i, --info Rebuild JUST the readmes -j, --jobs Run up to 8 patch processes in parallel -h, --help Show this help FILTER: The filter argument to this script is a filter for the fonts to patch. The filter is a regex (glob * is expressed as [^/]*, see `man 7 glob`) All font files that start with that filter (and are ttf, otf, or sfd files) will be processed only. Example ./gotta-patch-em-all-font-patcher\!.sh "iosevka" Process all font files that start with "iosevka" If the argument starts with a '/' all font files in a directory that matches the filter are processed only. Example ./gotta-patch-em-all-font-patcher\!.sh "/iosevka" Process all font files that are in directory "iosevka"Some solutions can be found on the Wiki, if you are lucky. For example hints to use the pagerless are there:
- https://github.com/ryanoasis/nerd-fonts/wiki/FAQ-and-Troubleshooting
- https://github.com/ryanoasis/nerd-fonts/wiki/Terminal-Emulators
- https://github.com/ryanoasis/nerd-fonts/wiki/Reporting-Issues
Reference therelease tag or branch andnot themaster branch because paths are subject to change for each release
- For example:
- ✅ Use:
https://github.com/ryanoasis/nerd-fonts/tree/v3.0.0/patched-fonts/Hermit/Regular/HurmitNerdFont-Regular.otf - ✅ Use:
https://github.com/ryanoasis/nerd-fonts/blob/0.9.0/patched-fonts/Hermit/Medium/complete/Hurmit%20Medium%20Nerd%20Font%20Complete.otf - ❌ Instead of:
https://github.com/ryanoasis/nerd-fonts/blob/master/patched-fonts/Hermit/Medium/complete/Hurmit%20Medium%20Nerd%20Font%20Complete.otf
- ✅ Use:
Non exhaustive list of fonts that would benefit from being patched but are not included in Nerd Fonts due to their license (proprietary, commercial, etc.):
Seechangelog.md
SeeLICENSE
About
Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts: Hack, Source Code Pro, more. Glyph collections: Font Awesome, Material Design Icons, Octicons, & more
Topics
Resources
License
Unknown, Unknown licenses found
Licenses found
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
