- 开发工具
- 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 仓库中 UbuntuMono 字体家族的 Regular-Italic(常规斜体)变体,梳理其来源、许可与版本信息,并系统讲解该字体在补丁后提供的三种命名形态(Nerd Font / Nerd Font Mono / Nerd Font Propo)及其选择依据。文章同时深入
font-patcher与仓库配置源码,解释斜体变体补丁后的命名规则、连字处理与自定义补丁流程,帮助开发者在终端、GUI 与演示文稿等不同场景中正确选用 UbuntuMono 的补丁字体。
一、Ubuntu Mono:字体家族背景与许可信息
1.1 字体家族来源
Ubuntu Mono 属于 Ubuntu Font Family,这是一套配套设计的 libre/open 字体。根据 UbuntuMono 字体的说明文档,该字体家族在 2010—2011 年间开发,并在 2015 年进行了进一步扩展与缺陷修复。开发工作由 Canonical Ltd 代表更广泛的自由软件社区与 Ubuntu 项目资助,技术字体设计与实现则由 Dalton Maag 承担。
无论是最终发布的 Truetype/OpenType 字体文件,还是用于生成字体家族的设计源文件,均在开放许可下分发,官方明确鼓励使用者试验、修改、分享与改进。
1.2 版本信息
当前仓库中 UbuntuMono 补丁字体的源字体版本为0.80(见 patched-fonts/UbuntuMono/Regular-Italic/README.md)。这一版本号同样记录在 fonts.json 中。
一个值得注意的细节是:src/unpatched-fonts/UbuntuMono/FONTLOG.txt 中记载,Ubuntu 字体家族在 2015 年发布的 0.83 版本仅更新了部分比例(proportional)字体文件,而Ubuntu Mono 等宽字体文件保持 0.80 版本不变——这也解释了为何仓库中 UbuntuMono 的版本停留在 0.80。
1.3 许可协议:Ubuntu Font Licence
与采用 SIL Open Font License 的字体不同,UbuntuMono 使用Ubuntu Font Licence Version 1.0(见 patched-fonts/UbuntuMono/LICENCE.txt)。该许可允许字体被自由使用、研究、修改和再分发;衍生作品可以捆绑、嵌入与再分发,但不得以其他任何许可协议重新发布。同时,许可并不要求使用这些字体或衍生字体创建的文档以该许可发布,只要该文档的主要用途不是分发字体的载体即可。
需要留意的是,fonts.json 将 UbuntuMono 的 licenseId 记录为LicenseRef-UbuntuFont,且RFN字段为false,即该字体没有声明"保留字体名(Reserved Font Name)"限制。关于 RFN 机制的一般说明可参考 src/readme-rfn-addendum.md:某些字体按 SIL OFL 的 Reserved Font Name 机制保留名称,未获书面许可不得以该名称发布修改版本。UbuntuMono 不属于此类,因此补丁后的字体被直接命名为 UbuntuMono Nerd Font 系列。
二、三种补丁变体:Nerd Font / Nerd Font Mono / Nerd Font Propo
这是 Regular-Italic 文档 的核心指引,也是所有 Nerd Fonts 补丁字体通用的选型逻辑。
2.1 快速决策(TL;DR)
- 受限于等宽字体(例如终端环境):选择带
Nerd Font Mono(缩写NFM)的字体; - 希望图标更大(通常约为 1.5 个普通字母宽度):选择不带
Mono的Nerd Font(缩写NF)。大多数终端支持这种形态,但效果可能因人而异(原文标注 ymmv); - 工作在比例(proportional)上下文(GUI 元素、演示文稿编辑等):选择
Nerd Font Propo(缩写NFP`)。
2.2 补丁后的实际文件形态
在 patched-fonts/UbuntuMono/ 目录下,每一种字重(Bold、Bold-Italic、Regular、Regular-Italic)都对应生成三类文件:
| 变体 | 文件示例(Regular-Italic) | 适用场景 |
|---|---|---|
| Nerd Font(默认双宽图标) | UbuntuMonoNerdFont-Italic.ttf | 终端与编辑器均可,图标宽度约 2 个单元 |
| Nerd Font Mono | UbuntuMonoNerdFontMono-Italic.ttf | 严格等宽场景,所有字形单宽 |
| Nerd Font Propo | UbuntuMonoNerdFontPropo-Italic.ttf | 比例字体场景,不调整 advance width |
每个字重目录下同时附带 LICENCE.txt 与 LICENCE-FAQ.txt 许可文档。
2.3 命名后缀的源码级解释
从补丁脚本 font-patcher 的源码可以看到这三种命名形态的生成逻辑:
# add mono signifier to beginning of name suffix if self.args.single: variant_abbrev = "M" variant_full = " Mono" elif self.args.nonmono and not self.symbolsonly: variant_abbrev = "P" variant_full = " Propo" else: variant_abbrev = "" variant_full = "" ps_suffix = projectNameAbbreviation + variant_abbrev + additionalFontNameSuffix # add 'Nerd Font' to beginning of name suffix verboseAdditionalFontNameSuffix = " " + projectNameSingular + variant_full + verboseAdditionalFontNameSuffix--mono(-s)触发variant_full = " Mono",对应Nerd Font Mono命名;--variable-width-glyphs触发variant_full = " Propo",对应Nerd Font Propo命名;- 默认(既非 mono 也非 propo)则不加变体标记,即
Nerd Font。
三、连字(Ligatures)行为与处理建议
3.1 补丁字体的连字保留
根据 Regular-Italic 文档 的说明:
- 连字在补丁字体中通常被保留;
- Nerd Fontsv2.0.0版本中,
Nerd Font Mono字体不包含连字;这一限制自v2.1.0起已移除; - 如果你使用的终端支持连字但不想启用,通常可以在终端设置中关闭连字功能。
从源码层面看,font-patcher 中存在remove_ligatures方法,其注释说明"(mostly for monospaced fonts)通常移除那些仅占一个单元格宽的fi类连字以及ldot",说明补丁过程对连字的处理是有选择性的,而非一律删除。
3.2 实践建议
- 需要连字(如
->、=>)的编程场景:直接使用补丁字体默认形态,并确保终端开启连字; - 不需要连字的场景:优先在终端设置中关闭连字,而不是更换字体;
- Ubuntu Mono 本身是等宽字体家族,其补丁后的 Mono 变体在等宽性上最契合终端使用。
四、获取 UbuntuMono 补丁字体的两种途径
文档(Regular-Italic README)提供了两种获取方式:
4.1 方式一:直接下载已补丁字体
- 稳定版:从项目 Release 页面下载字体包。UbuntuMono 专属包名见 patched-fonts/UbuntuMono/README.md:
UbuntuMono.zipUbuntuMono.tar.xz(体积更小)
- 开发版:直接从仓库 patched-fonts/UbuntuMono/ 各字重目录下载最新的补丁字体。
4.2 方式二:自行补丁字体
使用 font-patcher 对源字体进行自定义补丁,例如可以不包含全部符号集,以换取更小的字体文件。仓库中 UbuntuMono 的源字体位于 src/unpatched-fonts/UbuntuMono/,包括:
UbuntuMono-R.ttf(Regular)UbuntuMono-RI.ttf(Regular-Italic)UbuntuMono-B.ttf(Bold)UbuntuMono-BI.ttf(Bold-Italic)
以及config.cfg、FONTLOG.txt、LICENCE.txt、TRADEMARKS.txt等配套文件。
4.3 仓库级补丁配置
src/unpatched-fonts/UbuntuMono/config.cfg 记录了该字体在仓库中使用的补丁参数:
[Config] commandline: --makegroups 2--makegroups是 font-patcher 提供的命名模式参数(默认值 1,可选 -1 到 6),用于控制补丁字体的命名聚合方式。其内部说明(font-patcher)列出了各取值的含义,例如:
| 值 | 命名效果示例 | 使用缩写 |
|---|---|---|
| -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 | 全部缩写 |
仓库对 UbuntuMono 使用--makegroups 2,即采用"字重/样式缩写 + 完整 Nerd Font 名称"的命名策略,这与我们在 patched-fonts/UbuntuMono/ 目录中看到的UbuntuMonoNerdFont-Italic.ttf、UbuntuMonoNerdFont-BoldItalic.ttf等文件命名(Italic、BoldItalic为完整样式名)相符。
4.4 自行补丁的命令示例
基于 font-patcher 的常用参数,可对 UbuntuMono 斜体源字体执行类似命令:
# 默认补丁(完整符号集,双宽图标) font-patcher src/unpatched-fonts/UbuntuMono/UbuntuMono-RI.ttf # 生成 Mono 等宽变体(单宽字形) font-patcher -s src/unpatched-fonts/UbuntuMono/UbuntuMono-RI.ttf # 生成 Propo 比例变体(不调整 advance width) font-patcher --variable-width-glyphs src/unpatched-fonts/UbuntuMono/UbuntuMono-RI.ttf其中-s/--mono会隐含启用--single-width-glyphs(font-patcher),保证新加入的图标字形均为单宽,从而维持等宽性。
五、安装与验证
5.1 仓库安装脚本
仓库根目录提供跨平台安装脚本 install.sh(Linux/macOS)与 install.ps1(Windows)。install.sh 支持--copy(默认)、--link(符号链接)、--list、--remove等模式,以及--mono、--otf/--ttf、--install-to-user-path/--install-to-system-path等选项(install.sh)。
由于 UbuntuMono 补丁字体为 TTF 格式,可直接通过脚本批量安装:
# 查看将安装哪些字体(dry run) ./install.sh --list UbuntuMono # 安装到用户字体目录(默认 copy 模式) ./install.sh UbuntuMono5.2 验证安装
安装完成后,可在终端设置中搜索以下字体名称确认:
UbuntuMono Nerd Font(含 Italic 字重)UbuntuMono Nerd Font MonoUbuntuMono Nerd Font Propo
并可通过fc-list | grep -i ubuntumono(Linux)快速确认字体是否被系统识别。
六、仓库中的相关元数据
在 fonts.json 中,UbuntuMono 的条目记录了关键元数据:
version:0.80RFN:false(无保留字体名限制)isMonospaced:truerepoRelease:true(随仓库 Release 发布)description: "Dotted zeros, used then,o,H&OLatin characters as a base for design"(设计上以点状零为特征,并以n、o、H、O拉丁字符为基础)
同时,项目主 readme.md 的字体列表中,UbuntuMono Nerd Font 对应条目也标注了源字体版本 0.80 与 RFN 状态为 NO,与上述信息一致。此外,bin/scripts/generate-sample-set.sh 等构建脚本也会引用 UbuntuMono 作为预览图字体来源(imagePreviewFont: "UbuntuMono Nerd Font"),便于生成示例图片。
七、小结
UbuntuMono 的 Regular-Italic 补丁字体继承了 Ubuntu Font Family 自由开放的特性,在 Nerd Fonts 项目中以 0.80 版本源字体为基础,通过--makegroups 2命名策略生成三类变体。选型时只需抓住一条主线:终端等宽场景用 Nerd Font Mono,追求大图标用 Nerd Font,比例界面用 Nerd Font Propo。若需自定义符号集或命名风格,可基于 src/unpatched-fonts/UbuntuMono/ 的源字体结合 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
相关推荐
Arimo Nerd Font Bold Italic 字体重绘实战:Nerd Fonts 比例字体变体的选择、安装与补丁原理
Arimo Nerd Font Bold Italic 字体重绘实战:Nerd Fonts 比例字体变体的选择、安装与补丁原理 导读 本篇技术指南以 Nerd
开发工具CLINerd Fonts 中的 Overpass Nerd Font:Mono/Regular 字体详解、图标集与安装补丁指南
Nerd Fonts 中的 Overpass Nerd Font:Mono/Regular 字体详解、图标集与安装补丁指南 本篇指南聚焦 Nerd Fonts
开发工具CLIOpenDyslexic 字体 Nerd Fonts 补丁版指南:Mono-Regular 变体、图标集与连字移除机制
OpenDyslexic 字体 Nerd Fonts 补丁版指南:Mono Regular 变体、图标集与连字移除机制 本文围绕 Nerd Fonts 仓库中
开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考