1
0
mirror of https://github.com/ryanoasis/nerd-fonts.git synced 2024-11-19 16:39:20 +02:00
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 https://nerdfonts.com/
Go to file
Fini Jastrow 3053972f86 font-patcher: Abort if fontforge did not generate patched font
[why]
Under certain circumjstances Fontforge can not create a font. As the API
does not give any feedback we trudge along afterwards giving confusing
messages.

One example is when the patched font contains too many glyphs.

[how]
Check if the patched font has indeed been generated and is not empty.

Fixes: #1342

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-09-23 11:25:11 +02:00
.devcontainer Fix vs code dev container 2021-12-04 14:53:59 +13:00
.github standardize-and-complete-readmes: Allow to link releases 2023-07-26 15:02:27 +02:00
bin/scripts standardize-and-complete-readmes: Fix broken links 2023-07-26 15:55:15 +02:00
chocolatey Remove mentions of master branch [skip ci] 2022-10-17 11:50:53 +02:00
css [ci] Regenerate CSS files 2023-06-04 20:45:34 +00:00
images Update Sankey diagram 2023-05-01 15:02:53 +02:00
patched-fonts standardize-and-complete-readmes: Fix broken links 2023-07-26 15:55:15 +02:00
src standardize-and-complete-readmes: Allow to link releases 2023-07-26 15:02:27 +02:00
.all-contributorsrc docs: update .all-contributorsrc 2023-09-18 10:10:16 +02:00
.codeclimate.yml Add codeclimate config 2022-08-22 10:53:05 +02:00
.dockerignore CI: Fix docker release trigger 2022-08-26 11:30:27 +02:00
.gitignore IntelOne: Prevent in-repo-release 2023-07-26 15:02:27 +02:00
10-nerd-font-symbols.conf Switch from ComicMono to ComicShannsMono 2023-04-30 15:41:59 +02:00
backers.md Update backers.md [skip ci] 2023-06-22 08:47:17 -07:00
changelog.md doc: Fix changelog missing item 2023-06-05 12:47:55 +02:00
code_of_conduct.md fixed links 2017-07-28 16:29:44 -04:00
contributing.md Fix typo: exeucte -> execute 2023-06-01 06:51:57 +02:00
CONTRIBUTORS.md docs: update CONTRIBUTORS.md 2023-09-18 10:10:16 +02:00
Dockerfile docker: Fix fontforge problem 2023-01-10 12:33:51 +01:00
font-patcher font-patcher: Abort if fontforge did not generate patched font 2023-09-23 11:25:11 +02:00
FontPatcher.zip [ci] Update FontPatcher.zip 2023-09-18 09:16:09 +00:00
glyphnames.json [ci] Regenerate CSS files 2023-06-04 20:45:34 +00:00
install.ps1 Revert "Feature: Add -WindowsCompatibleOnly switch parameter to install.ps1" 2023-04-28 18:55:37 +02:00
install.sh install.sh: Fix various ShellCheck issues 2023-06-02 16:58:04 +02:00
LICENSE Remove mentions of master branch [skip ci] 2022-10-17 11:50:53 +02:00
license-audit.md Fix Pomicons license 2023-03-10 11:52:58 +01:00
package.json Trigger Release 3.0.2 2023-06-04 18:24:10 +02:00
readme_cn.md Update changelog to v3.0.2 (and readme) 2023-06-05 12:02:16 +02:00
readme_es.md add :Z to other readmes 2023-09-18 10:09:19 +02:00
readme_fr.md Update changelog to v3.0.2 (and readme) 2023-06-05 12:02:16 +02:00
readme_hi.md add :Z to other readmes 2023-09-18 10:09:19 +02:00
readme_it.md Update changelog to v3.0.2 (and readme) 2023-06-05 12:02:16 +02:00
readme_ja.md Update changelog to v3.0.2 (and readme) 2023-06-05 12:02:16 +02:00
readme_ko.md Update changelog to v3.0.2 (and readme) 2023-06-05 12:02:16 +02:00
readme_pl.md Update changelog to v3.0.2 (and readme) 2023-06-05 12:02:16 +02:00
readme_pt-pt.md Update changelog to v3.0.2 (and readme) 2023-06-05 12:02:16 +02:00
readme_ru.md add :Z to other readmes 2023-09-18 10:09:19 +02:00
readme_tw.md add :Z to other readmes 2023-09-18 10:09:19 +02:00
readme_uk.md Update changelog to v3.0.2 (and readme) 2023-06-05 12:02:16 +02:00
readme.md add :Z to other readmes 2023-09-18 10:09:19 +02:00

Nerd Fonts Logo

Iconic font aggregator, collection, and patcher

