This page covers how Nerd Fonts sources, stores, and integrates glyphs into the patching pipeline. It describes the layout of the src/glyphs and src/svgs directories, the role of each icon set file, and how the patcher consumes them via patch_set definitions.
For the shell variable naming system and the i_*.sh definition files, see Glyph Definitions. For per-icon-set details including codepoint ranges and scaling rules, see Icon Sets. For a contributor guide on adding new icon sets, see Adding New Icon Sets.
The glyph management system is responsible for:
.otf or .ttf files under src/glyphs/src/svgs/ for glyphs not sourced from an external fontoriginal-source.otf from those SVGs so they can be consumed by the patchericons.tsvfont-patcher through a patch_set data structuresrc/
├── glyphs/ # Binary font files used directly by font-patcher
│ └── README.md # Icon set registry (upstream URL, version, license)
└── svgs/ # SVG sources for the "Seti and Original" set
├── icons.tsv # Codepoint-to-name-to-filename mapping
└── *.svg # Individual glyph artwork
The src/glyphs/ directory holds the actual font binaries. font-patcher reads these files at patch time. The src/svgs/ directory holds artwork that is compiled into one of those binaries (original-source.otf) rather than being used directly.
Sources: src/glyphs/README.md1-8 src/svgs/README.md1-14
src/glyphsEvery icon set stored in src/glyphs/ is listed in src/glyphs/README.md10-28 with its upstream repository, pinned version, and license. The table below reproduces that registry.
| Icon Set | Upstream | Version | License |
|---|---|---|---|
| Codicons | microsoft/vscode-codicons | 0.0.35 | CC BY 4.0 |
| Devicons | devicons/devicon | 2.16.0 | MIT |
| extraglyphs | source-foundry/Hack | — | MIT |
| Font Awesome | FortAwesome/Font-Awesome | 6.5.1 | CC BY 4.0 |
| Font Awesome Extension | AndreLZGava/font-awesome-extension | 0.0.3 | MIT |
| Font Logos | lukas-w/font-logos | 1.3.0 | unlicensed |
| MaterialDesign | Templarian/MaterialDesign-Font | Oct 6 2022 | Apache 2.0 |
| Octicons | primer/octicons | 18.3.0 | MIT |
| Seti and Original | jesseweed/seti-ui + original SVGs | 0.8.1 | MIT |
| Pomicons | gabrielelana/pomicons | 1.001 | OFL 1.1 RFN |
| Powerline Extra | ryanoasis/powerline-extra-symbols | 1.200 | MIT |
| Powerline Symbols | powerline/powerline | 1.000 | MIT |
| Power Symbols IEC | jloughry/Unicode | Feb 2015 | MIT |
| Weather Icons | erikflowers/weather-icons | 2.0.10 | OFL 1.1 |
When an upstream icon font is updated, the binary in src/glyphs/ must be replaced and the corresponding database file in bin/scripts/libs/ must be updated to keep glyph name metadata in sync.
Sources: src/glyphs/README.md10-28
The Seti and Original set (original-source.otf) is the only icon set that is generated locally rather than copied from an upstream binary. Its source artwork lives in src/svgs/ as individual SVG files.
Pipeline diagram: from SVG to patched font
Key steps:
src/svgs/ are automatically run through Inkscape's simplify-path by optimize-original-source.sh.generate-original-source.py reads icons.tsv for codepoint assignments and imports each referenced SVG to build original-source.otf.original-source.otf is then treated like any other binary in src/glyphs/ by font-patcher.Do not commit hand-edits to original-source.otf; always modify the SVG sources and regenerate.
Sources: src/svgs/README.md1-14 src/glyphs/README.md6-8
icons.tsv Formatsrc/svgs/icons.tsv is the authoritative mapping that drives generate-original-source.py. Each non-comment line has three tab-separated columns.
| Column | Description |
|---|---|
offset | Zero-based integer offset into the icon set's codepoint block |
name | Shell variable name used in i_seti.sh (e.g. i_custom_folder_npm) |
filename | SVG file in src/svgs/ (omit on alias lines) |
Rules:
src/svgs/ requires a corresponding entry here.Example excerpt from src/svgs/icons.tsv15-32:
000 i_custom_folder_npm npm-folder_nf.svg
001 i_custom_folder_git git-folder_nf.svg
001 i_custom_folder_git_branch # alias, no filename
002 i_custom_folder_config config-folder_nf.svg
Sources: src/svgs/icons.tsv1-32
Files in src/svgs/ follow two naming conventions distinguishing origin:
| Convention | Example | Origin |
|---|---|---|
| Plain name | sass.svg | Seti-UI upstream |
_nf suffix | zsh_nf.svg | Original Nerd Fonts artwork |
The _nf suffix prevents filename collisions when a Seti glyph and an original glyph represent similar concepts.
Sources: src/svgs/README.md3-6 src/svgs/zsh_nf.svg1-2
font-patcherfont-patcher consumes the glyph files through a patch_set data structure defined inside font-patcher itself. Each entry in patch_set specifies:
src/glyphs/Diagram: patch_set entries mapped to glyph sources
Each icon set's binary file path, codepoint range, and scale factor are all properties of a single patch_set entry. The --complete flag activates every entry simultaneously.
For the complete list of CLI flags and their corresponding patch_set entries, see Patching Options. For per-set codepoint ranges and scaling details, see Icon Sets.
Sources: src/glyphs/README.md1-8 src/archive-font-patcher-readme.md8-9
When an upstream icon font releases a new version:
src/glyphs/ with the new version.bin/scripts/libs/ (used for glyph name lookups in CSS generation and the cheat sheet).Sources: src/glyphs/README.md5-8
i_*.sh, i_all.sh): covered in Glyph DefinitionsSources: src/glyphs/README.md1-8 src/svgs/README.md1-14 src/svgs/icons.tsv1-14
Refresh this wiki
This wiki was recently refreshed. Please wait 3 days to refresh again.