This section is the technical reference index for Nerd Fonts. It covers configuration file schemas, source font structure, build script contracts, and version history. Each sub-page provides a specification-level description of one part of the system.
For practical usage, see Installation. For contribution workflows, see Contributing. For patching options and flags, see Patching Options.
| Page | Title | Contents |
|---|---|---|
| 8.1 | fonts.json Schema | Field-by-field reference for bin/scripts/lib/fonts.json; how it drives the CI font matrix, Homebrew cask generation, and the website |
| 8.2 | Source Font Examples | Annotated examples from src/unpatched-fonts/: a standard font, a font with ligature config.cfg, and a project-modified font |
| 8.3 | Build Scripts Reference | Reference table for every script in bin/scripts/: arguments, environment variables, invoking CI workflow, and local-run safety |
| 8.4 | Version History | Major release notes with emphasis on breaking changes: codepoint reassignments, naming convention changes, and significant additions |
Three file categories drive automation, patching, and web presentation:
| File / Pattern | Location | Format | Primary Consumers |
|---|---|---|---|
fonts.json | bin/scripts/lib/fonts.json | JSON array | CI font matrix, gotta-patch-em-all-font-patcher!.sh, website |
glyphnames.json | bin/scripts/lib/glyphnames.json | JSON object | font-patcher, generate-css.sh, website cheat sheet |
i_*.sh | bin/scripts/lib/i_cod.sh … i_md.sh | Bash variables | Cheat sheet generation via i_all.sh |
config.cfg | src/unpatched-fonts/<Family>/config.cfg | INI-style | font-patcher per-font options and ligature subtable lists |
Sources: bin/scripts/lib/README.md1-30
Each icon set has a dedicated i_*.sh file and is aggregated by i_all.sh:
| Icon Set | Source Glyph File | Shell Script |
|---|---|---|
| Codicons | codicons/codicon.ttf | i_cod.sh |
| Devicons | devicons.ttf | i_dev.sh |
| Font Awesome | font-awesome/FontAwesome.otf | i_fa.sh |
| Font Awesome Extension | font-awesome-extension.ttf | i_fae.sh |
| IEC Symbols | Unicode_IEC_symbol_font.otf | i_iec.sh |
| Font Logos | font-logos.ttf | i_logos.sh |
| Material Design Icons | materialdesign/MaterialDesignIconsDesktop.ttf | i_md.sh |
| Octicons | octicons.ttf | i_oct.sh |
| Powerline Extra | PowerlineExtraSymbols.otf | i_ple.sh |
| Pomicons | Pomicons.otf | i_pom.sh |
| Seti-UI / Original | original-source.otf | i_seti.sh |
| Weather Icons | weather-icons/weathericons-regular-webfont.ttf | i_weather.sh |
| Extra Glyphs (Fira Code) | extraglyphs.sfd | i_extra.sh |
| Old Material (cheat sheet only) | materialdesignicons-webfont.ttf | i_material.sh |
Each script guards against double-sourcing via a sentinel variable (e.g., __i_prog_loaded), assigns Unicode characters to named variables following the i_{set}_{icon_name} convention, and unsets the temporary i variable on exit.
Sources: bin/scripts/lib/README.md33-51 bin/scripts/lib/i_extra.sh1-20 bin/scripts/lib/i_all.sh1-28
Diagram: Reference File Consumers Across the Build Pipeline
Sources: bin/scripts/lib/README.md1-51 bin/scripts/README.md1-49 bin/scripts/lib/i_all.sh1-28
The .gitignore file contains an autogenerated section controlling which patched fonts are excluded from version control:
Diagram: Autogenerated .gitignore Patterns from fonts.json
The .gitignore file maintains an autogenerated section between comment markers. For fonts with repoRelease: false, the build system generates exclusion patterns that ignore all files in the font's patched directory except the README.md file. This keeps the repository size manageable while preserving documentation.
Current autogenerated exclusions (as of the file snapshot):
Sources: .gitignore19-51
Diagram: i_all.sh Glyph Definition Loading and Validation
The i_all.sh script loads all glyph definition files in a controlled sequence. It performs duplicate name detection for each file before sourcing it, ensuring no glyph name conflicts exist. The optional include-old-material argument adds support for deprecated Material Design icons needed by the cheat sheet. After successful loading, all glyph variables are available in the shell environment with prefixes matching their icon set (e.g., i_cod_*, i_dev_*).
Sources: bin/scripts/lib/i_all.sh1-28
The i_extra.sh file demonstrates the glyph definition format:
Structure:
__i_prog_loaded)i holds Unicode characteri_extra_progress_empty_leftunset i removes temporary variableEach variable follows the naming pattern: i_{set}_{icon_name}
Sources: bin/scripts/lib/i_extra.sh1-20
The following pages provide detailed specifications for each reference category:
standardize-readmes.sh, archive-font-patcher.sh, and helper utilitiesDiagram: Configuration Files to Build Artifacts Flow
This diagram illustrates the transformation from editable configuration files to generated assets and final build artifacts. The two human-maintained file types (fonts.json and i_*.sh files) drive all downstream generation. The glyphnames.json serves as an intermediate representation, bridging the shell-based definitions to JSON format for web consumption.
Refresh this wiki
This wiki was recently refreshed. Please wait 3 days to refresh again.