Releases   |   Fonts   |   Font Patcher   |   Wiki Documentation   |   Stickers   |   VimDevIcons

GitHub release Gitter Code of Conduct PRs Welcome Nerd Fonts - OS Support

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 as Font Awesome, Devicons, Octicons, and others.

The following Sankey flow diagram shows the current glyph sets included:

@SankeyMATIC Diagram

Diagram created using @SankeyMATIC

Important Notices

Table of Contents

TL;DR

Installation Options

Features

Developer / Contributor

Project Motivation

Additional Info

TL;DR

Nerd Fonts takes popular programming fonts and adds a bunch of Glyphs. There is also a font patcher available if your desired font isn't already patched. For more high level information see the wiki. If you are looking for the Vim plugin see VimDevIcons ➶.

Various Download Options for Fonts

If you...

Features

Glyph Sets

🔍 🔍 You can now search for glyphs easily on NerdFonts.com via the Cheat Sheet

See Wiki: Glyph Sets and Codepoints for more details

Icon names in shell

See Wiki: Icon names in shell

Patched Fonts

Font Name Font Name and Repository ver *RFN Status
3270 Nerd Font 3270 3.0.1 NO w m2 l
Agave Agave 37 NO w m2 l
Anonymice Nerd Font Anonymous Pro 1.002 YES w m2 l
Arimo Arimo 1.33 NO w m2 l
Aurulent Sans Mono Nerd Font Stephen G. Hartke NO w m2 l
BigBlueTerminal VileR NO w m2 l
Bitstrom Wera Nerd Font Bitstream Inc 1.1 YES w m2 l
Blex Mono IBM Plex Mono 2.3 YES w m2 l
Caskaydia Cove Nerd Font Cascadia Code 2111.01 YES w m2 l
Code New Roman Nerd Font Sam Radian 2.0 NO w m2 l
Comic Shanns Mono Nerd Font Comic Shanns Mono 1.3 NO w m2 l
Cousine Nerd Font Cousine 1.211 NO w m2 l
DaddyTimeMono DaddyTimeMono 1.2.3 NO w m2 l
DejaVu Sans Mono Nerd Font DejaVu 2.37 NO w m2 l
Droid Sans Mono Nerd Font Ascender Corp 1.00-113 NO w m2 l
Envy Code R Nerd Font Envy Code R 0.79 YES w m2 l
Fantasque Sans Nerd Font Fantasque Sans 1.8.0 NO w m2 l
Fira Code Nerd Font Fira Code 6.2 NO w m2 l
Fira Mono Nerd Font Fira 3.206 NO w m2 l
Go Mono Nerd Font Go-Mono 2.010 NO w m2 l
Gohu Nerd Font Gohu TTF,Gohu 2.0 NO w m2 l
Hack Nerd Font Hack 3.003 NO w m2 l
Hasklug Nerd Font Hasklig 1.2 YES w m2 l
Heavy Data Mono Nerd Font Vic Fieger 1 NO w m2 l
Hurmit Nerd Font Hermit 2.0 YES w m2 l
iM-Writing iA-Writer Dec 2018 YES w m2 l
Inconsolata Nerd Font Inconsolata 3.000 NO w m2 l
Inconsolata Go Nerd Font InconsolataGo 1.013 NO w m2 l
Inconsolata LGC Nerd Font Inconsolata LGC 1.3 NO w m2 l
Intone Mono Nerd Font Intel One Mono 1.2.1 YES w m2 l
Iosevka Nerd Font Iosevka 22.1.0 NO w m2 l
Iosevka Term Nerd Font Iosevka Term 22.1.0 NO w m2 l
JetBrains Mono JetBrains Mono 2.304 NO w m2 l
Lekton Nerd Font Lekton 34 NO w m2 l
Literation Mono Nerd Font Liberation 2.1.5 YES w m2 l
Lilex Nerd Font Lilex 2.000 NO w2 m2 l
Meslo Nerd Font Meslo 1.21 NO w m2 l
Monofur Nerd Font Tobias B Koehler 1.0 NO w m2 l
Monoid Nerd Font Monoid 0.61 NO w m2 l
Mononoki Nerd Font Mononoki 1.6 YES w m2 l
M+ (MPlus) Nerd Font M+ Fonts 2023/03 NO w m2 l
Noto Noto div NO w m2 l
OpenDyslexic OpenDyslexic 2.001 NO w m2 l
Overpass Overpass 3.0.5 NO w m2 l
ProFont (Windows tweaked) Nerd Font ProFont 2.3 NO w m2 l
ProFont (x11) Nerd Font ProFont 2.2 NO w m2 l
ProggyClean Nerd Font Tristan Grimmer 2004/04/15 NO Imperfect
Roboto Mono Roboto Mono 3.0 NO w m2 l
Sauce Code Nerd Font Source 2.038 YES w m2 l
Shure Tech Mono Nerd Font Share Tech Mono 1.003 YES w m2 l
Space Mono Nerd Font Space Mono 1.001 NO w m2 l
Terminess Nerd Font Terminus TTF 4.49.2 YES w m2 l
Tinos Tinos 1.23 NO w m2 l
Ubuntu Nerd Font Ubuntu Font 0.83 NO w m2 l
Ubuntu Mono Nerd Font Ubuntu Font 0.80 NO w m2 l
Victor Mono Victor Mono 1.5.4 NO w m2 l

