Nerd Fonts Advanced: Patcher, NixOS, Enterprise Setup
Posted: April 16, 2026 to Technology.
If you already have a Nerd Font installed and your terminal renders icons, this guide is not for you -- go read our Nerd Fonts complete install and setup guide instead. This page is for the engineers who want to understand what happens inside the patcher, maintain font consistency across a team of 30 developers, ship reproducible Docker dev environments where every contributor sees the same glyphs, manage fonts declaratively on NixOS, or push a standardized font stack to a Windows/macOS/Linux fleet via MDM without touching individual machines.
At Petronella Technology Group, we manage developer workstations across mixed-OS teams and NixOS servers. What follows is the operational knowledge we have accumulated from deploying Nerd Fonts at scale -- the stuff that does not appear in the README.
Font Patcher Internals and Custom Glyph Sets
The Nerd Fonts patcher is a Python script that uses FontForge to merge glyph tables from multiple source fonts (the icon sets) into a target font. When you run font-patcher with --complete, you are merging every registered source. In practice, the full set adds 10,000-plus glyphs and grows the font file from roughly 300 KB to 3-4 MB. That matters for embedded systems, web font serving, or any context where you care about file size.
The patcher registers source glyph sets in font-patcher at the top of the script under a dictionary called self.sym_font_args. Each entry maps a CLI flag to a source font file and a Unicode range. The relevant flags and their approximate glyph counts as of v3.x are:
--powerline-- Powerline symbols (a few dozen glyphs, E0A0-E0A2, E0B0-E0B3)--powerlineextra-- extended Powerline shapes (E0A3-E0D4 range)--fontawesome-- Font Awesome 4 (roughly 700 glyphs)--fontawesomeextension-- Font Awesome Extension subset--powerlinefontssymbols-- additional Powerline Fonts glyphs--pomicons-- Pomicons set (small, useful for status bars)--octicons-- GitHub Octicons (roughly 200 glyphs)--codicons-- VS Code Codicons (400+ glyphs, heavy overlap with Neovim plugin expectations)--material-- Material Design Icons (6,000+ glyphs -- the largest source)--weather-- Weather icons (around 200 glyphs)--devicons-- Devicons (language file-type icons)
For a terminal-only setup that runs Neovim, a file manager, and Starship, you actually need very few of these. The minimum useful set for most Neovim + Starship users is --powerline --powerlineextra --devicons --codicons. That combination produces a font file roughly 60-70% smaller than --complete.
# Minimal terminal set: Powerline + Devicons + Codicons only
./font-patcher YourFont-Regular.ttf \
--powerline \
--powerlineextra \
--devicons \
--codicons \
--mono
# If you also use a status bar with weather/system icons add --pomicons
# If you use Material Icons in Neovim dashboard plugins add --material
The --mono flag tells the patcher to override all patched glyph advance widths to match the font's standard character width. Without it, some icon glyphs have their original proportional width, which shifts subsequent characters in a terminal and breaks column alignment. Always pass --mono for terminal use. Omit it only when patching a font intended for GUI applications that support proportional rendering.
One non-obvious patcher behavior: when two source fonts define a glyph at the same Unicode code point, the patcher uses a conflict resolution strategy that favors the source listed later in its internal dictionary. If you are building a custom patch and want a specific source to win on collisions, you need to edit font-patcher directly and reorder the sym_font_args entries. There is no CLI flag for this.
The patcher also exposes --glyphdir to point at a directory of additional source fonts not in the standard set. This is how you add proprietary icon fonts or internal design-system icons to a patched font without publishing them. The source font just needs to be a valid OpenType or TrueType file with glyphs mapped to PUA code points.
# Add a custom internal icon set at U+F8000+ range
./font-patcher YourFont-Regular.ttf \
--powerline --powerlineextra --codicons \
--glyphdir /path/to/your-internal-icons/ \
--mono
NixOS Declarative Font Management
NixOS 23.11 introduced a structured nerd-fonts namespace in nixpkgs that replaced the older nerdfonts attribute. The old attribute accepted a list of font names passed to override { fonts = [ ... ]; }. The new namespace exposes individual packages, which means you can install specific fonts without pulling in the entire 3 GB collection and you can compose them with standard pkgs.nerd-fonts attribute access.
# flake.nix or configuration.nix
fonts.packages = with pkgs; [
nerd-fonts.jetbrains-mono
nerd-fonts.fira-code
nerd-fonts.iosevka
# These are the per-font packages, not the meta-package
];
The attribute names use kebab-case versions of the font family name. If you are unsure of the exact attribute, run nix search nixpkgs nerd-fonts or browse pkgs/data/fonts/nerd-fonts/ in the nixpkgs source. Each font gets its own derivation with a predictable store path, which means binary cache hits work correctly: if the nixpkgs binary cache has built that font version, your deploy gets a cache hit instead of a local compile. With the old override { fonts = [...]; } pattern, adding or removing a single font from the list invalidated the entire combined derivation and forced a rebuild.
For organizations running NixOS home-manager across a team, font configuration belongs in the home-manager module:
# home.nix
home.packages = with pkgs; [
nerd-fonts.jetbrains-mono
];
fonts.fontconfig.enable = true;
One practical issue with declarative font management: if a developer previously installed fonts manually into ~/.local/share/fonts/, those files persist alongside the Nix-managed fonts. Fontconfig will see both. The result is usually harmless but can cause confusion when font family name lookups return the manually-installed version instead of the Nix-managed one. The clean solution is to add a home-manager activation script that removes the manual install directory on rebuild, or simply document that manual font installs are prohibited on managed workstations.
For server environments (build agents, CI runners on NixOS), fonts are usually unnecessary. However, some headless tools (wkhtmltopdf, Puppeteer-based PDF generators, certain LaTeX builds) require monospace fonts with specific Unicode coverage. In those cases, install only the specific Nerd Font needed and pin its nixpkgs revision in the flake lock to guarantee reproducibility across runs.
Docker Dev-Environment Font Consistency
Font consistency in Docker dev environments is a frequently overlooked source of rendering differences between contributors. The symptom: one engineer's terminal shows clean file-type icons in a containerized development shell, another's shows empty rectangles. The root cause is almost always that the font the terminal uses exists on the host but not inside the container, or exists in both places but at different versions with different glyph sets.
There are three patterns for handling this. Each has trade-offs.
Pattern 1: Mount host fonts read-only
The simplest approach. Mount the host font directory into the container as a read-only volume and run fc-cache on container start.
# docker-compose.yml
services:
devenv:
image: your-dev-image
volumes:
- ${HOME}/.local/share/fonts:/root/.local/share/fonts:ro
command: ["sh", "-c", "fc-cache -f && exec bash"]
This works on Linux hosts but breaks on macOS and Windows because the font paths differ and macOS stores system fonts in locations Docker Desktop cannot easily bind-mount. It also means every contributor must have the same fonts installed on their host, which is exactly the standardization problem you are trying to solve.
Pattern 2: Bundle fonts in the image
The reproducible approach. Download the specific font files during the image build and install them into /usr/local/share/fonts/.
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
fontconfig \
curl \
&& rm -rf /var/lib/apt/lists/*
# Pin to a specific Nerd Fonts release tag for reproducibility
ARG NERD_FONTS_VERSION=3.2.1
ARG FONT_NAME=JetBrainsMono
RUN curl -fsSL \
"https://github.com/ryanoasis/nerd-fonts/releases/download/v${NERD_FONTS_VERSION}/${FONT_NAME}.tar.xz" \
-o /tmp/font.tar.xz \
&& mkdir -p /usr/local/share/fonts/nerd-fonts \
&& tar -xJf /tmp/font.tar.xz -C /usr/local/share/fonts/nerd-fonts \
&& fc-cache -f /usr/local/share/fonts \
&& rm /tmp/font.tar.xz
The font tar.xz for a single family is typically 4-8 MB. It adds to image size but gives you a fully deterministic environment. Every contributor, every CI run, every production build agent gets exactly the same font. Pin the NERD_FONTS_VERSION build arg in your compose file and update it intentionally rather than tracking latest.
Alpine-based images need fontconfig from apk and do not include the standard font cache paths by default. Add mkfontdir and mkfontscale from font-util if any tool requires X11 font directories rather than fontconfig. Most modern terminal tools use fontconfig, so this is rarely needed, but headless browser tools (for screenshot testing) often require it.
FROM alpine:3.19
RUN apk add --no-cache fontconfig curl
ARG NERD_FONTS_VERSION=3.2.1
RUN curl -fsSL \
"https://github.com/ryanoasis/nerd-fonts/releases/download/v${NERD_FONTS_VERSION}/JetBrainsMono.tar.xz" \
-o /tmp/font.tar.xz \
&& mkdir -p /usr/local/share/fonts/nerd-fonts \
&& tar -xJf /tmp/font.tar.xz -C /usr/local/share/fonts/nerd-fonts \
&& fc-cache -f \
&& rm /tmp/font.tar.xz
Pattern 3: Shared read-only font volume
For teams with many containers that all need the same fonts, create a dedicated font volume populated by an init container and mount it read-only into every service that needs fonts.
# docker-compose.yml
volumes:
nerd-fonts-data:
name: nerd-fonts-v3.2.1
services:
font-init:
image: debian:bookworm-slim
volumes:
- nerd-fonts-data:/fonts
command: >
sh -c '
if [ ! -f /fonts/.initialized ]; then
apt-get update -qq && apt-get install -y -qq curl tar fontconfig > /dev/null;
curl -fsSL https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/JetBrainsMono.tar.xz \
| tar -xJ -C /fonts;
fc-cache -f /fonts;
touch /fonts/.initialized;
fi
'
devenv:
image: your-dev-image
depends_on:
font-init:
condition: service_completed_successfully
volumes:
- nerd-fonts-data:/usr/local/share/fonts/nerd-fonts:ro
environment:
FONTCONFIG_PATH: /usr/local/share/fonts/nerd-fonts
Name the volume with the version string (nerd-fonts-v3.2.1) so that bumping the version in the name triggers Docker to create a fresh volume rather than reusing a stale one with old files.
Fontconfig Deep-Dive
Fontconfig is the font selection layer on Linux. Understanding its priority model is essential for troubleshooting and for building correct fallback chains in multi-language environments.
Fontconfig resolves font requests through a chain of configuration files loaded in this order: /etc/fonts/fonts.conf (system base), /etc/fonts/conf.d/*.conf (system snippets in alphabetical order), ~/.config/fontconfig/fonts.conf (user override). Files in conf.d are named with a numeric prefix (10-*, 20-*, 45-*, 70-*) that controls load order. Lower numbers run earlier. The final resolved font for a request is the one that passes all <test> conditions in the winning <match> block.
To see what Fontconfig actually selects for a given family name and style, use fc-match with the --verbose flag:
# What does Fontconfig actually return for "monospace"?
fc-match --verbose monospace
# Does it find the Nerd Font variant specifically?
fc-match --verbose "JetBrainsMono Nerd Font Mono"
# Check all installed variants of a family
fc-list | grep -i jetbrains
Per-application font substitution is configured in ~/.config/fontconfig/fonts.conf using <match target="pattern"> with a binding of strong or weak. A strong substitution replaces the requested font completely. A weak substitution only applies when no installed font matches the request at all. For forcing a Nerd Font wherever an application requests a generic monospace font:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>JetBrainsMono Nerd Font Mono</string>
</edit>
</match>
</fontconfig>
The "box character" bug -- where certain Unicode block elements (U+2580-U+259F) render as empty rectangles instead of solid blocks -- usually means the terminal is using fontconfig to select a fallback font for those code points and the fallback does not have correct metrics. The fix is to add an explicit rule that prevents fallback for the block elements range by mapping those code points to the Nerd Font explicitly:
<match target="scan">
<test name="family">
<string>JetBrainsMono Nerd Font Mono</string>
</test>
<edit name="charset" mode="assign">
<charset>
<int>0x2580</int>
</charset>
</edit>
</match>
For emoji-to-monospace fallback chains -- where you want text emoji (like status indicators) to render from a color emoji font but code glyphs to render from the Nerd Font -- set up an explicit family list with priority ordering:
<alias>
<family>monospace</family>
<prefer>
<family>JetBrainsMono Nerd Font Mono</family>
<family>Noto Color Emoji</family>
<family>Symbols Nerd Font Mono</family>
</prefer>
</alias>
Run fc-cache -fv after any configuration change and verify with fc-match before assuming the change took effect. Fontconfig caches are persistent and stale cache is the most common reason a valid configuration appears not to work.
Powerline Deep-Dive: Custom Segments and tmux Status Bar
Powerline is the Python-based status bar and prompt system that Nerd Fonts was originally built to support. Most developers today use Starship or Oh My Posh instead of Powerline directly, but Powerline remains the reference implementation for understanding how segment separators work at the font level.
The Powerline symbols live in the E0A0-E0B3 range. E0B0 is the right-pointing solid triangle used as the main segment separator. E0B1 is the thin arrow variant. E0B2 is the left-pointing solid triangle (for right-side status bars). E0B3 is the thin left arrow. The "extra" symbols in E0C0-E0D4 add flame, ice, pixel, and other decorative separators used by Powerline-patched themes.
For custom Powerline segments in Python (actual Powerline, not Starship), a segment is a function in a Python module that returns a list of segment dictionaries:
# ~/.config/powerline/segments/custom.py
from powerline.segments import Segment, with_docstring
@with_docstring(Segment.requires_segment_info)
def git_dirty_count(pl, segment_info, show_count=True):
"""Return count of dirty files in the current git repo."""
import subprocess
try:
result = subprocess.run(
['git', 'diff', '--name-only'],
capture_output=True, text=True, timeout=2
)
count = len([l for l in result.stdout.strip().split('\n') if l])
if count == 0:
return None
return [{
'contents': f'\uf448 {count}', # nf-oct-diff U+F448
'highlight_groups': ['git:dirty', 'git'],
}]
except Exception:
return None
Register this segment in your Powerline theme JSON and it will display the count of dirty files with a Nerd Font glyph from the Octicons set.
For tmux status bar integration, the font consideration is that tmux renders its status bar using the terminal's font, not a separate font. If your terminal uses a Nerd Font, the tmux status bar inherits it. The configuration that matters is the tmux status-left and status-right strings, which need to embed the actual Unicode code points (or use shell expansion to resolve them):
# ~/.tmux.conf
# U+E0B0 = right-arrow Powerline separator
set -g status-left "#[fg=colour235,bg=colour148] \ue0b0 #S "
set -g status-right "#[fg=colour148,bg=colour235] %H:%M "
# Ensure 256-color and UTF-8
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",*256col*:Tc"
A common issue in tmux: icons display correctly in the shell prompt but not in the tmux status bar. This almost always means the terminal is not passing the TERM value correctly through the tmux session. Verify that tmux-256color is in your terminfo database (infocmp tmux-256color) and that your terminal is configured to use it.
Accessibility Variants and Low-Vision Options
Several Nerd Font families have characteristics that make them meaningful choices for developers with specific visual needs. This is rarely discussed but worth understanding if you are standardizing fonts across a team with diverse accessibility requirements.
OpenDyslexic is available as a Nerd Font patched variant. It uses a weighted baseline and unique letter shapes designed to reduce letter confusion for readers with dyslexia. The Nerd Font patch adds all standard glyph sets, so it works with all standard tooling. The trade-off is that the unconventional letterforms require adjustment time for developers who are accustomed to conventional monospace fonts.
For low-vision users who rely on high contrast and larger type sizes, the font selection criteria shift. At large sizes (18pt-24pt+), fonts with simpler letterforms and higher x-height perform better than fonts optimized for 12-14pt readability. Iosevka and Hack both have high x-height relative to cap height, which maintains readability at small sizes and degrades gracefully at large sizes. Both are available as Nerd Font variants.
Variable fonts are an emerging option for accessibility. A variable font with a weight axis lets the user adjust stroke weight without switching font files. Iosevka has variable font variants, though the Nerd Font patcher does not fully preserve variable axes -- the patched output is a static instance, not a variable font. Petronella Technology Group tracks this as an open issue in the upstream Nerd Fonts project and recommends static Iosevka instances (Light, Regular, SemiBold) as an interim approach for users who need weight flexibility.
The Symbols Only font (nerd-fonts.symbols-only on NixOS, or the NerdFontsSymbolsOnly download) is a useful accessibility tool: it contains only the icon glyphs, no base font. Fontconfig then uses it as a fallback for icon code points while using any base font the user prefers for text characters. This lets a developer use their preferred accessible base font (including system accessibility fonts) while still getting all Nerd Font icons in their tooling.
Low-Bandwidth and Embedded Scenarios
The full Nerd Font variants are 3-4 MB per weight per style. For embedded systems, thin containers, or environments where bandwidth is genuinely constrained, there are strategies to reduce this significantly.
The first and most impactful approach is using the Symbols Only font plus a small base font. Symbols Only is approximately 2 MB and contains just the icon glyphs. Pair it with a system monospace font (which is usually already installed) and fontconfig handles the fallback automatically. Total additional download: 2 MB instead of 4 MB, and you get icon rendering without patching any font.
The second approach is patching with a minimal glyph subset as described in the patcher section above. The combination of --powerline --powerlineextra --devicons --codicons produces fonts that are 60-70% smaller than --complete. For a single weight (Regular), this brings the file from roughly 3.5 MB down to 1.0-1.5 MB.
For IoT or embedded Linux scenarios where even 1 MB matters, consider a subset approach using a tool like pyftsubset (part of fonttools) after patching. Define the exact code points your application uses and subset to only those:
# Install fonttools
pip install fonttools brotli
# Subset to only the Powerline + specific Devicons code points you actually use
pyftsubset YourFont-Regular.patched.ttf \
--unicodes="U+0020-007E,U+E0A0-U+E0B3,U+E700-U+E7C5" \
--output-file=YourFont-Minimal.ttf \
--no-layout-closure
The code point ranges above cover ASCII plus Powerline symbols plus Devicons. Adjust the ranges to match your actual usage. A subset like this can produce files under 500 KB.
Enterprise Fleet Deployment
Pushing a standardized Nerd Font to a mixed-OS fleet of 50-500+ developer workstations requires coordination between MDM tooling and each OS's font installation mechanism.
On macOS, fonts installed to /Library/Fonts/ are available system-wide to all users. Jamf Pro can deploy font files as packages: create a standard macOS package (pkg) containing the font files and a postinstall script that runs atsutil databases -removeUser to flush the ATS font cache, then deploy via Jamf policy. The font appears in all applications after the next login.
On Windows, fonts installed to C:\Windows\Fonts\ are available system-wide. Intune can deploy fonts via Win32 app packages: bundle the font files in a zip, write an install script that copies them to the Fonts directory and calls Add-Font via the Shell COM object, then package with the Microsoft Win32 Content Prep Tool. Note that Windows treats font names differently from Linux: a font file named JetBrainsMonoNerdFontMono-Regular.ttf registers under the family name specified in the font's name table, which for Nerd Fonts v3 is JetBrainsMono Nerd Font Mono. Application configuration on Windows must reference this exact name.
On Linux with a configuration management tool (Ansible, Salt, Chef), the installation is straightforward but the cache step is critical. The fc-cache command must run as each user who will use the font, not just as root. An Ansible task to handle this:
- name: Install Nerd Font
ansible.builtin.copy:
src: "files/fonts/JetBrainsMono/"
dest: "/usr/local/share/fonts/nerd-fonts/"
owner: root
group: root
mode: '0644'
notify: rebuild font cache
- name: Rebuild font cache
ansible.builtin.command: fc-cache -f /usr/local/share/fonts/nerd-fonts
listen: rebuild font cache
For audit-friendly font provenance in regulated environments, document the exact release tag, SHA-256 hash of each font file, and the source URL. This matters when a security team asks whether software on developer workstations comes from verified sources. The Nerd Fonts GitHub releases page provides official downloads. Verify file integrity against the checksums published with each release before deploying to the fleet.
Kerning and Line-Height Tuning in Code Editors
Most developers accept the default line-height their editor calculates from the font metrics, but both VS Code and Neovim expose controls worth understanding.
In VS Code, editor.lineHeight accepts an absolute pixel value (if > 8) or a multiplier (if between 0 and 8). The default of 0 lets VS Code calculate from the font's built-in line metrics. For Nerd Fonts with icon glyphs, a common problem is that icons with tall ascenders clip against the line above when lineHeight is 0. Setting editor.lineHeight to 1.5 or an absolute value like 24 at 14pt gives icons room to breathe.
Letter spacing (editor.letterSpacing in VS Code) is measured in pixels and can be negative. For fonts like Iosevka that are deliberately narrow, slight positive letter spacing (0.5-1px) improves readability at larger display sizes. Do not apply letter spacing to fonts like JetBrains Mono that are already designed with calibrated spacing -- it tends to hurt rather than help.
In Neovim, line height is controlled via the GUI font string when using a GUI frontend like Neovide:
-- init.lua (Neovide)
vim.o.guifont = "JetBrainsMono Nerd Font Mono:h14:b"
vim.g.neovide_line_spacing = 4 -- pixels of additional spacing between lines
For terminal Neovim, line height is controlled by the terminal emulator. In Kitty, adjust_line_height accepts a percentage or pixel value. Wezterm uses line_height in wezterm.lua. These settings apply to all text in the terminal, not just Neovim, which is usually the right behavior.
Hint Table Customization for Subpixel Rendering
Font hinting is the set of instructions embedded in a font that tells the renderer how to align glyph outlines to the pixel grid. Good hinting matters most on non-HiDPI displays where a single pixel represents a meaningful portion of a character's stroke width.
Nerd Fonts inherit the hinting from their base fonts. JetBrains Mono has TrueType hinting optimized for Windows ClearType. Fira Code was designed with hinting for screen rendering across platforms. Iosevka has autohint applied via ttfautohint and produces consistent results across rendering environments.
Fontconfig controls hinting behavior through its configuration:
<match target="font">
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintslight</const> <!-- or hintmedium, hintfull -->
</edit>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="rgba" mode="assign">
<const>rgb</const> <!-- rgb, bgr, vrgb, vbgr, none -->
</edit>
<edit name="lcdfilter" mode="assign">
<const>lcddefault</const>
</edit>
</match>
The correct rgba value depends on your display's subpixel layout. Most modern LCD panels use horizontal RGB stripe layout, which means rgb. Vertical stripe panels use vrgb. BGR variants apply to panels with reversed stripe order (some older and budget displays). If you get the rgba value wrong, you will see colored fringing around character edges. On Wayland compositors with fractional scaling, hinting often looks worse with subpixel rendering enabled because the compositor renders to a buffer and then scales, which confuses subpixel alignment. In that case, use rgba none with antialias true and accept grayscale antialiasing.
Troubleshooting the Gnarly Cases
Emoji Vertical Misalignment
Emoji in Nerd Font environments often sit too high or too low relative to the text baseline. This is a metrics mismatch between the color emoji font (Noto Color Emoji, Apple Color Emoji) and the monospace Nerd Font. The fix is to configure the color emoji font as a fallback rather than a substitute, and to set its size relative to the Nerd Font using fontconfig's size test. There is no single correct adjustment -- it varies by display density and font combination. A starting point is to scale the emoji font to 0.8× the requested size in fontconfig rules and adjust from there.
Ligature Breakage After Updating Nerd Fonts
Ligature glyphs in FiraCode and JetBrains Mono are stored in the font's GSUB table as OpenType feature lookups. When the Nerd Fonts patcher merges glyph tables, it can occasionally corrupt GSUB table offsets or duplicate lookup indices. This manifests as specific ligatures stopping working after a patch, while others continue. The diagnostic is to test with the unpatched base font: if the ligature works in the unpatched font but not in the patched one, the patcher introduced the regression. The fix is to use a newer version of font-patcher, which often includes GSUB preservation fixes, or to use a pre-built release instead of patching locally.
Per-Application Font Overrides
Some applications ignore fontconfig entirely and use their own font selection (Firefox, LibreOffice, Java Swing apps). For these applications, set the Nerd Font directly in the application's own font preferences. Xresources-based terminal emulators use the *.font resource directive in ~/.Xresources and require xrdb -merge ~/.Xresources plus an application restart to pick up changes. GTK4 applications that use the system font setting will follow gsettings set org.gnome.desktop.interface monospace-font-name 'JetBrainsMono Nerd Font Mono 13'.
If you are setting up Nerd Fonts for the first time rather than optimizing an existing configuration, start with our Nerd Fonts install guide which covers platform installation, font selection, and basic terminal configuration. For AI-assisted development environments where font and tooling configuration is part of a larger workstation standardization effort, Petronella Technology Group's AI consulting services include developer environment standardization and toolchain auditing. See also our guide on Claude Code CLI setup and Neovim for AI development for the broader developer environment context.
Questions about standardizing developer tooling across a distributed team? Petronella Technology Group works with engineering organizations in Raleigh, NC and remotely to audit, standardize, and secure developer environments. Contact us at (919) 348-4912 or visit our contact page to discuss your specific requirements.