Open-source project
ryanoasis/nerd-fonts avatar
ryanoasis/nerd-fonts

Nerd Fonts: Patching Programming Fonts with 10,000 Glyphs

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

64,627 stars3,954 forksCSSNOASSERTION

At a glance

What is it?
Nerd Fonts bundles icon glyph sets into 67 already-patched font families and ships a FontForge Python script for the fonts it has not covered. It is the right tool when your terminal prompt needs Powerline separators or your editor needs an Octicon, and the wrong one when you just want a font.
Who is it for?
Adopt Nerd Fonts if your tooling renders Powerline, Devicons, Octicons or Font Awesome glyphs inside a terminal or editor and you want a pre-patched family rather than a font build pipeline. Do not adopt it if you need a single-weight font for a web page, if your target font is not in the 67-family list and you have no FontForge toolchain, or if you expect stable file paths on master.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 10 days ago.
What is it written in?
Mainly CSS, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap Nerd Fonts fills between a text font and a status line

A programming font draws letters, digits and punctuation. A Powerline-style prompt, a file-tree plugin, or a git status segment wants symbols that no text font was designed to carry: branch markers, folder icons, language logos, weather glyphs. Without those glyphs the terminal falls back to whatever font the system picks next, and the line breaks alignment. Nerd Fonts exists to close that gap by taking a font people already like and adding the glyphs to it, rather than asking anyone to change typeface. The README frames the project as patching "developer targeted fonts with a high number of glyphs (icons)", drawing from Font Awesome, Devicons, Octicons and others. The audience is narrow and specific: people who live in a terminal or an editor and whose configuration already assumes icon codepoints are present. If your setup never renders a private-use-area codepoint, this project adds nothing you will see.

Two delivery mechanisms: pre-patched families and a FontForge patcher

The repository ships two things that are easy to conflate. The first is a set of already-patched font families, listed in the README with a table mapping each Nerd Font name to its original font and repository, plus a version column and an RFN column. The README states 67 patched font families. The second is the Font Patcher, described as a FontForge Python script that can patch any font, with an option to produce monospaced (fixed-pitch, fixed-width) or double-width (non-monospaced) glyphs. The glyphs themselves come from named sets: Powerline with Extra Symbols, Font Awesome, Material Design Icons, Weather, Devicons, Octicons, Font Logos (formerly Font Linux), Pomicons and Codeicons. The README puts the combined total at over 10,000 glyphs. A separate bash script, referred to as "Gotta Patch 'em All", re-patches the whole set, which is how the maintainers keep 67 families in step with the glyph sources rather than hand-editing each one.

Nine documented install paths and what each one actually does

The README enumerates nine options, and the differences matter more than the count. Option 1 is a release archive download for a whole font family with its variations. Option 2 is Homebrew Fonts on macOS or Linux. Option 3 is an install script, positioned for automation and use inside scripts. Option 4 covers Chocolatey or Scoop on Windows, and the README labels those repositories unofficial, which is a distinction worth noticing. Option 5 is the Arch Extra repository and AUR. Option 6 is a PowerShell installer that the README describes as usable interactively or in scripts. Option 7 is font fallback, for installing one font that covers everything. Option 8 is cloning the repository, which the README explicitly discourages unless you intend to contribute, citing repository size. Option 9 is patching your own font. The project also warns that master branch file paths are not stable and links to a section on unstable file paths, so any script that hardcodes a raw path into the repository is building on sand.

Where Nerd Fonts is the wrong tool

Three cases stand out. The first is web typography: shipping a patched family to a browser means shipping thousands of glyphs the page will never draw, and nothing in the README suggests the project is aimed at that use. The second is the font that is not in the list. The README's table of 67 families is the supported set; anything outside it means running the Font Patcher yourself, which pulls in FontForge as a dependency and turns a font install into a font build. The third is path stability. The README states plainly that master branch file paths are not considered stable and directs readers to verify repository URI references. Anyone who pins a download URL to a branch path should expect it to move. There is also a licensing question the repository does not settle for you: the GitHub metadata reports the license as NOASSERTION, and patched fonts are derivative works of the upstream fonts named in the table, so the terms you inherit depend on the original font, not only on this project.

How Nerd Fonts differs from installing the icon font directly

The obvious alternative is to install the icon sets as separate fonts and configure your terminal or editor with a fallback chain, which is essentially what Option 7 gestures at from the other direction. The approaches differ in where the complexity lives. A fallback chain keeps each icon font updatable on its own schedule and keeps your text font untouched, but it depends on the renderer's fallback behaviour being predictable, and metrics mismatches between the text font and the icon font can shift baselines. Patching merges the glyphs into the font file, so the renderer has one font to resolve and the metrics are decided at patch time. That is the trade: you give up independent updates of the glyph sources and you take on a larger font file, in exchange for removing fallback from the equation. If you only ever need a handful of icons, the fallback route is less machinery. If your prompt is dense with symbols, the patched file is the more predictable one.

Variant choice, monospaced versus double-width, is decided at patch time

The README is careful about one point that is easy to skim past: the monospaced, double-width and proportional options refer to the Nerd Font glyphs themselves, not necessarily to the font as a whole. That distinction has consequences. A double-width icon in a terminal that assumes single-cell glyphs will push the rest of the line, and a monospaced icon squeezed into a cell designed for a wider shape can look cramped. The choice is made when the font is patched, so it is baked into the artifact you download. Switching later means downloading a different variant or re-running the patcher, not flipping a setting. Before committing to a family, check which variant the package you are pulling actually contains, because the same family name can appear in more than one form.

Maintenance cost and what the release cadence tells you

The recent release history shows v3.5.1 in August 2026, v3.5.0 earlier the same month, and v3.4.0 in April 2025. That is a long gap followed by a pair of close releases, which is a normal shape for a project whose upstream inputs (the icon sets and the 67 source fonts) move on their own schedules. For a user, the practical cost is low: fonts are static artifacts, and a pinned release archive keeps working regardless of what happens upstream. The cost lands on contributors and on anyone depending on repository paths, since the README warns those are unstable and the glyph sources can shift codepoints between releases. If you maintain a dotfiles repository that downloads a specific Nerd Font, pin to a release artifact rather than a branch path, and re-check the glyph set documentation under src/glyphs/README.md when you bump the version, because a codepoint that moved will show up as a wrong icon rather than an error.

Editorial conclusion

Adopt Nerd Fonts if your tooling renders Powerline, Devicons, Octicons or Font Awesome glyphs inside a terminal or editor and you want a pre-patched family rather than a font build pipeline. Do not adopt it if you need a single-weight font for a web page, if your target font is not in the 67-family list and you have no FontForge toolchain, or if you expect stable file paths on master. Verify first that the specific family and variant you need exists in the release archive, then confirm which glyph variant (monospaced, double-width, or proportional) the package ships, because that choice is baked into the patched file and is not switchable at install time.

Official sources

  1. Issues
  2. Project website
  3. README
  4. Releases
  5. ryanoasis/nerd-fonts on GitHub
Community notes

Community notes