*RFN = Reserved Font Name

Variations

Font Installation

Option 1: Download and Install Manually

Best option for quickly getting a specific individual font.

Download the specific patched font of your choice

Option 2: Release Archive Download

Best option if you want an archive or complete font family of variations (Bold, Italic, etc.).

Fonts are available for download as packages in the latest release

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

Option 3: Install Script

Best option if you want to automate installing or for use in scripts.

Note: Requires cloning the repo as of now

All fonts:

  • 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

Single font:

  • 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

Option 4: Homebrew Fonts

Best option if on macOS and want to use Homebrew.

All fonts are available via Homebrew Cask Fonts on macOS (OS X)

brew tap homebrew/cask-fonts
brew install font-hack-nerd-font

Option 5: Clone the Repo

Best option for full control, all or some of the fonts, or contributing to development.

A full clone of this repository is not 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 to shallow clone:

git clone --depth 1

If you want to clone a sub-directory, use git sparse-checkout. The following example requires Git v2.26:

git clone --filter=blob:none --sparse git@github.com:ryanoasis/nerd-fonts
cd nerd-fonts
git sparse-checkout add patched-fonts/JetBrainsMono

Option 6: Ad Hoc Curl Download

Option if you want to use the curl command or for use in scripts.

Linux

mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts && curl -fLO https://github.com/ryanoasis/nerd-fonts/raw/HEAD/patched-fonts/DroidSansMono/DroidSansMNerdFont-Regular.otf

Note: deprecated alternative paths: ~/.fonts

macOS (OS X)

cd ~/Library/Fonts && curl -fLO https://github.com/ryanoasis/nerd-fonts/raw/HEAD/patched-fonts/DroidSansMono/DroidSansMNerdFont-Regular.otf

Option 7: Unofficial Chocolatey or Scoop Repositories

Option for Windows and wanting to use Chocolatey or Scoop.

Chocolatey users can download fonts published to the Chocolatey Community Repository (CCR):

choco install nerd-fonts-hack

Scoop users can download fonts using the Scoop bucket for Nerd Fonts:

scoop bucket add nerd-fonts
scoop install Hack-NF

Option 8: Arch Community Repository

Option for Arch Linux and wanting to use Community packages.

Most fonts are available via Arch Community packages. Some special packages are in AUR.

Option 9: Patch Your Own Font

The option for patching your own font or fully customizing 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 do not want to use one of the fonts provided
  • you will still need to copy the generated font to the correct font directory on your system

Nerd Fonts Patcher

Patching the font of your own choosing:

  • Use the script

    • Download script and its helper files as archive and extract
    • Just downloading the font-patcher script is not enough.
    • Requires: Fontforge, Python 3, python-fontforge and argparse packages
      • Fontforge can be installed as package
      • or on OSX via brew install fontforge
      • or as AppImage
    • Usage, recommended:
    fontforge -script font-patcher PATH_TO_FONT
    
    • Usage, direct (more convenient call, if it works for you):
    ./font-patcher PATH_TO_FONT
    
    • Usage, with Fontforge AppImage

      Note: chmod u+x the AppImage after download. All supplied paths need to be absolute and an explicit output path is required! If everything is located in the same directory, you can use the $PWD shorthand.

    ./FontForge.AppImage -script $PWD/font-patcher $PWD/BaseFont.ttf -out /tmp
    
  • Use docker

    docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z nerdfonts/patcher [OPTIONS]
    

Full options:

Nerd Fonts Patcher v3.0.2 (4.4.0) (ff 20230101)
usage: font-patcher [-h] [-v] [-s] [-l] [-q] [-c] [--careful] [--removeligs] [--postprocess [POSTPROCESS]] [--configfile [CONFIGFILE]] [--custom [CUSTOM]]
                    [-ext [EXTENSION]] [-out [OUTPUTDIR]] [--glyphdir [GLYPHDIR]] [--makegroups [{-1,0,1,2,3,4,5,6}]] [--variable-width-glyphs]
                    [--has-no-italic] [--progressbars | --no-progressbars] [--debug [{0,1,2,3}]] [--dry] [--xavgcharwidth [XAVGWIDTH]] [--fontawesome]
                    [--fontawesomeextension] [--fontlogos] [--octicons] [--codicons] [--powersymbols] [--pomicons] [--powerline] [--powerlineextra]
                    [--material] [--weather]
                    font

