- 开发工具
- 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 仓库中 patched-fonts/iA-Writer/Quattro/Italic/README.md 为核心,系统讲解 iA Writer 字体家族的来源、为何在 Nerd Fonts 中被重命名为 iMWriting(SIL OFL 保留字体名机制)、注入的图标集清单、NFM/NF/NFP 三种变体的选择原则,以及"下载现成补丁字体"与"使用 font-patcher 自行打补丁"两条完整实战路径。读完本文,你将能够正确挑选适合终端、GUI 与写作场景的 iA Writer 变体,并能用仓库内的 font-patcher 工具为任意 iA Writer 源字体定制专属 Nerd Fonts 补丁。
一、iA Writer 字体家族与 Quattro Italic 变体
iA Writer 是一套由 Information Architects(iA)发布的写作类字体,其设计理念围绕"为写作而生的完美字体"展开。Nerd Fonts 将其纳入补丁字体集合,并在仓库中同时提供了Duo、Mono、Quattro三个子家族。根据文档说明:
Duo and Quattro are almost monospaced but allow more room for some letters.
即Duo 与 Quattro 是"几乎等宽"的字体——它们保留了等宽字体的排版稳定性,同时为部分字母留出更宽的空间,兼顾了代码阅读与文章写作的视觉舒适度。而Mono 子家族则是严格的等宽字体。
Quattro 家族在仓库中提供四种字重/风格子目录,每个子目录内同时包含 Nerd Font(NF)与 Nerd Font Propo(NFP)两个变体:
| 风格 | 仓库目录 | 补丁后产物示例 |
|---|---|---|
| Regular | patched-fonts/iA-Writer/Quattro/Regular/ | iMWritingQuatNerdFont-Regular.ttf、iMWritingQuatNerdFontPropo-Regular.ttf |
| Italic | patched-fonts/iA-Writer/Quattro/Italic/ | iMWritingQuatNerdFont-Italic.ttf、iMWritingQuatNerdFontPropo-Italic.ttf |
| Bold | patched-fonts/iA-Writer/Quattro/Bold/ | iMWritingQuatNerdFont-Bold.ttf、iMWritingQuatNerdFontPropo-Bold.ttf |
| BoldItalic | patched-fonts/iA-Writer/Quattro/BoldItalic/ | iMWritingQuatNerdFont-BoldItalic.ttf、iMWritingQuatNerdFontPropo-BoldItalic.ttf |
本文聚焦的Quattro Italic目录位于 patched-fonts/iA-Writer/Quattro/Italic/,其中包含:
iMWritingQuatNerdFont-Italic.ttf—— Nerd Font(NF)变体,图标采用非等宽(约 1.5 个普通字母宽)布局;iMWritingQuatNerdFontPropo-Italic.ttf—— Nerd Font Propo(NFP)变体,适用于比例(proportional)排版场景;README.md与LICENSE.md—— 说明文档与 SIL Open Font License 1.1 许可证全文。
对应的未打补丁源字体位于 src/unpatched-fonts/iA-Writer/Quattro/Italic/iAWriterQuattroS-Italic.ttf,原始字体版本为Version 2.000(2018 年 12 月),且文档明确指出:
It is a modification of IBM's Plex font.
即 iA Writer 是IBM Plex 字体的衍生修改作品,这一点在 src/unpatched-fonts/iA-Writer/LICENSE.md 的版权声明中也有对应记录:"Based on IBM Plex Typeface, Copyright © 2017 IBM Corp. with Reserved Font Name 'Plex'"。
二、为什么叫 iMWriting 而不是 iA Writer?——SIL OFL 保留字体名机制
细心的用户会发现,仓库中补丁后的字体全部命名为iMWriting*(如iMWritingQuatNerdFont-Italic.ttf),而不是iAWriter*。这是 Nerd Fonts 为遵守SIL Open Font License(OFL)1.1的保留字体名(Reserved Font Name,RFN)机制而做的合规性改动。
OFL 1.1 第 3 条明确规定:
No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
(除非获得相应版权持有人的明确书面许可,任何修改版字体软件都不得使用保留字体名。该限制仅适用于呈现给用户的主要字体名称。)
在 iA Writer 的许可证 LICENSE.md 中可以看到,"iA Writer" 是 Information Architects Inc. 声明的保留字体名,同时"Plex" 是 IBM Corp. 声明的保留字体名。因此,Nerd Fonts 在制作补丁字体(属于 OFL 意义上的"修改版本")时,不能继续使用 "iA Writer" 作为主字体名,只能通过将 "iA" 替换为 "iM" 的方式生成衍生名称,以避开保留名冲突。
文档还归纳了 RFN 机制的四个主要设计目标:
- Avoid collisions(避免命名冲突):防止不同衍生版本共享同一名称造成混淆;
- Protect authors(保护作者):确保作者身份不会被衍生版本冒用;
- Minimize support(最小化维护负担):避免用户将衍生版本的 bug 反馈到原版项目;
- Encourage derivatives(鼓励衍生):在合规前提下允许自由修改与再分发。
这一合规逻辑在源码层面有直接印证:在 font-patcher 的名称清洗映射表中,存在明确的替换规则:
'iAWriter' : 'iMWriting', 'iA Writer' : 'iM Writing', 'iA-Writer' : 'iM-Writing',(对应 font-patcher)由此可见,命名转换不是人工手动完成的,而是由 font-patcher 在打补丁过程中自动执行的内置规则。
三、哪些图标集被注入到补丁字体中?
Nerd Fonts 的补丁字体并非只包含单一图标来源,而是聚合了多个上游开源图标项目。文档以表格形式列出了当前版本注入的完整图标集清单,现整理如下(上游来源以文字描述,许可证与版本信息保持不变):
| 图标集名称 | 上游来源 | 版本 | 许可证 |
|---|---|---|---|
| Codicons | Microsoft VS Code 官方图标集 | 0.0.45 | CC BY 4.0 |
| Devicons | Devicon 项目 | 2.17.0 | MIT |
| extraglyphs | Hack 项目附加字形 | - | MIT |
| Font Awesome | FortAwesome / 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 | Templarian / MaterialDesign-Font | 2022-10-06 | Apache 2.0 |
| Octicons | GitHub 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 电源符号项目 | 2015-02 | MIT |
| Weather Icons | weather-icons 项目 | 2.0.10(1.100) | OFL 1.1 |
这些图标集的矢量字形源文件存放在仓库的 src/glyphs/ 目录(含各图标集的 SVG 源与预编译字体),而 font-patcher 则通过命令行开关逐一控制是否注入某个图标集。这也解释了为什么同一款源字体可以打出"仅含部分图标"或"包含全部图标"的不同补丁版本。
四、如何选择:NFM / NF / NFP 三种变体
拿到补丁字体后,最常见的困惑是同一字体为什么有多个后缀不同的文件。文档给出了明确的 TL;DR 决策规则:
- Nerd Font Mono(NFM /
--mono):当你的使用环境被限制为等宽字体时(如终端、代码编辑器等),选择带Nerd Font Mono字样的变体; - Nerd Font(NF):当你希望图标更大(通常是普通字母宽度的 1.5 倍左右)时,选择不带
Mono的Nerd Font变体。大多数终端支持该方案,但效果因终端而异(文档用 "ymmv" 提示因人而异); - Nerd Font Propo(NFP /
--variable-width-glyphs):当你在比例排版上下文中工作时(如 GUI 界面元素、演示文稿排版),选择带Nerd Font Propo的变体。
在 font-patcher 的参数定义中,这三种模式分别对应:
--mono, -s # 创建等宽字体(隐含 --single-width-glyphs) --single-width-glyphs # 字形按单倍宽生成(Nerd Font Mono) --variable-width-glyphs # 不调整 advance width(无 "overhang")(Nerd Font Propo)(参见 font-patcher)
一个值得注意的仓库细节:在 patched-fonts/iA-Writer/Quattro/Italic/ 中,只有 NF 与 NFP 两个变体,没有 Mono 变体。这是因为 Quattro(以及 Duo)本身是"几乎等宽"而非严格等宽字体,为其生成 Mono 变体没有意义。仓库通过配置文件的abort-mono-patch选项显式禁止了这一操作:src/unpatched-fonts/iA-Writer/Quattro/config.cfg 内容如下:
[Config] abort-mono-patch: True从源码结构看,font-patcher 在处理--mono/--single-width-glyphs参数时会读取该配置项并直接终止流程:
if args.forcemono: args.single = True if config.getboolean("Config", "abort-mono-patch", fallback=False): logger.info("No trying --mono as requested by configfile; exiting") sys.exit(0)(参见 font-patcher)也就是说,即使你手动对 Quattro 源字体传入--mono参数,只要提供了包含abort-mono-patch: True的配置文件,补丁流程就会按配置约定放弃 Mono 生成。
五、连字(Ligatures)处理
对于 iA Writer 这类为写作设计的字体,连字(ligature)是排版体验的重要组成部分。文档明确说明:
- 补丁字体中一般会保留原有连字;
- Nerd Fontsv2.0.0时代,
Nerd Font Mono变体不包含连字;这一差异自v2.1.0起被移除(即新版本不再区分),Mono 变体同样保留连字; - 如果你的终端支持连字渲染但你不想要连字,通常可以在终端设置中关闭相关选项,无需更换字体文件。
六、方式一:直接下载已打补丁的字体
对于绝大多数用户,最省事的方式是直接使用仓库预先打好的补丁字体,有两条途径:
- 稳定版:从 Nerd Fonts 的 release 页面下载按字体族打包的发行物,其中与本主题对应的是
iA-Writer.zip与体积更小的iA-Writer.tar.xz,解压后即可获得包含 Duo / Mono / Quattro 全家族补丁字体的文件集; - 开发版(仓库内现成文件):直接从本仓库的 patched-fonts/iA-Writer/ 目录中按需取用。例如本文主题对应的两个文件即为:
- patched-fonts/iA-Writer/Quattro/Italic/iMWritingQuatNerdFont-Italic.ttf
- patched-fonts/iA-Writer/Quattro/Italic/iMWritingQuatNerdFontPropo-Italic.ttf
下载后根据第四节的选型规则,将对应变体的字体文件安装到系统字体目录(Linux 通常为~/.local/share/fonts或/usr/share/fonts,Windows 直接右键"安装",macOS 双击后用"字体册"安装),并在终端、编辑器或 GUI 应用中将其设为字体族即可。
七、方式二:使用 font-patcher 自行打补丁
当内置的补丁变体无法满足需求时(例如希望去掉部分图标集以缩小文件体积、调整命名方式、或对 iA Writer 的其他风格做实验性修改),可以使用仓库根目录的 font-patcher 脚本自行打补丁。
7.1 环境准备
font-patcher 是 Python 脚本,依赖FontForge 的 Python 绑定(以及psMat模块)。脚本在启动时会检查这些依赖,若缺失会直接报错退出(参见 font-patcher),并提示安装方式(如 Debian/Ubuntu 下sudo apt install fontforge python3-fontforge)。
7.2 最小可用命令
./font-patcher "src/unpatched-fonts/iA-Writer/Quattro/Italic/iAWriterQuattroS-Italic.ttf" \ --complete \ --outputdir ./output- 位置参数为待补丁源字体的路径;
--complete, -c:注入全部可用图标集;--outputdir, -out:指定输出目录(默认当前目录)。
7.3 常用参数速查表
| 参数 | 作用 |
|---|---|
--mono, -s | 创建等宽字体,新增与既有字形均为单倍宽(隐含--single-width-glyphs),对应 NFM 变体 |
--single-width-glyphs | 字形按单倍宽生成(Nerd Font Mono) |
--variable-width-glyphs | 不调整 advance width、无 overhang(Nerd Font Propo) |
--complete, -c | 注入全部图标集 |
--codicons/--fontawesome/--fontawesomeext/--fontlogos/--material(--mdi)/--octicons/--pomicons/--powerline/--powerlineextra/--powersymbols/--weather/--braille | 按需注入第三章节表格中对应的单个图标集 |
--makegroups [N] | 选择补丁字体的命名方案(取值 -1 到 6,默认 1),见下文 |
--configfile FILE | 指定 INI 格式配置文件(参考 src/config.sample.cfg) |
--removeligs, --removeligatures | 按配置文件中的 Subtables 规则移除指定连字子表(需配合--configfile) |
--cell "0:1000:-200:800" | 调整或查询 cell 尺寸(四个冒号分隔整数) |
--name NAME | 指定命名来源(full、postscript、filename或自定义字符串) |
--careful | 检测到既有字形时不覆盖 |
--dry | 只检查命名不实际打补丁 |
--has-no-italic | 字体族没有 Italic 而只有 Oblique/Slanted 时使用 |
--extension ttf/otf | 转换输出文件格式 |
--adjust-line-height, -l | 调整行高,尝试让 Powerline 分隔符居中 |
(参数定义详见 font-patcher)
7.4 配置文件:控制连字与 Mono 补丁行为
除了命令行参数,font-patcher 还支持 INI 风格的配置文件,参考模板为 src/config.sample.cfg:
[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"] ]其中abort-mono-patch正是上一节提到的"拒绝 Mono 补丁"开关——iA Writer 的 Quattro 与 Duo 字体正是通过各自的 config.cfg 声明了abort-mono-patch: True,因此在生成产物中看不到 NFM 变体。若你希望用配置文件驱动补丁流程,可通过--configfile传入上述文件;commandline中的参数会被解析并合并进命令行(参见 font-patcher 的配置读取逻辑)。
7.5 命名方案(--makegroups)
补丁后的字体名由--makegroups的取值决定,文档与源码共同说明其规则如下(以 "Hugo Sans Mono ExtraCondensed Light Italic" 为例):
| 取值 | 命名结果 | 族缩写 | 风格缩写 |
|---|---|---|---|
| -1 | 完全不改名(保留旧名称与版本) | - | - |
| 0 | 关闭,使用旧命名方案 | - | - |
| 1 | HugoSansMono Nerd Font ExtraCondensed Light Italic | - | - |
| 2 | HugoSansMono Nerd Font ExtCn Light Italic | 缩写族名 | - |
| 3 | HugoSansMono Nerd Font XCn Lt It | 缩写族名 | 缩写风格 |
| 4 | HugoSansMono NF ExtraCondensed Light Italic | 使用 NF | - |
| 5 | HugoSansMono NF ExtCn Light Italic | 使用 NF | 缩写族名 |
| 6 | HugoSansMono NF XCn Lt It | 使用 NF | 缩写族名与风格 |
(规则说明见 font-patcher)仓库中 iA-Writer 的补丁产物(如iMWritingQuatNerdFont-Italic.ttf)即遵循该命名体系:原族名iAWriter Quattro经 RFN 合规映射变为iMWritingQuat,再拼接NerdFont与风格段。
7.6 一次完整的自定制示例
# 仅注入 Font Awesome 与 Powerline 图标,输出 NFP 比例变体 ./font-patcher "src/unpatched-fonts/iA-Writer/Quattro/Italic/iAWriterQuattroS-Italic.ttf" \ --fontawesome --powerline \ --variable-width-glyphs \ --outputdir ./my-iawriter八、许可证与合规提醒
iA Writer 补丁字体遵循SIL Open Font License 1.1,全文见 LICENSE.md(与源字体目录下的 src/unpatched-fonts/iA-Writer/LICENSE.md 内容一致)。使用时需注意:
- 字体可自由使用、研究、修改与再分发,但不能单独出售;
- 任何衍生版本必须继续以 OFL 许可发布;
- 衍生版本不得使用保留字体名"iA Writer" 与 "Plex"(除非获得授权)——这正是仓库统一采用
iMWriting命名的原因; - 使用字体排版生成的文档不受 OFL 约束。
结语
围绕 iA Writer 的 Quattro Italic 变体,本文完整覆盖了其字体背景(IBM Plex 衍生)、命名合规(RFN 机制下的 iMWriting)、图标集构成、NFM/NF/NFP 选型规则、连字行为,以及"直接下载补丁字体"与"用 font-patcher 自定制补丁"两条路径。仓库内既提供了开箱即用的 iMWritingQuatNerdFont-Italic.ttf 与 iMWritingQuatNerdFontPropo-Italic.ttf,也保留了完整的 未打补丁源字体 供进阶定制,读者可根据自身场景在两者间灵活选择。
- 开发工具
- 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 中的 iA Writer(iMWriting)补丁字体:半等宽书写字体的获取、选择与定制指南
Nerd Fonts 中的 iA Writer(iMWriting)补丁字体:半等宽书写字体的获取、选择与定制指南 导读 :iA Writer 是一套为书写场景
开发工具CLINerd Fonts 中的 iA Writer(iMWriting)字体族:从 iA Fonts 到补丁后字体全解析
Nerd Fonts 中的 iA Writer(iMWriting)字体族:从 iA Fonts 到补丁后字体全解析 本指南围绕 Nerd Fonts 仓库中
开发工具CLIGatsby 主题(Gatsby Themes)实战指南:可组合、可复用、可升级的配置化插件架构
Gatsby 主题(Gatsby Themes)实战指南:可组合、可复用、可升级的配置化插件架构 本文围绕 Gatsby 官方文档《What Are Gatsb
开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考