Nerd Fonts
Nerd Fonts patches developer fonts with 10,995 icons from Devicons, Font Awesome, Font Awesome Extension, Material Design Icons, Weather, Octicons, Codicons, Font Logos, Pomicons, Powerline and Powerline Extra, IEC Power Symbols, and Seti-UI + Custom. It ships 72 patched font families, a Symbols Only font, and a patcher for any other font. Upstream: ryanoasis/nerd-fonts (MIT for the patcher and the aggregation; every font keeps its own license). This skill snapshots release v3.5.1 (2026-08-21) as data/glyphs.tsv.
How to use
/nerd-fonts: apply the icon policy below to every icon and font decision in this conversation.
/nerd-fonts <file>: review a script, TUI source, prompt config, editor config, terminal config, HTML or CSS file against the policy. For each finding output:
- violation (quote the exact line)
- why it matters (one sentence)
- fix (the exact glyph with its
nf-<set>-<name> and U+XXXX, or the exact config line)
Review checklist for /nerd-fonts <file> (perl ships with macOS and Linux):
- Emoji or dingbats used as icons:
perl -CSD -ne 'print "$.: $_" if /[\x{2600}-\x{27BF}\x{1F000}-\x{1FAFF}]/' FILE. Fix: the glyph from data/glyphs.tsv.
- Legacy Material classes:
grep -n 'nf-mdi-' FILE. Fix: the nf-md- name found by bare-name search.
- Glyphs without their name and codepoint:
perl -CSD -ne 'print "$.: $_" if /[\x{E000}-\x{F8FF}\x{F0000}-\x{FFFFD}]/ && !/nf-[a-z]+-[a-z0-9_]+/' FILE. Fix: add nf-<set>-<name> U+XXXX next to the glyph and confirm the codepoint.
- Unpatched family in a font setting:
grep -n -i -E 'cascadia code|source code pro|ibm plex mono|hasklig|hermit|anonymous pro|monaspace|terminus|liberation mono|share tech mono|intel one mono|atkinson|d2coding|ia writer|bitstream vera' FILE. Fix: the patched family from references/fonts.md.
- Web page with glyphs and no font: after a glyph hit in HTML or CSS,
grep -L -E 'webfont\.css|@font-face' FILE prints the file when it loads no icon font. Fix: load webfont.css or self-host Symbols Only.
- Text markers standing in for icons (
E:, W:, [x], -> in status lines): no regex catches them reliably; read the file. Fix: the matching glyph, one set per surface.
Icon policy
Choosing icons
- MUST use a Nerd Fonts glyph for every icon in CLI output, TUIs, prompts, statuslines, editor and terminal configs, docs, and web UI
- NEVER use emoji, ASCII art, or Unicode dingbats as an icon when a Nerd Fonts glyph exists
- MUST take the name from the cheat sheet,
data/glyphs.tsv, or upstream glyphnames.json
- NEVER state a codepoint or class name from memory
- MUST write the glyph next to its name and codepoint in a comment or adjacent note, for example
icon = "" # nf-oct-mark_github U+F408
- SHOULD keep one icon set per surface; NEVER mix two sets for the same concept in one UI
- SHOULD pick the set by purpose:
nf-md- for breadth, nf-cod- for editor UI, nf-oct- for git and GitHub, nf-dev- and nf-seti- for languages and file types, nf-pl- and nf-ple- for prompt separators, nf-linux- for OS logos, nf-weather- for weather
Font requirement
- MUST say that a Nerd Font must be active on the rendering surface and link https://www.nerdfonts.com/font-downloads
- MUST use the patched family name exactly as installed; Reserved Font Name renames apply: Cascadia Code is
CaskaydiaCove Nerd Font, Source Code Pro is SauceCodePro Nerd Font, IBM Plex Mono is BlexMono Nerd Font (full list in references/fonts.md)
- SHOULD offer
Symbols Nerd Font (Symbols Only) when the user keeps a different text font
Terminal and CLI
- MUST use the Mono variant, or account for 1.5-cell icons, wherever columns must align
- SHOULD add a plain-text fallback switch (
--no-icons or NO_ICONS=1) to CLIs that may run without a Nerd Font
- MUST print the chosen glyphs with
printf and check alignment before claiming they render
- SHOULD use a patched font, not the Symbols Only fallback, where icons must sit exactly on the text line: upstream documents fallback placement as hit or miss; kitty corrects it with
modify_font baseline, WezTerm with a fallback scale
Web
- MUST load the Nerd Fonts webfont (
<link rel="stylesheet" href="https://www.nerdfonts.com/assets/css/webfont.css"> then <i class="nf nf-fa-heart"></i>) or self-host SymbolsNerdFont-Regular.ttf from NerdFontsSymbolsOnly.zip with an @font-face and a .nf class
- SHOULD self-host in production instead of hot-linking nerdfonts.com
- MUST add
aria-hidden="true" on decorative icon elements and an accessible name on icon-only controls
- NEVER ship a Private Use Area character on a page without a font that covers it
- MUST keep
line-height: 1 on icon elements (the upstream .nf class sets it) and align them to the text with vertical-align (start at -0.125em and tune per text font) or display: inline-flex; align-items: center in components
- MUST check a line that mixes text and icons in the browser before shipping; an icon font sits on a different baseline than the text font
Verification
- MUST verify every glyph name in
data/glyphs.tsv or on the cheat sheet before use
- NEVER claim an icon renders without evidence:
printf output, a screenshot, or the user confirming
Two pages to use
The cheat sheet reads upstream glyphnames.json; data/glyphs.tsv is the same data bundled here. Each cheat sheet result has copy buttons for Icon, Class, and Code.
Which set for what
| Need |
Set |
Example |
Glyphs |
| File types and folders |
seti, custom, md |
nf-seti-json |
167 + 45 |
| Git and GitHub |
oct |
nf-oct-git_branch |
310 |
| Editor UI, LSP kinds, debug |
cod |
nf-cod-symbol_method |
540 |
| General UI and status |
md, fa |
nf-md-alert_circle, nf-fa-check |
6,896 and 1,818 |
| Languages, frameworks, tools |
dev |
nf-dev-rust |
613 |
| Prompt separators |
pl, ple |
nf-pl-left_hard_divider |
9 + 34 |
| OS and distro logos |
linux |
nf-linux-archlinux |
134 |
| Weather |
weather |
nf-weather-day_sunny |
228 |
| Power states |
iec |
nf-iec-power |
5 |
| Pomodoro timers |
pom |
nf-pom-pomodoro_ticking |
11 |
Counts and codepoint ranges: references/glyph-sets.md. The same concept in every set, to keep one set per surface: references/icon-concepts.md.
Common icons
Verified against data/glyphs.tsv (v3.5.1). 766 more in references/common-icons.md.
| Name |
Codepoint |
Glyph |
nf-fa-check |
U+F00C |
|
nf-fa-times |
U+F00D |
|
nf-fa-exclamation_triangle |
U+F071 |
|
nf-fa-info_circle |
U+F05A |
|
nf-fa-bug |
U+F188 |
|
nf-md-folder |
U+F024B |
|
nf-md-folder_open |
U+F0770 |
|
nf-md-file |
U+F0214 |
|
nf-md-file_code |
U+F022E |
|
nf-oct-mark_github |
U+F408 |
|
nf-oct-git_branch |
U+F418 |
|
nf-oct-git_commit |
U+F417 |
|
nf-oct-git_pull_request |
U+F407 |
|
nf-oct-repo |
U+F401 |
|
nf-dev-git |
U+E702 |
|
nf-dev-docker |
U+E7B0 |
|
nf-dev-python |
U+E73C |
|
nf-dev-rust |
U+E7A8 |
|
nf-dev-javascript |
U+E781 |
|
nf-dev-typescript |
U+E8CA |
|
nf-dev-nodejs |
U+E719 |
|
nf-seti-json |
U+E60B |
|
nf-seti-markdown |
U+E609 |
|
nf-seti-config |
U+E615 |
|
nf-custom-vim |
U+E62B |
|
nf-linux-tux |
U+F31A |
|
nf-linux-ubuntu |
U+F31B |
|
nf-linux-archlinux |
U+F303 |
|
nf-linux-apple |
U+F302 |
|
nf-fa-terminal |
U+F120 |
|
nf-fa-search |
U+F002 |
|
nf-fa-cog |
U+F013 |
|
nf-fa-clock_o |
U+F017 |
|
nf-fa-lock |
U+F023 |
|
nf-fa-home |
U+F015 |
|
nf-fa-star |
U+F005 |
|
nf-fa-heart |
U+F004 |
|
nf-pl-left_hard_divider |
U+E0B0 |
|
nf-pl-right_hard_divider |
U+E0B2 |
|
nf-pl-branch |
U+E0A0 |
|
nf-ple-right_half_circle_thick |
U+E0B4 |
|
nf-cod-error |
U+EA87 |
|
nf-cod-warning |
U+EA6C |
|
nf-md-check |
U+F012C |
|
nf-md-close |
U+F0156 |
|
nf-md-lightning_bolt |
U+F140B |
|
nf-weather-day_sunny |
U+E30D |
|
Look up an icon
Cheat sheet: search the bare name. For a removed nf-mdi-altimeter type altimeter, then copy Icon, Class, or Code.
Bundled snapshot (paths relative to this skill directory):
grep -i 'folder' data/glyphs.tsv
awk -F'\t' '$1=="md-folder"' data/glyphs.tsv
Latest upstream data:
curl -fsSL https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/glyphnames.json -o /tmp/glyphnames.json
jq -r --arg q folder 'to_entries[]|select(.key!="METADATA" and (.key|test($q)))|"\(.key) \(.value.code) \(.value.char)"' /tmp/glyphnames.json
Class names follow nf-<set>-<name>. Material Design Icons moved in v3 from nf-mdi- (U+F001 to U+F847) to nf-md- (U+F0001 to U+F1AF0); some icons were dropped, so search by bare name for the replacement.
Writing a glyph:
| Where |
4-digit (nf-oct-mark_github U+F408) |
5-digit (nf-md-folder U+F024B) |
| bash, zsh |
printf '' |
printf '\U000f024b' |
| Lua, Neovim |
"\u{f408}" or vim.fn.nr2char(0xf408) |
"\u{f024b}" |
| JavaScript |
"" |
"\u{f024b}" |
| Vimscript |
"" |
"\U000f024b" |
| PowerShell 7 |
"`u{F408}" |
"`u{F024B}" |
| Windows PowerShell 5.1 |
[char]0xF408 |
[char]::ConvertFromUtf32(0xF024B) |
| CSS |
content: "\f408" |
content: "\f024b" |
| starship, tmux, most configs |
the literal glyph: symbol = " " |
the literal glyph |
More languages: references/glyph-sets.md.
Pick the variant
| Variant |
Family |
Files |
Icon width |
Use for |
| Regular |
<Family> Nerd Font (NF) |
*NerdFont-*.ttf |
about 1.5 cells |
default for terminals and editors |
| Mono |
<Family> Nerd Font Mono (NFM) |
*NerdFontMono-*.ttf |
exactly 1 cell |
strict monospace, aligned columns, older terminals |
| Propo |
<Family> Nerd Font Propo (NFP) |
*NerdFontPropo-*.ttf |
proportional |
GUI apps, presentations |
The variant changes only the added icons, never the base letters.
Install
macOS (casks are font-<kebab-patched-name>-nerd-font; brew search --cask nerd-font lists them all):
brew install --cask font-jetbrains-mono-nerd-font
brew install --cask font-symbols-only-nerd-font
Windows (Scoop packages are <ReleaseAsset>-NF; Chocolatey packages are community-maintained, check choco search nerd-fonts):
scoop bucket add nerd-fonts
scoop install JetBrainsMono-NF
choco install nerd-fonts-hack
Linux (Arch packages are ttf-<name>-nerd, pacman -Ss nerd; any distro via the release asset):
sudo pacman -S ttf-jetbrains-mono-nerd
mkdir -p ~/.local/share/fonts && cd ~/.local/share/fonts
curl -fLO https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz
tar -xf JetBrainsMono.tar.xz && fc-cache -fv
Any OS, pinned release: https://github.com/ryanoasis/nerd-fonts/releases/download/v3.5.1/JetBrainsMono.zip. Asset names are the "Release asset" column in references/fonts.md; SHA-256.txt ships with every release.
Keep your current text font: install NerdFontsSymbolsOnly (families Symbols Nerd Font and Symbols Nerd Font Mono; the zip holds SymbolsNerdFont-Regular.ttf, SymbolsNerdFontMono-Regular.ttf, 10-nerd-font-symbols.conf, LICENSE, README.md) and let the app fall back to it: fontconfig users copy 10-nerd-font-symbols.conf to ~/.config/fontconfig/conf.d/, kitty uses symbol_map, WezTerm font_with_fallback, iTerm2 "Use a different font for non-ASCII text", Ghostty and WezTerm bundle the symbols already. Snippets: references/terminals.md.
install.sh and install.ps1 from a shallow clone install all or one font, but only fonts still tracked in the repository.
Verify
printf ' \n'
fc-list : family | grep -i 'nerd font' | sort -u
fc-list ':charset=f408' family
The first line prints nf-custom-vim U+E62B, nf-oct-mark_github U+F408, nf-md-folder U+F024B; boxes or blanks mean the active font lacks the glyph. fc-list needs fontconfig, which macOS does not ship (brew install fontconfig); on macOS use kitty +list-fonts | grep -i nerd inside kitty, system_profiler SPFontsDataType | grep -i 'nerd font' anywhere, or the printf line alone. Checklist: the terminal profile still points at another font; Regular vs Mono overlap; restart the app and run fc-cache -fv; tmux and ssh sessions use the local terminal font, nothing to install remotely; terminals without double-width support need the Mono variant.
Configure terminals and editors
| App |
Setting |
| kitty |
font_family JetBrainsMono Nerd Font |
| Alacritty |
[font.normal] family = "JetBrainsMono Nerd Font" |
| WezTerm |
config.font = wezterm.font_with_fallback({ "JetBrainsMono Nerd Font", "Symbols Nerd Font Mono" }) |
| Ghostty |
font-family = "JetBrainsMono Nerd Font" |
| iTerm2 |
Settings > Profiles > Text > Font |
| Windows Terminal |
"font": { "face": "JetBrainsMono Nerd Font" } |
| VS Code |
"editor.fontFamily": "'JetBrainsMono Nerd Font', monospace", "terminal.integrated.fontFamily": "JetBrainsMono Nerd Font" |
| Neovide |
vim.o.guifont = "JetBrainsMono Nerd Font:h14" |
More apps, prompt tools (starship, powerlevel10k, oh-my-posh) and web snippets: references/terminals.md.
Patch your own font
Download FontPatcher.zip from the latest release; needs FontForge and Python 3.
fontforge -script font-patcher MyFont.ttf --complete --outputdir out/
docker run --rm -v "$PWD/in:/in:Z" -v "$PWD/out:/out:Z" nerdfonts/patcher --complete
--mono makes single-width icons, --variable-width-glyphs makes the Propo variant. All options: references/font-patcher.md.
Common mistakes
| Mistake |
Fix |
| Emoji or ASCII as an icon |
a Nerd Fonts glyph plus a font note |
| Codepoint from memory |
confirm in data/glyphs.tsv or on the cheat sheet |
nf-mdi-* classes after v3 |
nf-md-*, search by bare name |
font_family Cascadia Code |
CaskaydiaCove Nerd Font (patched names differ for RFN fonts) |
brew install font-jetbrainsmono-nerd-font |
brew install --cask font-jetbrains-mono-nerd-font |
| Installing the font on the remote host over ssh |
install it on the local machine that runs the terminal |
| Icons overlap the next character |
the Mono variant, or a terminal with double-width support |
| PUA glyph on a web page with no webfont |
load webfont.css or self-host Symbols Only |
right_hard_divider for a right-pointing triangle |
nf-pl-left_hard_divider U+E0B0 points right; nf-pl-right_hard_divider U+E0B2 points left |
| Icon floats above or below the text on the web |
line-height: 1 plus vertical-align (start at -0.125em) or flex centering; check a mixed test line |
| Fallback icons look shifted or tiny in the terminal |
the patched font, or kitty modify_font baseline, or a WezTerm fallback scale |
References
data/glyphs.tsv: all 10,995 named glyphs, columns name, code, char
references/common-icons.md: 766 everyday icons by purpose
references/icon-concepts.md: the same 22 concepts across the md, fa, oct, cod and seti sets
references/glyph-sets.md: sets, prefixes, codepoint ranges, lookup recipes
references/fonts.md: 72 families, release assets, package names, RFN renames
references/terminals.md: terminal, editor, prompt, and web configuration
references/font-patcher.md: patcher options and examples
- Upstream: releases, README, wiki Glyph Sets and Code Points, wiki FAQ and Troubleshooting, webfont.css
1---2name: nerd-fonts3description: Use Nerd Fonts glyphs for any icon in CLI output, TUIs, shell prompts, statuslines, editor and terminal configs, docs, and web pages. Pick from the 10,995 icons on nerdfonts.com/cheat-sheet (nf-md-, nf-fa-, nf-dev-, nf-oct-, nf-cod-, nf-seti-, nf-pl-) instead of emoji or ASCII, verify the codepoint, and install a patched font from nerdfonts.com/font-downloads. Also covers Nerd Font Mono vs Propo, brew, scoop and choco packages, tofu boxes, and the font-patcher. Triggers: icon, glyph, nerd font, powerline, starship, powerlevel10k, oh-my-posh, tmux status, lualine, nvim-tree, devicons, tofu, boxes instead of icons, terminal font, editor font, codepoint, font-patcher, emoji, icon font, file icons, statusline icons.4license: MIT5---67# Nerd Fonts89Nerd Fonts patches developer fonts with 10,995 icons from Devicons, Font Awesome, Font Awesome Extension, Material Design Icons, Weather, Octicons, Codicons, Font Logos, Pomicons, Powerline and Powerline Extra, IEC Power Symbols, and Seti-UI + Custom. It ships 72 patched font families, a Symbols Only font, and a patcher for any other font. Upstream: [ryanoasis/nerd-fonts](https://github.com/ryanoasis/nerd-fonts) (MIT for the patcher and the aggregation; every font keeps its own license). This skill snapshots release v3.5.1 (2026-08-21) as [`data/glyphs.tsv`](data/glyphs.tsv).1011## How to use1213- `/nerd-fonts`: apply the icon policy below to every icon and font decision in this conversation.14- `/nerd-fonts <file>`: review a script, TUI source, prompt config, editor config, terminal config, HTML or CSS file against the policy. For each finding output:15 - violation (quote the exact line)16 - why it matters (one sentence)17 - fix (the exact glyph with its `nf-<set>-<name>` and `U+XXXX`, or the exact config line)1819Review checklist for `/nerd-fonts <file>` (`perl` ships with macOS and Linux):2021- Emoji or dingbats used as icons: `perl -CSD -ne 'print "$.: $_" if /[\x{2600}-\x{27BF}\x{1F000}-\x{1FAFF}]/' FILE`. Fix: the glyph from `data/glyphs.tsv`.22- Legacy Material classes: `grep -n 'nf-mdi-' FILE`. Fix: the `nf-md-` name found by bare-name search.23- Glyphs without their name and codepoint: `perl -CSD -ne 'print "$.: $_" if /[\x{E000}-\x{F8FF}\x{F0000}-\x{FFFFD}]/ && !/nf-[a-z]+-[a-z0-9_]+/' FILE`. Fix: add `nf-<set>-<name> U+XXXX` next to the glyph and confirm the codepoint.24- Unpatched family in a font setting: `grep -n -i -E 'cascadia code|source code pro|ibm plex mono|hasklig|hermit|anonymous pro|monaspace|terminus|liberation mono|share tech mono|intel one mono|atkinson|d2coding|ia writer|bitstream vera' FILE`. Fix: the patched family from `references/fonts.md`.25- Web page with glyphs and no font: after a glyph hit in HTML or CSS, `grep -L -E 'webfont\.css|@font-face' FILE` prints the file when it loads no icon font. Fix: load `webfont.css` or self-host Symbols Only.26- Text markers standing in for icons (`E:`, `W:`, `[x]`, `->` in status lines): no regex catches them reliably; read the file. Fix: the matching glyph, one set per surface.2728## Icon policy2930### Choosing icons3132- MUST use a Nerd Fonts glyph for every icon in CLI output, TUIs, prompts, statuslines, editor and terminal configs, docs, and web UI33- NEVER use emoji, ASCII art, or Unicode dingbats as an icon when a Nerd Fonts glyph exists34- MUST take the name from the [cheat sheet](https://www.nerdfonts.com/cheat-sheet), [`data/glyphs.tsv`](data/glyphs.tsv), or upstream `glyphnames.json`35- NEVER state a codepoint or class name from memory36- MUST write the glyph next to its name and codepoint in a comment or adjacent note, for example `icon = "" # nf-oct-mark_github U+F408`37- SHOULD keep one icon set per surface; NEVER mix two sets for the same concept in one UI38- SHOULD pick the set by purpose: `nf-md-` for breadth, `nf-cod-` for editor UI, `nf-oct-` for git and GitHub, `nf-dev-` and `nf-seti-` for languages and file types, `nf-pl-` and `nf-ple-` for prompt separators, `nf-linux-` for OS logos, `nf-weather-` for weather3940### Font requirement4142- MUST say that a Nerd Font must be active on the rendering surface and link <https://www.nerdfonts.com/font-downloads>43- MUST use the patched family name exactly as installed; Reserved Font Name renames apply: Cascadia Code is `CaskaydiaCove Nerd Font`, Source Code Pro is `SauceCodePro Nerd Font`, IBM Plex Mono is `BlexMono Nerd Font` (full list in [`references/fonts.md`](references/fonts.md))44- SHOULD offer `Symbols Nerd Font` (Symbols Only) when the user keeps a different text font4546### Terminal and CLI4748- MUST use the Mono variant, or account for 1.5-cell icons, wherever columns must align49- SHOULD add a plain-text fallback switch (`--no-icons` or `NO_ICONS=1`) to CLIs that may run without a Nerd Font50- MUST print the chosen glyphs with `printf` and check alignment before claiming they render51- SHOULD use a patched font, not the Symbols Only fallback, where icons must sit exactly on the text line: upstream documents fallback placement as hit or miss; kitty corrects it with `modify_font baseline`, WezTerm with a fallback `scale`5253### Web5455- MUST load the Nerd Fonts webfont (`<link rel="stylesheet" href="https://www.nerdfonts.com/assets/css/webfont.css">` then `<i class="nf nf-fa-heart"></i>`) or self-host `SymbolsNerdFont-Regular.ttf` from `NerdFontsSymbolsOnly.zip` with an `@font-face` and a `.nf` class56- SHOULD self-host in production instead of hot-linking nerdfonts.com57- MUST add `aria-hidden="true"` on decorative icon elements and an accessible name on icon-only controls58- NEVER ship a Private Use Area character on a page without a font that covers it59- MUST keep `line-height: 1` on icon elements (the upstream `.nf` class sets it) and align them to the text with `vertical-align` (start at `-0.125em` and tune per text font) or `display: inline-flex; align-items: center` in components60- MUST check a line that mixes text and icons in the browser before shipping; an icon font sits on a different baseline than the text font6162### Verification6364- MUST verify every glyph name in [`data/glyphs.tsv`](data/glyphs.tsv) or on the cheat sheet before use65- NEVER claim an icon renders without evidence: `printf` output, a screenshot, or the user confirming6667## Two pages to use6869| Need | Page |70|------|------|71| Pick or download a font | <https://www.nerdfonts.com/font-downloads> |72| Find an icon by name, class, or codepoint | <https://www.nerdfonts.com/cheat-sheet> |7374The cheat sheet reads upstream `glyphnames.json`; `data/glyphs.tsv` is the same data bundled here. Each cheat sheet result has copy buttons for Icon, Class, and Code.7576## Which set for what7778| Need | Set | Example | Glyphs |79|------|-----|---------|--------|80| File types and folders | `seti`, `custom`, `md` | `nf-seti-json` | 167 + 45 |81| Git and GitHub | `oct` | `nf-oct-git_branch` | 310 |82| Editor UI, LSP kinds, debug | `cod` | `nf-cod-symbol_method` | 540 |83| General UI and status | `md`, `fa` | `nf-md-alert_circle`, `nf-fa-check` | 6,896 and 1,818 |84| Languages, frameworks, tools | `dev` | `nf-dev-rust` | 613 |85| Prompt separators | `pl`, `ple` | `nf-pl-left_hard_divider` | 9 + 34 |86| OS and distro logos | `linux` | `nf-linux-archlinux` | 134 |87| Weather | `weather` | `nf-weather-day_sunny` | 228 |88| Power states | `iec` | `nf-iec-power` | 5 |89| Pomodoro timers | `pom` | `nf-pom-pomodoro_ticking` | 11 |9091Counts and codepoint ranges: [`references/glyph-sets.md`](references/glyph-sets.md). The same concept in every set, to keep one set per surface: [`references/icon-concepts.md`](references/icon-concepts.md).9293## Common icons9495Verified against `data/glyphs.tsv` (v3.5.1). 766 more in [`references/common-icons.md`](references/common-icons.md).9697| Name | Codepoint | Glyph |98|------|-----------|-------|99| `nf-fa-check` | U+F00C | |100| `nf-fa-times` | U+F00D | |101| `nf-fa-exclamation_triangle` | U+F071 | |102| `nf-fa-info_circle` | U+F05A | |103| `nf-fa-bug` | U+F188 | |104| `nf-md-folder` | U+F024B | |105| `nf-md-folder_open` | U+F0770 | |106| `nf-md-file` | U+F0214 | |107| `nf-md-file_code` | U+F022E | |108| `nf-oct-mark_github` | U+F408 | |109| `nf-oct-git_branch` | U+F418 | |110| `nf-oct-git_commit` | U+F417 | |111| `nf-oct-git_pull_request` | U+F407 | |112| `nf-oct-repo` | U+F401 | |113| `nf-dev-git` | U+E702 | |114| `nf-dev-docker` | U+E7B0 | |115| `nf-dev-python` | U+E73C | |116| `nf-dev-rust` | U+E7A8 | |117| `nf-dev-javascript` | U+E781 | |118| `nf-dev-typescript` | U+E8CA | |119| `nf-dev-nodejs` | U+E719 | |120| `nf-seti-json` | U+E60B | |121| `nf-seti-markdown` | U+E609 | |122| `nf-seti-config` | U+E615 | |123| `nf-custom-vim` | U+E62B | |124| `nf-linux-tux` | U+F31A | |125| `nf-linux-ubuntu` | U+F31B | |126| `nf-linux-archlinux` | U+F303 | |127| `nf-linux-apple` | U+F302 | |128| `nf-fa-terminal` | U+F120 | |129| `nf-fa-search` | U+F002 | |130| `nf-fa-cog` | U+F013 | |131| `nf-fa-clock_o` | U+F017 | |132| `nf-fa-lock` | U+F023 | |133| `nf-fa-home` | U+F015 | |134| `nf-fa-star` | U+F005 | |135| `nf-fa-heart` | U+F004 | |136| `nf-pl-left_hard_divider` | U+E0B0 | |137| `nf-pl-right_hard_divider` | U+E0B2 | |138| `nf-pl-branch` | U+E0A0 | |139| `nf-ple-right_half_circle_thick` | U+E0B4 | |140| `nf-cod-error` | U+EA87 | |141| `nf-cod-warning` | U+EA6C | |142| `nf-md-check` | U+F012C | |143| `nf-md-close` | U+F0156 | |144| `nf-md-lightning_bolt` | U+F140B | |145| `nf-weather-day_sunny` | U+E30D | |146147## Look up an icon148149Cheat sheet: search the bare name. For a removed `nf-mdi-altimeter` type `altimeter`, then copy Icon, Class, or Code.150151Bundled snapshot (paths relative to this skill directory):152153```bash154grep -i 'folder' data/glyphs.tsv155awk -F'\t' '$1=="md-folder"' data/glyphs.tsv156```157158Latest upstream data:159160```bash161curl -fsSL https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/glyphnames.json -o /tmp/glyphnames.json162jq -r --arg q folder 'to_entries[]|select(.key!="METADATA" and (.key|test($q)))|"\(.key) \(.value.code) \(.value.char)"' /tmp/glyphnames.json163```164165Class names follow `nf-<set>-<name>`. Material Design Icons moved in v3 from `nf-mdi-` (U+F001 to U+F847) to `nf-md-` (U+F0001 to U+F1AF0); some icons were dropped, so search by bare name for the replacement.166167Writing a glyph:168169| Where | 4-digit (`nf-oct-mark_github` U+F408) | 5-digit (`nf-md-folder` U+F024B) |170|-------|------|------|171| bash, zsh | `printf ''` | `printf '\U000f024b'` |172| Lua, Neovim | `"\u{f408}"` or `vim.fn.nr2char(0xf408)` | `"\u{f024b}"` |173| JavaScript | `""` | `"\u{f024b}"` |174| Vimscript | `""` | `"\U000f024b"` |175| PowerShell 7 | `` "`u{F408}" `` | `` "`u{F024B}" `` |176| Windows PowerShell 5.1 | `[char]0xF408` | `[char]::ConvertFromUtf32(0xF024B)` |177| CSS | `content: "\f408"` | `content: "\f024b"` |178| starship, tmux, most configs | the literal glyph: `symbol = " "` | the literal glyph `` |179180More languages: [`references/glyph-sets.md`](references/glyph-sets.md).181182## Pick the variant183184| Variant | Family | Files | Icon width | Use for |185|---------|--------|-------|------------|---------|186| Regular | `<Family> Nerd Font` (`NF`) | `*NerdFont-*.ttf` | about 1.5 cells | default for terminals and editors |187| Mono | `<Family> Nerd Font Mono` (`NFM`) | `*NerdFontMono-*.ttf` | exactly 1 cell | strict monospace, aligned columns, older terminals |188| Propo | `<Family> Nerd Font Propo` (`NFP`) | `*NerdFontPropo-*.ttf` | proportional | GUI apps, presentations |189190The variant changes only the added icons, never the base letters.191192## Install193194macOS (casks are `font-<kebab-patched-name>-nerd-font`; `brew search --cask nerd-font` lists them all):195196```bash197brew install --cask font-jetbrains-mono-nerd-font198brew install --cask font-symbols-only-nerd-font199```200201Windows (Scoop packages are `<ReleaseAsset>-NF`; Chocolatey packages are community-maintained, check `choco search nerd-fonts`):202203```powershell204scoop bucket add nerd-fonts205scoop install JetBrainsMono-NF206choco install nerd-fonts-hack207```208209Linux (Arch packages are `ttf-<name>-nerd`, `pacman -Ss nerd`; any distro via the release asset):210211```bash212sudo pacman -S ttf-jetbrains-mono-nerd213mkdir -p ~/.local/share/fonts && cd ~/.local/share/fonts214curl -fLO https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz215tar -xf JetBrainsMono.tar.xz && fc-cache -fv216```217218Any OS, pinned release: `https://github.com/ryanoasis/nerd-fonts/releases/download/v3.5.1/JetBrainsMono.zip`. Asset names are the "Release asset" column in [`references/fonts.md`](references/fonts.md); `SHA-256.txt` ships with every release.219220Keep your current text font: install `NerdFontsSymbolsOnly` (families `Symbols Nerd Font` and `Symbols Nerd Font Mono`; the zip holds `SymbolsNerdFont-Regular.ttf`, `SymbolsNerdFontMono-Regular.ttf`, `10-nerd-font-symbols.conf`, `LICENSE`, `README.md`) and let the app fall back to it: fontconfig users copy `10-nerd-font-symbols.conf` to `~/.config/fontconfig/conf.d/`, kitty uses `symbol_map`, WezTerm `font_with_fallback`, iTerm2 "Use a different font for non-ASCII text", Ghostty and WezTerm bundle the symbols already. Snippets: [`references/terminals.md`](references/terminals.md).221222`install.sh` and `install.ps1` from a shallow clone install all or one font, but only fonts still tracked in the repository.223224## Verify225226```bash227printf ' \n'228fc-list : family | grep -i 'nerd font' | sort -u229fc-list ':charset=f408' family230```231232The first line prints `nf-custom-vim` U+E62B, `nf-oct-mark_github` U+F408, `nf-md-folder` U+F024B; boxes or blanks mean the active font lacks the glyph. `fc-list` needs fontconfig, which macOS does not ship (`brew install fontconfig`); on macOS use `kitty +list-fonts | grep -i nerd` inside kitty, `system_profiler SPFontsDataType | grep -i 'nerd font'` anywhere, or the `printf` line alone. Checklist: the terminal profile still points at another font; Regular vs Mono overlap; restart the app and run `fc-cache -fv`; tmux and ssh sessions use the local terminal font, nothing to install remotely; terminals without double-width support need the Mono variant.233234## Configure terminals and editors235236| App | Setting |237|-----|---------|238| kitty | `font_family JetBrainsMono Nerd Font` |239| Alacritty | `[font.normal]` `family = "JetBrainsMono Nerd Font"` |240| WezTerm | `config.font = wezterm.font_with_fallback({ "JetBrainsMono Nerd Font", "Symbols Nerd Font Mono" })` |241| Ghostty | `font-family = "JetBrainsMono Nerd Font"` |242| iTerm2 | Settings > Profiles > Text > Font |243| Windows Terminal | `"font": { "face": "JetBrainsMono Nerd Font" }` |244| VS Code | `"editor.fontFamily": "'JetBrainsMono Nerd Font', monospace"`, `"terminal.integrated.fontFamily": "JetBrainsMono Nerd Font"` |245| Neovide | `vim.o.guifont = "JetBrainsMono Nerd Font:h14"` |246247More apps, prompt tools (starship, powerlevel10k, oh-my-posh) and web snippets: [`references/terminals.md`](references/terminals.md).248249## Patch your own font250251Download `FontPatcher.zip` from the latest release; needs FontForge and Python 3.252253```bash254fontforge -script font-patcher MyFont.ttf --complete --outputdir out/255docker run --rm -v "$PWD/in:/in:Z" -v "$PWD/out:/out:Z" nerdfonts/patcher --complete256```257258`--mono` makes single-width icons, `--variable-width-glyphs` makes the Propo variant. All options: [`references/font-patcher.md`](references/font-patcher.md).259260## Common mistakes261262| Mistake | Fix |263|---------|-----|264| Emoji or ASCII as an icon | a Nerd Fonts glyph plus a font note |265| Codepoint from memory | confirm in `data/glyphs.tsv` or on the cheat sheet |266| `nf-mdi-*` classes after v3 | `nf-md-*`, search by bare name |267| `font_family Cascadia Code` | `CaskaydiaCove Nerd Font` (patched names differ for RFN fonts) |268| `brew install font-jetbrainsmono-nerd-font` | `brew install --cask font-jetbrains-mono-nerd-font` |269| Installing the font on the remote host over ssh | install it on the local machine that runs the terminal |270| Icons overlap the next character | the Mono variant, or a terminal with double-width support |271| PUA glyph on a web page with no webfont | load `webfont.css` or self-host Symbols Only |272| `right_hard_divider` for a right-pointing triangle | `nf-pl-left_hard_divider` U+E0B0 points right; `nf-pl-right_hard_divider` U+E0B2 points left |273| Icon floats above or below the text on the web | `line-height: 1` plus `vertical-align` (start at `-0.125em`) or flex centering; check a mixed test line |274| Fallback icons look shifted or tiny in the terminal | the patched font, or kitty `modify_font baseline`, or a WezTerm fallback `scale` |275276## References277278- [`data/glyphs.tsv`](data/glyphs.tsv): all 10,995 named glyphs, columns `name`, `code`, `char`279- [`references/common-icons.md`](references/common-icons.md): 766 everyday icons by purpose280- [`references/icon-concepts.md`](references/icon-concepts.md): the same 22 concepts across the md, fa, oct, cod and seti sets281- [`references/glyph-sets.md`](references/glyph-sets.md): sets, prefixes, codepoint ranges, lookup recipes282- [`references/fonts.md`](references/fonts.md): 72 families, release assets, package names, RFN renames283- [`references/terminals.md`](references/terminals.md): terminal, editor, prompt, and web configuration284- [`references/font-patcher.md`](references/font-patcher.md): patcher options and examples285- Upstream: [releases](https://github.com/ryanoasis/nerd-fonts/releases), [README](https://github.com/ryanoasis/nerd-fonts#readme), wiki [Glyph Sets and Code Points](https://github.com/ryanoasis/nerd-fonts/wiki/Glyph-Sets-and-Code-Points), wiki [FAQ and Troubleshooting](https://github.com/ryanoasis/nerd-fonts/wiki/FAQ-and-Troubleshooting), [webfont.css](https://www.nerdfonts.com/assets/css/webfont.css)