Nerd Fonts Font Patcher: patches a given font with programming and development related glyphs

* Website: https://www.nerdfonts.com
* Version: 3.0.2
* Development Website: https://github.com/ryanoasis/nerd-fonts
* Changelog: https://github.com/ryanoasis/nerd-fonts/blob/-/changelog.md

positional arguments:
  font                  The path to the font to patch (e.g., Inconsolata.otf)

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -s, --mono, --use-single-width-glyphs
                        Whether to generate the glyphs as single-width not double-width (default is double-width)
  -l, --adjust-line-height
                        Whether to adjust line heights (attempt to center powerline separators more evenly)
  -q, --quiet, --shutup
                        Do not generate verbose output
  -c, --complete        Add all available Glyphs
  --careful             Do not overwrite existing glyphs if detected
  --removeligs, --removeligatures
                        Removes ligatures specificed in JSON configuration file
  --postprocess [POSTPROCESS]
                        Specify a Script for Post Processing
  --configfile [CONFIGFILE]
                        Specify a file path for JSON configuration file (see sample: src/config.sample.json)
  --custom [CUSTOM]     Specify a custom symbol font, all glyphs will be copied; absolute path suggested
  -ext [EXTENSION], --extension [EXTENSION]
                        Change font file type to create (e.g., ttf, otf)
  -out [OUTPUTDIR], --outputdir [OUTPUTDIR]
                        The directory to output the patched font file to
  --glyphdir [GLYPHDIR]
                        Path to glyphs to be used for patching
  --makegroups [{-1,0,1,2,3,4,5,6}]
                        Use alternative method to name patched fonts (recommended)
  --variable-width-glyphs
                        Do not adjust advance width (no "overhang")
  --has-no-italic       Font family does not have Italic (but Oblique)
  --progressbars        Show percentage completion progress bars per Glyph Set (default)
  --no-progressbars     Don't show percentage completion progress bars per Glyph Set
  --debug [{0,1,2,3}]   Verbose mode (optional: 1=just to file; 2*=just to terminal; 3=display and file)
  --dry                 Do neither patch nor store the font, to check naming
  --xavgcharwidth [XAVGWIDTH]
                        Adjust xAvgCharWidth (optional: concrete value)

Symbol Fonts:
  --fontawesome         Add Font Awesome Glyphs (http://fontawesome.io/)
  --fontawesomeextension
                        Add Font Awesome Extension Glyphs (https://andrelzgava.github.io/font-awesome-extension/)
  --fontlogos, --fontlinux
                        Add Font Logos Glyphs (https://github.com/Lukas-W/font-logos)
  --octicons            Add Octicons Glyphs (https://octicons.github.com)
  --codicons            Add Codicons Glyphs (https://github.com/microsoft/vscode-codicons)
  --powersymbols        Add IEC Power Symbols (https://unicodepowersymbol.com/)
  --pomicons            Add Pomicon Glyphs (https://github.com/gabrielelana/pomicons)
  --powerline           Add Powerline Glyphs
  --powerlineextra      Add Powerline Glyphs (https://github.com/ryanoasis/powerline-extra-symbols)
  --material, --materialdesignicons, --mdi
                        Add Material Design Icons (https://github.com/templarian/MaterialDesign)
  --weather, --weathericons
                        Add Weather Icons (https://github.com/erikflowers/weather-icons)

Examples

./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 --use-single-width-glyphs --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 $HOME

docker run --rm -v ~/myfont/patchme:/in:Z -v ~/myfont/patched:/out:Z nerdfonts/patcher
docker run --rm -v ~/Desktop/myfont/patchme:/in:Z -v ~/Desktop/myfont/patched:/out:Z nerdfonts/patcher --fontawesome

Usually you want the --complete option.

Gotta Patch 'em All Font Patcher!

  • for Contributor or Developer use

  • re-patches all fonts in the unpatched directory:

    ./gotta-patch-em-all-font-patcher\!.sh
    
  • can optionally limit to specific font name pattern:

    ./gotta-patch-em-all-font-patcher\!.sh Hermit
    
  • or 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"

Contributing

See contributing.md

Unstable File Paths

⚠️ Warning: File paths may change based on releases (especially major version bumps)

Reference the release branch and not the master branch because paths are subject to change for each release

  • For example:
    • 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

Other Good Fonts to Patch

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.):

Project Motivation

See Wiki: Project Purpose

Changelog

See changelog.md

License

See LICENSE