- 开发工具
- CLI
【免费下载链接】nerd-fonts
Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts: Hack, Source Code Pro, more. Glyph collections: Font Awesome, Material Design Icons, Octicons, & more
导读
本文以仓库中 patched-fonts/JetBrainsMono/Ligatures/ThinItalic/README.md 为骨架,系统讲解 Nerd Fonts 项目对 JetBrains Mono(ThinItalic 等 16 个字重/样式)的修补产物该如何选择与使用。读完本文,你将掌握三条核心技术判断力:第一,在Nerd Font(NF)、Nerd Font Mono(NFM)、Nerd Font Propo(NFP)三种家族之间如何按终端、GUI、演示场景做出正确选择;第二,连字(Ligatures)在修补字体中的保留策略与关闭方法;第三,从"直接下载已修补字体"与"使用 font-patcher 自行修补"两条路径获取目标字体的完整流程,并理解背后的源码实现。
一、JetBrains Mono 与 Nerd Fonts 的修补背景
JetBrains Mono 是一款专为开发者设计的等宽字体(typeface made for developers),本仓库当前收录的上游版本为2.304。Nerd Fonts 项目的职责是将其与超过 3600 个图标字形(来自 Font Awesome、Material Design Icons、Octicons 等 14 套图标集)合并,形成开箱即用的"代码图标字体"。
在 patched-fonts/JetBrainsMono 目录下,修补产物按"是否保留连字"分为两个大分支:
- Ligatures:保留原字体的连字特性;
- NoLigatures:显式移除连字。
每个分支下再按字重与样式细分,如Thin、ThinItalic、Bold、SemiBoldItalic等共 16 种组合,本文关联文档即位于Ligatures/ThinItalic/子目录。需要说明的是,该子目录本身只存放 README.md 与 OFL.txt 说明文件,对应样式的字体文件统一放在父目录 Ligatures 顶层,以JetBrainsMonoNerdFont-ThinItalic.ttf、JetBrainsMonoNerdFontMono-ThinItalic.ttf、JetBrainsMonoNerdFontPropo-ThinItalic.ttf命名,分别对应下文介绍的三种家族。
二、三大家族如何选择:NF / NFM / NFP(TL;DR)
文档给出的核心决策逻辑是一条 TL;DR 速查,适用于 JetBrains Mono 以及仓库内所有修补字体:
- 受限于等宽字体(例如你的终端对宽度有严格要求):选择名称带
Nerd Font Mono(缩写NFM)的字体; - 想要更大的图标(图标宽度通常约为普通字母的 1.5 倍):选择不带
Mono的Nerd Font(缩写NF),绝大多数终端支持这种用法,但"能否完美显示取决于你的终端"(ymmv); - 工作在比例(非等宽)场景(如 GUI 控件、编辑演示文稿):选择
Nerd Font Propo(缩写NFP)。
三条规则可归纳为下表:
| 家族 | 名称特征 | 缩写 | 适用场景 |
|---|---|---|---|
| Nerd Font | 名称中无 Mono/Propo | NF | 终端中希望图标更大、视觉更醒目 |
| Nerd Font Mono | 名称含 Mono | NFM | 严格等宽环境,图标与字符同宽 |
| Nerd Font Propo | 名称含 Propo | NFP | GUI、演示等比例文本环境 |
以 ThinItalic 样式为例,三个文件恰好一一对应上述家族:JetBrainsMonoNerdFont-ThinItalic.ttf(NF)、JetBrainsMonoNerdFontMono-ThinItalic.ttf(NFM)、JetBrainsMonoNerdFontPropo-ThinItalic.ttf(NFP)。
三、连字(Ligatures)专题:保留策略、版本变化与关闭方式
3.1 修补字体的连字保留策略
文档明确指出:修补后的字体中连字一般都会被保留(Ligatures are generally preserved in the patched fonts)。这意味着 JetBrains Mono 引以为傲的编程连字(如=>、!=、->等符号组合的合成字形)在 Nerd Fonts 修补后依然可用。
但需要注意一个版本演进事实:Nerd Fontsv2.0.0时代的Nerd Font Mono字体不含连字,这一限制从v2.1.0起被移除。因此当前仓库中的Nerd Font Mono(NFM)字体同样保留连字,选择 NFM 不再意味着牺牲连字体验。
3.2 不想用连字怎么办
如果终端支持连字(ligature-aware terminal)但你不想启用,通常可以直接在终端设置中关闭连字选项。此外,仓库还提供了彻底的解决方案——NoLigatures 分支。该分支与 Ligatures 分支保持相同的 16 种字重/样式结构,连字在修补阶段就被移除,适合连字影响阅读或布局的场景。
3.3 连字移除的源码实现
从源码层面看,"NoLigatures"并非人工整理的产物,而是由 font-patcher 的remove_ligatures()方法(font-patcher#L832-L857)依据配置文件自动完成。其工作流程为:
- 读取配置文件中
[Subtables]段的ligatures列表(JSON 格式); - 列表项既可以是简单的子表名字符串,也可以是
[正则, 子表名]复合条目;复合条目中的正则用于匹配字体全名(fullname),且可用!前缀取反(即"正则不匹配时才移除"); - 对每个命中项调用 FontForge 的
removeLookupSubtable(subtable)移除对应连字子表。
该方法的开关正是命令行参数--removeligs(别名--removeligatures,见 font-patcher#L2276),需要配合--configfile指向的配置文件使用。仓库内置的示例配置 src/config.sample.cfg 展示了完整的连字移除规则,例如移除'dlig' Discretionary Ligatures相关子表,以及通过["!Italic", "'liga' Standard Ligatures in Latin lookup 6 subtable"]实现在非 Italic 字体上移除标准连字——这正是 NoLigatures 分支字体的生成依据之一。
四、获取方式一:直接下载已修补字体
文档提供两条获取路径,第一条是零成本的"拿来即用":
- 稳定版本:从 Nerd Fonts 的发布页面下载打包好的字体包。JetBrains Mono 对应的发布产物以
JetBrainsMono.zip与体积更小的JetBrainsMono.tar.xz两种格式提供,解压后即可按需选用 ThinItalic 等样式; - 开发版本:直接从本仓库 patched-fonts/JetBrainsMono/Ligatures 等目录下载对应文件。这种方式的优点是可以拿到尚未打发布标签的最新修补结果,但也意味着字体可能随上游与脚本变更而变动。
下载后,在 Linux 环境可将.ttf文件复制到字体目录(如~/.local/share/fonts)并执行fc-cache -fv刷新字体缓存;Windows 与 macOS 用户可分别通过右键"安装"或双击字体文件完成安装。仓库根目录同时提供了 install.sh 与 install.ps1 脚本,供需要批量安装多个字体家族时参考。
五、获取方式二:使用 font-patcher 自行修补
5.1 为什么需要自己修补
官方预打包字体面向通用场景,图标集是固定的。如果你希望裁剪图标集合以减小字体体积、只保留特定图标集,或者需要针对特殊字重/样式做定制,就需要第二条路径——使用项目核心工具 font-patcher 对原始字体自行修补。
5.2 配置文件与关键参数
src/config.sample.cfg 是修补流程的权威示例,采用 INI 风格(部分键值为 JSON),其中包含两个对理解修补行为至关重要的设置:
[Config] commandline: --removeligatures --makegroups 2 abort-mono-patch: True [Subtables] ligatures: [ "'dlig' Discretionary Ligatures lookup 12 contextual 0", ["!Italic", "'liga' Standard Ligatures in Latin lookup 6 subtable"] ]commandline中的--removeligatures即上文连字移除开关;--makegroups 2则指定字体家族命名方式(见 font-patcher#L2227 的参数定义,可选范围 -1 至 6,默认 1)。从 font-patcher#L795-L810 的命名逻辑可以推断,makegroups的不同取值会切换"项目名全称 + 变体全称"与"项目名缩写 + 变体缩写"等命名策略,进而影响最终生成的文件名;[Subtables]段的ligatures列表为remove_ligatures()方法提供移除规则,支持字符串与[正则, 子表名]复合条目两种形式,这是 src/config.sample.cfg 与 font-patcher#L840-L857 直接对应的实现契约;abort-mono-patch: True作为配置示例中的开关项出现,用于控制特定目标下的修补流程。
此外,font-patcher#L254-L255 展示了另一项与家族划分相关的底层处理:当目标为等宽字体时,脚本会将 Panose 的 Proportion 值设置为9(Monospaced)。这正是Nerd Font Mono家族字体在系统层面被识别为等宽字体的机制之一,也解释了为何 NFM 字体能在严格要求等宽的终端中正常工作。
5.3 修补流程示意
从源码结构看,一次典型的自修补流程是:准备原始字体文件(上游.ttf/.otf)→ 通过命令行指定输出变体(NF / NFM / NFP 对应不同参数与命名规则)→ 按需传入配置文件以启用连字移除或图标裁剪 → 生成带 Nerd Fonts 版本号与图标字形的修补字体。完整的参数清单可在 font-patcher#L2227-L2276 附近的参数解析区查看,--help亦可输出全部选项说明。
六、图标集构成一览
无论走哪条获取路径,JetBrains Mono 修补字体携带的图标集是一致的。根据 patched-fonts/JetBrainsMono/README.md 的Icon sets表格,当前版本集成了 14 套图标来源:
| 图标集 | 版本 |
|---|---|
| Codicons(VS Code 图标) | 0.0.45 |
| Devicons | 2.17.0 |
| extraglyphs(源自 Hack) | — |
| Font Awesome | 6.5.1 |
| Font Awesome Extension | 0.0.3 |
| Font Logos | 1.3.0 |
| MaterialDesign | 2022-10-06 |
| Octicons | 18.3.0 |
| Seti and original | 0.8.1 |
| Pomicons | 1.001 |
| Powerline Extra | 1.200 |
| Powerline Symbols | 1.000(约 2013) |
| Power Symbols IEC | 2015-02 |
| Weather Icons | 2.0.10 |
这意味着选中的 NF / NFM / NFP 字体都同时具备开发工具、版本控制、文件类型、天气等多领域图标能力,覆盖了绝大多数终端主题与状态栏插件的图标需求。
七、许可证与 Reserved Font Name 提示
JetBrains Mono 修补字体的许可遵循上游 SIL Open Font License(各样式目录均附有 OFL.txt)。仓库 src/readme-rfn-addendum.md 进一步提示了 SIL 协议中的Reserved Font Name(保留字体名)机制:未经版权持有者书面许可,修改版字体不得使用保留字体名;其核心目的在于避免命名冲突、保护原作者、减少支持负担并鼓励衍生。在自行修补并分发字体时,请保留原始命名约定与许可声明,避免触及这一约束。
八、小结
围绕 JetBrains Mono ThinItalic 这一具体样式,Nerd Fonts 给出了清晰的三层决策框架:场景定家族(终端等宽选 NFM、大图标选 NF、比例环境选 NFP)、连字可控(默认保留,可终端关闭或选用 NoLigatures 分支,底层由 font-patcher 的remove_ligatures()与 src/config.sample.cfg 驱动)、获取双路径(发布包/仓库目录直接下载,或借助 font-patcher 按需定制)。理解这三层之后,你在任何终端、编辑器或演示工具中都能快速锁定正确的字体文件。
- 开发工具
- CLI
【免费下载链接】nerd-fonts
Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts: Hack, Source Code Pro, more. Glyph collections: Font Awesome, Material Design Icons, Octicons, & more
相关推荐
Recordly完整指南:开源录屏神器如何一键生成专业级Demo视频
Recordly完整指南:开源录屏神器如何一键生成专业级Demo视频 Recordly 是一款免费开源的录屏神器(AGPL 3.0 许可),面向新手和普通用户,
开发工具CLIGatsby 页面创建与修改实战指南:createPages、onCreatePage 与 File System Route API 全解析
Gatsby 页面创建与修改实战指南:createPages、onCreatePage 与 File System Route API 全解析 本篇技术指南系统
开发工具CLIFantasque Sans Mono Nerd Font 补丁版使用指南:NF / NFM / NFP 字体家族选择与连字特性详解
Fantasque Sans Mono Nerd Font 补丁版使用指南:NF / NFM / NFP 字体家族选择与连字特性详解 导读 本文以 Nerd F
开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考