Monofur Nerd Font 字体使用与自定义修补指南:三种命名变体、连字行为与 font-patcher 实战
Monofur Nerd Font 字体使用与自定义修补指南:三种命名变体、连字行为与 font-patcher 实战
本篇指南聚焦 Nerd Fonts 仓库中 patched-fonts/Monofur 目录下的 Monofur 字体变体,完整解析其字体特性、Nerd Font / Nerd Font Mono / Nerd Font Propo 三种变体的选择逻辑与连字行为,并给出基于 font-patcher 自行修补 Monofur 的可运行命令示例。读完本文,你将能在终端、编辑器和 GUI 场景中正确选型,并掌握用 patcher 生成自定义 Monofur 的完整流程。
Monofur 字体简介
Monofur 是一款等宽、几何圆润的无衬线字体(monospaced geometric rounded sans serif font),由 Tobias B Koehler 设计,其设计灵感基于 eurofurence 字体家族(见 patched-fonts/Monofur/Regular/README.md)。仓库中标注的字体版本为 Version 1。
Nerd Fonts 对 Monofur 进行了修补,将多套编程与开发相关图标合入原字体。当前仓库中 patched-fonts/Monofur 目录提供了三种字重(Bold、Italic、Regular)下各三种命名变体共 9 个修补成品:
| 变体前缀 | 文件名示例(Regular 字重) | 适用场景 |
|---|---|---|
MonofurNerdFont(NF) |
MonofurNerdFont-Regular.ttf |
默认变体,图标较宽(约 1.5 个普通字符宽) |
MonofurNerdFontMono(NFM) |
MonofurNerdFontMono-Regular.ttf |
纯等宽场景,图标与字符同宽 |
MonofurNerdFontPropo(NFP) |
MonofurNerdFontPropo-Regular.ttf |
比例(非等宽)排版场景 |
未修补的原始字源位于 src/unpatched-fonts/Monofur,内含 Monofur for Powerline.ttf、Monofur Bold for Powerline.ttf、Monofur Italic for Powerline.ttf 三个 Powerline 版本文件,是自行修补时的输入素材。
三种命名变体:NF / NFM / NFP 如何选择
原文档给出的 TL;DR 选择建议非常直白,可概括为三条决策规则:
- 受等宽限制的环境(如终端):选择
Nerd Font Mono(缩写NFM); - 希望图标更大(通常约为普通字符的 1.5 倍宽):选择不带
Mono的Nerd Font(缩写NF)。大多数终端支持这种变体,但效果因人而异(原文标注 ymmv); - 比例上下文(GUI 元素、演示文稿排版等):选择
Nerd Font Propo(缩写NFP)。
这一命名与文件命名规则并非随意设计,而是与 patcher 的参数一一对应。查看 font-patcher 的参数定义(font-patcher#L2228-L2233):
--mono/-s:生成等宽字体,已有与新增字形均为单宽,隐含--single-width-glyphs(对应 NFM);--single-width-glyphs:默认生成的是双宽字形,该参数显式改为单宽;--variable-width-glyphs:不调整 advance width(无“overhang”悬垂),对应 NFP。
从实现看,默认(不传任何宽度参数)生成的就是双宽图标,即 NF 变体;三种成品正是同一字体源经不同宽度策略处理后的产物。需要说明的是,在 font-patcher#L2383 处实现会对 --variable-width-glyphs 与 --mono / --single-width-glyphs 同时出现的情况给出矛盾警告,并忽略 --variable-width-glyphs,因此选型参数不可混用。
连字(Ligature)行为说明
原文档专门说明了连字在修补字体中的保留策略,这是选择字体前需要注意的兼容性细节:
- 修补后的字体通常会保留连字(Ligatures are generally preserved in the patched fonts);
- 历史版本存在差异:Nerd Fonts
v2.0.0的Nerd Font Mono字体不含连字,该限制自v2.1.0起已移除; - 如果你使用支持连字的终端但不想启用连字,通常可以在终端设置中直接关闭连字功能。
也就是说,当前仓库版本的 Monofur NFM 变体与其他变体一样可以保留原字体的连字行为,是否渲染连字取决于终端/编辑器的设置开关。
获取方式一:直接下载已修补字体
如果你只需要开箱即用的成品,两条路径任选其一:
- 稳定版:从项目 release 页面下载字体压缩包(仓库 patched-fonts/Monofur 目录的父级 README 中附有
Monofur.zip与体积更小的Monofur.tar.xz两种打包格式的下载入口); - 开发版:直接使用本仓库中 patched-fonts/Monofur 目录下的
.ttf文件。
仓库内各字重目录(如 patched-fonts/Monofur/Regular)还包含 LICENSE.txt 与 README.md,安装前建议一并查看对应许可声明。
获取方式二:用 font-patcher 自行修补
当你需要自定义变体——例如只合入部分图标集以缩小字体体积——时,可使用仓库根目录的 font-patcher 脚本自行修补 Monofur。以未修补字源 src/unpatched-fonts/Monofur/Monofur for Powerline.ttf 为例,基本调用形式为:
# 生成包含全部图标的等宽 NFM 变体
font-patcher --complete --mono "src/unpatched-fonts/Monofur/Monofur for Powerline.ttf"
# 生成仅含指定图标集、输出到指定目录的 NF 变体
font-patcher --fontawesome --octicons --material --outputdir ./out "src/unpatched-fonts/Monofur/Monofur for Powerline.ttf"
常用参数(均定义于 font-patcher#L2221-L2267):
| 参数 | 说明 |
|---|---|
--complete / -c |
合入所有可用字形 |
--fontawesome |
合入 Font Awesome 字形 |
--fontawesomeext |
合入 Font Awesome Extension 字形 |
--fontlogos |
合入 Font Logos 字形 |
--material / --mdi |
合入 Material Design Icons 字形 |
--octicons |
合入 Octicons 字形 |
--pomicons |
合入 Pomicon 字形 |
--powerline / --powerlineextra |
合入 Powerline / Powerline Extra 字形 |
--codicons |
合入 VS Code Codicons 字形 |
--weather |
合入 Weather Icons 字形 |
--mono / -s |
生成等宽(NFM)变体,隐含单宽字形 |
--variable-width-glyphs |
生成 Propo 变体(不调整 advance width) |
--outputdir / -out |
指定输出目录 |
--extension / -ext |
更改输出文件类型(如 ttf、otf) |
--configfile |
从配置文件读取参数(模板见 src/config.sample.cfg) |
注意:--mono 会隐含单宽字形,而默认状态(不传宽度参数)生成双宽图标,即 NF 变体;两者不可与 --variable-width-glyphs 混用。
已合入的图标集
按 patched-fonts/Monofur/README.md 的说明,仓库中 Monofur 成品字体包含以下图标集:Codicons、Devicons、extraglyphs、Font Awesome(6.5.1)、Font Awesome Extension、Font Logos、Material Design(2022-10 版)、Octicons(18.3.0)、Seti、Pomicons、Powerline Extra、Powerline Symbols、Power Symbols IEC 以及 Weather Icons。各图标集的上游版本与许可信息均可在该 README 的表格中查阅;自行修补时,这些集合可依据上节的参数按需裁剪,这正是原文档强调的“不包含所有符号以缩小字体尺寸”的用途所在。
许可说明
Monofur 原字体版权归 Tobias B Koehler 所有,仓库对应目录附带了 LICENSE.txt(见 patched-fonts/Monofur/LICENSE.txt 与 src/unpatched-fonts/Monofur/LICENSE.txt)。此外,部分字体的名称受 SIL OFL 的 Reserved Font Name 机制保护——未获原作者书面许可,不得在修改版本中使用保留字体名(详见 src/readme-rfn-addendum.md)。在分发自行修补的 Monofur 变体前,请务必核对这两份许可文件的条款。