Nerd Fonts 中 Overpass 字体补丁指南:Mono Bold 变体的图标集成与使用详解
Nerd Fonts 中 Overpass 字体补丁指南:Mono Bold 变体的图标集成与使用详解
导读
本文聚焦 Nerd Fonts 仓库中 Overpass 字体家族 的补丁实现,特别是 Overpass Mono Bold 变体(patched-fonts/Overpass/Mono/Bold/)的图标集成原理与选用方法。Overpass 是一款受 Highway Gothic 路牌字体启发的开源字体家族(见 fonts.json 中的描述 "An open source font family inspired by Highway Gothic"),本仓库将其与 13 组编程/开发图标集合并,生成 Nerd Font 系列产物。读者读完本文后,将掌握:Overpass Mono 三个命名变体(NF / NFM / NFP)的区别与选择依据、补丁字体文件的目录组织方式,以及 ligature 移除的配置原理。
Overpass 与 Nerd Fonts:字体补丁的产物形态
字体家族背景
Overpass 是一款开源 web 字体家族,当前仓库打补丁的版本为 3.0.5(见 Overpass 上游信息 与 fonts.json)。在 Nerd Fonts 仓库中,它被归类为等宽字体("isMonospaced": true),采用 OFL-1.1-no-RFN 或 LGPL-2.1-only 双许可(见 fonts.json)。
打补丁后的目录结构
仓库将 Overpass 分为两条打补丁主线(详见 patched-fonts/Overpass/):
- Mono/:等宽主线,包含 Bold、Light、Regular、Semi-Bold 四种字重;
- Non-Mono/:非等宽主线,包含 Thin 到 Heavy 共 16 种字重/字型组合。
每个字重目录下会同时生成三种变体文件。以 Bold 字重为例(patched-fonts/Overpass/Mono/Bold/):
| 文件 | 变体 | 典型应用场景 |
|---|---|---|
OverpassMNerdFont-Bold.otf |
Nerd Font(NF) |
需要更宽大图标(约 1.5 个常规字母宽度)的场景,多数终端支持 |
OverpassMNerdFontMono-Bold.otf |
Nerd Font Mono(NFM) |
受等宽限制的终端、编辑器,图标为单倍宽 |
OverpassMNerdFontPropo-Bold.otf |
Nerd Font Propo(NFP) |
比例字体场景:GUI 元素、演示文稿等 |
注意:Non-Mono 主线中,Bold 等字重目录因等宽补丁被中止(
abort-mono-patch: True),只生成 NF 与 NFP 两种文件(见 src/unpatched-fonts/Overpass/Non-Mono/config.cfg),这是等比字体不适合强行等宽化的设计选择。
三种变体的选择原则
原文档给出的选择建议可归纳为三条 TL;DR 规则(详见 patched-fonts/Overpass/Mono/Bold/README.md):
- 终端等宽受限场景:选择带
Nerd Font Mono(缩写 NFM)的字体; - 希望获得更大图标(通常约 1.5 个常规字母宽度):选择不带
Mono的Nerd Font(缩写 NF),大多数终端支持,但具体效果因终端而异(原文 "ymmv"); - 比例排版场景(GUI 元素、演示文稿编辑):选择
Nerd Font Propo(缩写 NFP)。
这些命名变体直接对应 font-patcher 的两个核心参数(见 font-patcher):
--mono(-s):生成等宽字体,已有和新增字形均为单倍宽,隐含--single-width-glyphs;--variable-width-glyphs:不调整字宽(无 "overhang"),对应 Propo 变体。
由此可以推断,同一字重目录下三种文件源自同一原始字体(src/unpatched-fonts/Overpass/Mono/Bold/overpass-mono-bold.otf),仅因打补丁时传入的参数不同而产出不同变体。
Ligature(连字)处理与配置原理
补丁产物的连字保留
原文档明确说明:补丁字体中通常保留连字。Nerd Fonts v2.0.0 时代的 Nerd Font Mono 字体不含连字,该限制已在 v2.1.0 中移除;如果你使用支持连字的终端又不希望渲染连字,通常可以在终端设置中关闭(见 patched-fonts/Overpass/Mono/Bold/README.md)。
Overpass 的特殊连字处理
Overpass 上游的 fi、fl、ldot 连字在补丁时被移除,因为它们在等宽化后仅映射到一个 advance width(见 README 第 7 行)。这一行为的实现依据在配置文件中:Mono 主线的 config.cfg 指定了 --removeligatures --makegroups 2,并在 [Subtables] 中列出需要移除的连字替换查找表 "Ligature Substitution lookup 23 subtable"。
配置文件如何驱动 font-patcher
font-patcher 使用 INI 风格配置文件(部分键为 JSON 值),通过 --configfile 参数加载(见 font-patcher)。加载后,配置中的 commandline 值会与字体路径拼接后重新解析参数,从而注入 --removeligatures 等额外选项。其中:
--removeligatures(别名--removeligs)要求同时提供--configfile,用于移除配置文件中指定的连字(见 font-patcher);--makegroups 2控制补丁字体的命名方式,取值 0 表示关闭重命名,2 表示使用HugoSansMono Nerd Font ExtCn Light Italic式的简化字重名风格(见 font-patcher);<a href="https://link.gitcode.com/i/2cda3ba0f8535248ce6ef37504fa9dad" target="_blank">Subtables]段的ligatures列表既可以是简单字符串(要移除的 subtable 名),也可以是["正则", "subtable 名"]形式的二元组,正则可用!前缀取反(见 [src/config.sample.cfg 中的注释说明)。
因此,如果你希望基于 Overpass 自行打补丁并保留/移除特定连字,只需在配置文件中调整 ligatures 列表即可。
获取 Overpass Nerd Font 的两种方式
原文档给出两种获取途径(详见 patched-fonts/Overpass/Mono/Bold/README.md):
方式一:直接下载已补丁字体
- 稳定版:从 release 页面下载字体包,Overpass 专属包为
Overpass.zip或体积更小的Overpass.tar.xz; - 开发版:直接从本仓库的
patched-fonts/Overpass/目录按需下载对应字重/变体文件。
方式二:自行打补丁
使用仓库根目录的 font-patcher 脚本对 src/unpatched-fonts/Overpass/ 下的原始字体执行补丁,可通过参数控制符号集大小(例如不为缩小字体体积而集成全部符号)。基本用法示例:
# 生成带完整符号集的 Overpass Mono Bold 等宽补丁字体
./font-patcher --complete --mono src/unpatched-fonts/Overpass/Mono/Bold/overpass-mono-bold.otf
其中 --complete(-c)会一次性启用 Codicons、Font Awesome、Material Design、Octicons、Powerline 等全部符号组(见 font-patcher)。
内置图标集一览
打补丁后的 Overpass 字体内置了 13 组图标集,原文档以表格列出其上游来源、版本与许可证(见 patched-fonts/Overpass/Mono/Bold/README.md):
| 图标集 | 版本 | 许可证 |
|---|---|---|
| Codicons | 0.0.45 | CC BY 4.0 |
| Devicons | 2.17.0 | MIT |
| extraglyphs(源自 Hack) | - | MIT |
| Font Awesome | 6.5.1 | CC BY 4.0 |
| Font Awesome Extension | 0.0.3 | MIT |
| Font Logos | 1.3.0 | unlicensed |
| MaterialDesign | Oct 6, 2022 | Apache 2.0 |
| Octicons | 18.3.0 | MIT |
| Seti and original | 0.8.1 | MIT |
| Pomicons | 1.001 | OFL 1.1 RFN |
| Powerline Extra | 1.200 | MIT |
| Powerline Symbols | 1.000 (ca 2013) | MIT |
| Power Symbols IEC | Feb 2015 | MIT |
| Weather Icons | 2.0.10 (1.100) | OFL 1.1 |
这些符号组的源码 SVG 位于 src/glyphs/ 目录,是打补丁时 --glyphdir 参数默认使用的字形来源(见 font-patcher)。由于各图标集许可证不同,集成后的字体按 Overpass 自身的许可(OFL-1.1-no-RFN 或 LGPL-2.1-only)分发,使用时需注意各符号集的许可约束。
常见问题与注意事项
- RFN(Reserved Font Name):Overpass 的 OFL 许可证声明
no-RFN(见 fonts.json),即上游未保留字体名称的专用权,补丁后可自由更名分发,这一信息也在原文档底部以[SIL-RFN]链接的形式给出。 - 等宽主线 vs 非等宽主线:需要严格等宽的开发环境(Vim、Emacs、VS Code 终端等)应优先选择 Mono 主线产物;图形界面、幻灯片等比例场景则用 Non-Mono 主线的 NF/NFP 变体。
- 版本一致性:当前仓库中 Overpass 版本锁定为 3.0.5,
src/unpatched-fonts/Overpass/与patched-fonts/Overpass/两处 README 声明的版本一致,补丁产物的版本信息与其上游原始字体保持一致(可通过 font-patcher 的--makegroups命名策略获得统一命名)。