- 开发工具
- 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
本文基于仓库内 src/unpatched-fonts/InconsolataGo/README.md 展开。InconsolataGo 是经典编程字体 Inconsolata 的一个实验性变体,核心差异在于将引号改为直引号(straight quotes)。文章将完整说明该字体的版本、许可、等宽特性,并深入讲解它在 Nerd Fonts 项目中的补丁产物(Nerd Font / Nerd Font Mono / Nerd Font Propo 三种变体)、内置图标集,以及"直接下载补丁字体"与"使用 font-patcher 自行补丁"两种实战路径。读完你既能弄清 InconsolataGo 的来龙去脉,也能立刻上手在终端、编辑器与 GUI 场景中正确选用与安装它。
InconsolataGo 是什么:Inconsolata 的直引号变体
原文档对 InconsolataGo 的定义非常精炼:Inconsolata with straight quotes——即"带直引号的 Inconsolata"。
Inconsolata 是由 Raph Levien 设计的知名等宽编程字体,长期用于代码编辑与终端场景。上游在发布说明中给出了 InconsolataGo 的来历(该段话也原样保留在 src/unpatched-fonts/InconsolataGo/README.md 中):
我在 inconsolata 目录里还有一个实验性版本(暂定名为 InconsolataGo),特点是使用直引号(straight quotes)。
也就是说,InconsolataGo 并不是一个全新的字体设计,而是对 Inconsolata 的字符集做了一处针对性调整:将原字体中的引号字形替换为直引号。对于追求引号字形一致性的代码排版场景(例如在源代码中强调'与"的字面形态、避免弯引号被误读为特殊字符),这种变体往往更受开发者青睐。
仓库对该字体的描述同样简洁而准确:bin/scripts/lib/fonts.json#L559-L573 中记录其描述为"Inconsolata with straight quotes",与文档完全一致。
版本、文件构成与等宽属性
原文档末尾标注了版本号:Version: 1.013。这一版本号在仓库元数据中也有印证:bin/scripts/lib/fonts.json#L559-L573 中"version": "1.013"。
在仓库的 src/unpatched-fonts/InconsolataGo/ 目录下,保存着上游未补丁的原始字体文件:
| 文件 | 说明 |
|---|---|
InconsolataGo-Regular.ttf | 常规字重 TTF 字体 |
InconsolataGo-Bold.ttf | 粗体 TTF 字体 |
OFL.txt | SIL Open Font License 1.1 许可全文 |
README.md | 本文所依据的上游说明文档 |
从 bin/scripts/lib/fonts.json#L559-L573 的元数据还可以确认几个关键属性:
"isMonospaced": true:InconsolataGo 是等宽(monospaced)字体,天然适合终端、代码编辑器等固定网格排版场景;"linkPreviewFont": "inconsolata-go"与"caskName": "inconsolata-go":项目在预览与 Homebrew Cask 安装场景中使用inconsolata-go作为标识;"repoRelease": true:该字体随仓库 Release 一起发布补丁包;"imagePreviewFont": "InconsolataGo Nerd Font":预览图使用补丁后的字体渲染。
许可协议:SIL OFL 1.1 与无保留字体名(no RFN)
InconsolataGo 的许可是SIL Open Font License 1.1,全文见 src/unpatched-fonts/InconsolataGo/OFL.txt,版权声明为Copyright 2006 The Inconsolata Project Authors。OFL 允许字体被自由使用、研究、修改与再分发,只要派生作品继续遵循同一许可证、且不单独售卖字体本身即可。
对 Nerd Fonts 项目而言,更关键的一点体现在 bin/scripts/lib/fonts.json#L559-L573 的元数据中:
"licenseId": "OFL-1.1-no-RFN""RFN": false
RFN即 Reserved Font Name(保留字体名)。OFL 1.1 第 3 条规定:除非获得原作者明确书面许可,否则"修改版本"不得使用保留字体名。InconsolataGo 标注为RFN: false,意味着上游未声明保留字体名,因此 Nerd Fonts 可以合法地将补丁后的字体重命名为InconsolataGo Nerd Font家族而无需额外授权。这也是仓库能够对全部字体统一执行"原家族名 CamelCasing + 去除空白 + 追加Nerd Font"命名规则(见 readme.md#L476-L477)的前提之一。
此外,项目还在 license-audit.md 中对该字体的许可情况做了登记审计,感兴趣可进一步查阅。
补丁产物:三种字体变体与其适用场景
Nerd Fonts 使用 font-patcher 将图标字形注入 InconsolataGo 后,在 patched-fonts/InconsolataGo/ 目录下产出三类文件:
| 变体 | 文件前缀 | 图标宽度 | 适用场景 |
|---|---|---|---|
| Nerd Font(NF) | InconsolataGoNerdFont-* | 双宽(double-width),图标约 1.5 个常规字符宽 | 大多数终端与编辑器的默认选择("ymmv",效果因环境而异) |
| Nerd Font Mono(NFM) | InconsolataGoNerdFontMono-* | 单宽(single-width),等宽 | 被限制使用等宽字体的场景,如某些终端 |
| Nerd Font Propo(NFP) | InconsolataGoNerdFontPropo-* | 比例宽度(proportional) | GUI 元素、演示文稿等比例排版上下文 |
每种变体都包含-Regular与-Bold两个字重,例如InconsolataGoNerdFont-Regular.ttf、InconsolataGoNerdFontMono-Bold.ttf、InconsolataGoNerdFontPropo-Regular.ttf。此外 patched-fonts/InconsolataGo/Bold/ 与 patched-fonts/InconsolataGo/Regular/ 两个子目录按字重组织,同样各含一份许可与说明文件。
快速选择的 TL;DR(源自 patched-fonts/InconsolataGo/README.md):
- 被终端等环境限制为等宽字体时 → 选带
Nerd Font Mono(NFM)的字体; - 想要更大的图标(通常约 1.5 个常规字符宽)→ 选不带
Mono的Nerd Font(NF),多数终端支持,但效果因环境而异; - 在比例排版上下文(GUI 组件、演示文稿等)中工作 → 选
Nerd Font Propo(NFP)。
关于连字(Ligatures):补丁字体一般会保留原有连字。需要注意,Nerd Fontsv2.0.0曾在Nerd Font Mono字体中去掉连字,这一处理在v2.1.0起已取消;如果你的终端支持连字却不想启用,通常可以在终端设置里关闭连字功能。
补丁字体内置的图标集
补丁后的 InconsolataGo 注入了 Nerd Fonts 的图标字形集合。patched-fonts/InconsolataGo/README.md 的 "Icon sets" 表格完整列出了各图标集的来源、版本与许可,此处继承并整理如下("上游项目"列为各图标集对应的原始项目名称):
| 图标集名称 | 上游项目 | 版本 | 许可 |
|---|---|---|---|
| Codicons | 微软 VS Code Codicons | 0.0.45 | CC BY 4.0 |
| Devicons | devicons | 2.17.0 | MIT |
| extraglyphs | Hack(source-foundry) | - | MIT |
| Font Awesome | Font Awesome | 6.5.1 | CC BY 4.0 |
| Font Awesome Extension | font-awesome-extension | 0.0.3 | MIT |
| Font Logos | font-logos | 1.3.0 | unlicensed |
| MaterialDesign | Material Design Icons | Oct 6, 2022 | Apache 2.0 |
| Octicons | primer/octicons | 18.3.0 | MIT |
| Seti and original | seti-ui | 0.8.1 | MIT |
| Pomicons | pomicons | 1.001 | OFL 1.1 RFN |
| Powerline Extra | powerline-extra-symbols | 1.200 | MIT |
| Powerline Symbols | powerline | 1.000(约 2013) | MIT |
| Power Symbols IEC | Unicode(jloughry) | Feb 2015 | MIT |
| Weather Icons | weather-icons | 2.0.10(1.100) | OFL 1.1 |
这些图标集在 readme.md#L527-L538 中对应着font-patcher的各类符号开关(见下文),你可以按需裁剪。
获取方式一:直接下载已补丁字体
如果你的目标只是"开箱即用",首选稳定版:
- 从项目的Release 页面下载
InconsolataGo.zip或InconsolataGo.tar.xz(后者体积更小); - 或者直接使用本仓库 patched-fonts/InconsolataGo/ 目录中的开发版文件。
拿到.ttf后即可安装到系统。仓库根目录还提供了 install.sh(Linux/macOS)与 install.ps1(Windows)两个安装脚本,可将补丁字体批量安装到系统字体目录;另外 10-nerd-font-symbols.conf 是 fontconfig 配置,其中包含InconsolataGo补丁字体族的符号回退条目,便于 Linux 桌面环境下正确渲染图标字形。
获取方式二:使用 font-patcher 自行补丁
如果你需要定制(例如只注入部分图标集以缩小字体体积、调整输出格式或字重组合),可以基于仓库中的未补丁字体自行打补丁。原始字体就在 src/unpatched-fonts/InconsolataGo/ 目录下。
前置依赖(见 readme.md#L425-L433):FontForge、Python 3、python-fontforge与argparse包。FontForge 可通过系统包管理器安装,macOS 可用brew install fontforge,或下载官方 AppImage。
推荐用法(FontForge 脚本方式):
fontforge -script font-patcher PATH_TO_FONT直接调用(如果环境允许):
./font-patcher PATH_TO_FONT针对 InconsolataGo 的示例:
# 全量图标(等价于发布版补丁字体) ./font-patcher src/unpatched-fonts/InconsolataGo/InconsolataGo-Regular.ttf --complete # 只注入常用图标集,缩小字体体积 ./font-patcher src/unpatched-fonts/InconsolataGo/InconsolataGo-Regular.ttf --fontawesome --octicons --pomicons # 生成等宽(单宽图标)变体 ./font-patcher src/unpatched-fonts/InconsolataGo/InconsolataGo-Regular.ttf --mono --quiet # 指定输出目录与文件格式 ./font-patcher src/unpatched-fonts/InconsolataGo/InconsolataGo-Bold.ttf -out /tmp --extension otfFontForge AppImage 用法(注意:所有路径必须使用绝对路径,且必须显式指定输出目录):
./FontForge.AppImage -script $PWD/font-patcher $PWD/InconsolataGo-Regular.ttf -out /tmpDocker 用法(readme.md#L448-L473):
# 默认并行任务 docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z nerdfonts/patcher [OPTIONS] # 单进程(较慢) docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z -e "PN=1" nerdfonts/patcher [OPTIONS] # 指定并行任务数为 10 docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z -e "PN=10" nerdfonts/patcher [OPTIONS]常用参数速查(完整列表见 readme.md#L481-L538):
| 参数 | 简写 | 作用 |
|---|---|---|
--mono | -s | 生成等宽字体,所有字形单宽(隐含--single-width-glyphs),对应 Nerd Font Mono |
--single-width-glyphs | - | 图标生成单宽而非默认的双宽(Nerd Font Mono 的底层实现) |
--variable-width-glyphs | - | 不调整 advance width(无 overhang),对应 Nerd Font Propo |
--complete | -c | 注入全部可用图标集 |
--codicons/--fontawesome/--fontawesomeext/--fontlogos/--material/--octicons/--pomicons/--powerline/--powerlineextra/--powersymbols/--weather | - | 按需注入上文图标集表格中对应的图标集 |
--outputdir | -out | 指定输出目录 |
--extension | -ext | 指定输出文件格式(如 ttf、otf) |
--careful | - | 检测到已有字形时不覆盖 |
--quiet | -q | 不输出冗余信息 |
--debug | - | 调试级别 0/1/2/3 |
补丁后命名规则:生成字体的家族名会将原家族名 CamelCasing、去除空白并追加Nerd Font后缀(readme.md#L476-L477)。对于 InconsolataGo,家族名即为InconsolataGo Nerd Font——这与 bin/scripts/lib/fonts.json#L566 中的"imagePreviewFont": "InconsolataGo Nerd Font"完全对应。
小结
InconsolataGo 是"直引号版 Inconsolata"这一精准定位的字体变体,版本 1.013、SIL OFL 1.1 许可且无保留字体名,因此得以被 Nerd Fonts 合法重命名并注入 14 套图标集。无论你是想直接下载 patched-fonts/InconsolataGo/ 中的现成变体(NF / NFM / NFP 按场景三选一),还是基于 src/unpatched-fonts/InconsolataGo/ 的原始字体用 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
相关推荐
Nerd Fonts 系列:InconsolataGo——直引号版 Inconsolata 的三种补丁变体与自打补丁实战
Nerd Fonts 系列:InconsolataGo——直引号版 Inconsolata 的三种补丁变体与自打补丁实战 InconsolataGo 是 Ner
开发工具CLINerd Fonts 中的 InconsolataGo:直引号版 Inconsolata 补丁字体使用与定制指南
Nerd Fonts 中的 InconsolataGo:直引号版 Inconsolata 补丁字体使用与定制指南 InconsolataGo 是经典等宽编程字体
开发工具CLIJetBrains Mono(NoLigatures 变体)Nerd Fonts 补丁字体选型与自打补丁全指南
JetBrains Mono(NoLigatures 变体)Nerd Fonts 补丁字体选型与自打补丁全指南 JetBrains Mono 是 JetBrai
开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考