- 开发工具
- 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
导读
M+(M Plus)是一套由 The M+ FONTS Project 维护、面向日常使用的开源字体家族,在 Nerd Fonts 仓库中以版本 1.100 被修补为带图标的 Nerd Font 字体。本文以 patched-fonts/MPlus/M_Plus_1/README.md 为核心,完整讲解该字体在仓库中的定位、修补后内置的 14 组图标集、Nerd Font/Nerd Font Mono/Nerd Font Propo三种变体的选择原则,并结合 font-patcher 源码与 src/unpatched-fonts/MPlus/M_Plus_1/config.cfg 说明自行修补的配置方式。读完本文,你将能根据终端、GUI 或演示场景精确选择 M+ 的对应字体文件,并掌握用 Nerd Fonts patcher 重新定制 M+ 字体的方法。
M+ 字体家族在 Nerd Fonts 中的定位
M+ 字体由上游项目 The M+ FONTS Project 维护,官方描述为 "a little nifty font family for everyday use"(一套适合日常使用的小巧字体家族)。它的一大特点是同时覆盖等宽(Mono)与比例(Proportional)场景,并提供丰富的字重与多组字形(例如日文假名 Kana 字形),这在 fonts.json 的元数据中被明确记录:
unpatchedName:MPluspatchedName:M+version:1.100licenseId:OFL-1.1-no-RFN(SIL Open Font License 1.1,且未声明保留字体名 Reserved Font Name)isMonospaced:truedescription: "Multiple styles and weights, many glyph sets (e.g. Kana glyphs)"
仓库中 M+ 的未修补原始字体位于 src/unpatched-fonts/MPlus,其许可证文本为 src/unpatched-fonts/MPlus/OFL.txt,版权归 "2021 The M+ FONTS Project Authors" 所有。Nerd Fonts 对 M+ 共修补出五个子族目录:
| 子族目录 | 说明 |
|---|---|
| patched-fonts/MPlus/M_Plus_1 | M+ 1,本文主角,9 个字重 |
| patched-fonts/MPlus/M_Plus_1_code | M+ 1 Code,等宽变体,7 个字重 |
| patched-fonts/MPlus/M_Plus_2 | M+ 2,9 个字重 |
| patched-fonts/MPlus/M_Plus_code_latin50 | Code Latin 50 子集,7 个字重 |
| patched-fonts/MPlus/M_Plus_code_latin60 | Code Latin 60 子集,7 个字重 |
修补后内置的 14 组图标集
M+ 字体的核心价值在于:经过 Nerd Fonts patcher 修补后,它把来自多个开源图标项目的字形合并进了同一份字体文件。M_Plus_1/README.md中给出了完整清单(下表保留原文档的图标集名称、版本与许可证信息,上游出处以项目名标注):
| Icon set name | upstream | version | license |
|---|---|---|---|
| Codicons | microsoft/vscode-codicons | 0.0.45 | CC BY 4.0 |
| Devicons | devicons/devicon | 2.17.0 | MIT |
| extraglyphs | source-foundry/Hack | - | MIT |
| Font Awesome | FortAwesome/Font-Awesome | 6.5.1 | CC BY 4.0 |
| Font Awesome Extension | AndreLZGava/font-awesome-extension | 0.0.3 | MIT |
| Font Logos | lukas-w/font-logos | 1.3.0 | unlicensed |
| MaterialDesign | Templarian/MaterialDesign-Font | Oct 6, 2022 | Apache 2.0 |
| Octicons | primer/octicons | 18.3.0 | MIT |
| Seti and original | jesseweed/seti-ui | 0.8.1 | MIT |
| Pomicons | gabrielelana/pomicons | 1.001 | OFL 1.1 RFN |
| Powerline Extra | ryanoasis/powerline-extra-symbols | 1.200 | MIT |
| Powerline Symbols | powerline/powerline | 1.000 (ca 2013) | MIT |
| Power Symbols IEC | jloughry/Unicode | Feb 2015 | MIT |
| Weather Icons | erikflowers/weather-icons | 2.0.10 (1.100) | OFL 1.1 |
从中可以看到,M+ 字体覆盖了开发场景最常用的几类图标:文件类型图标(Seti、Devicons、Octicons)、版本控制与状态符号(Powerline Symbols / Powerline Extra)、品牌与工具 Logo(Font Logos、Font Awesome)、编辑器符号(Codicons)以及天气等通用图标(Weather Icons)。这些图标各自遵循其上游许可证,具体列表在仓库的 license-audit.md 中有系统性的审计记录。
三种变体如何选:NF / NFM / NFP
这是 M+ 字体日常使用中最需要搞清楚的问题。原文档给出了清晰的 TL;DR 规则,这也是 Nerd Fonts 所有子族共用的选择框架(该段落在仓库中由 src/readme-per-directory-addendum.md 统一维护,随各子族 README 一起生成):
Nerd Font Mono(简称NFM):如果你受限于等宽字体(例如终端、代码编辑器、需要严格对齐表格的场景),选择带Nerd Font Mono的字体。其图标宽度被调整为单字宽,保证每列对齐。Nerd Font(不带Mono,简称NF):如果你想要更大的图标(通常约为普通字母的 1.5 倍宽),选择不带Mono的字体。大多数终端支持这种方式,但效果因终端而异("ymmv",即你的体验可能不同)。Nerd Font Propo(简称NFP):如果你工作在比例(proportional)上下文中(GUI 界面元素、制作演示文稿等),选择带Nerd Font Propo的字体,此时图标与文字按比例排版。
以本目录 patched-fonts/MPlus/M_Plus_1 的实际产物为例,M+ 1 同时提供M+1NerdFont-*.ttf与M+1NerdFontPropo-*.ttf两套命名。其中NerdFontPropo 是 M+ 1 特有的变体:因为 M+ 1 本身是比例字体(其等宽用途由 M_Plus_1_code 等子族承担),所以这里不生成NerdFontMono变体——这正是 src/unpatched-fonts/MPlus/M_Plus_1/config.cfg 中abort-mono-patch: True的作用:在修补时跳过 Mono 变体的生成,避免产生语义混乱的文件。而 M_Plus_1_code 等等宽子族则完整生成 NerdFont / NerdFontMono / NerdFontPropo 三种变体(每个字重 3 个文件)。
M+ 1 的字重矩阵
M+ 1 提供了非常完整的字重阶梯,从Thin到Black共 9 个字重。结合 patched-fonts/MPlus/M_Plus_1 目录中的实际文件,可得到如下矩阵(每个字重对应 NerdFont 与 NerdFontPropo 两个文件,共 18 个 TTF):
| 字重 | NerdFont | NerdFontPropo |
|---|---|---|
| Thin | M+1NerdFont-Thin.ttf | M+1NerdFontPropo-Thin.ttf |
| ExtraLight | M+1NerdFont-ExtraLight.ttf | M+1NerdFontPropo-ExtraLight.ttf |
| Light | M+1NerdFont-Light.ttf | M+1NerdFontPropo-Light.ttf |
| Regular | M+1NerdFont-Regular.ttf | M+1NerdFontPropo-Regular.ttf |
| Medium | M+1NerdFont-Medium.ttf | M+1NerdFontPropo-Medium.ttf |
| SemiBold | M+1NerdFont-SemiBold.ttf | M+1NerdFontPropo-SemiBold.ttf |
| Bold | M+1NerdFont-Bold.ttf | M+1NerdFontPropo-Bold.ttf |
| ExtraBold | M+1NerdFont-ExtraBold.ttf | M+1NerdFontPropo-ExtraBold.ttf |
| Black | M+1NerdFont-Black.ttf | M+1NerdFontPropo-Black.ttf |
对应地,未修补的原始文件位于 src/unpatched-fonts/MPlus/M_Plus_1(命名为MPLUS1-<Weight>.ttf),可以通过文件名一一对应。
连字(Ligatures)行为
M+ 字体本身支持连字。Nerd Fonts 在修补时默认保留连字,因此M+1NerdFont-*.ttf等文件中的->、>=、::等编程连字不受影响。
需要留意的一个历史行为变化(原文档明确说明):Nerd Fontsv2.0.0时代的Nerd Font Mono字体中不含连字,这一限制从v2.1.0起已被移除——即当前版本的Nerd Font Mono字体同样保留连字。如果你使用支持连字的终端却希望关闭连字效果,通常可以直接在终端设置中关闭(不同终端选项位置不同),无需更换字体文件。
两种获取 M+ Nerd Font 的方式
方式一:直接下载已修补字体
- 稳定版:从 Nerd Fonts 的 release 页面下载
MPlus字体包(提供.zip与体积更小的.tar.xz两种压缩格式,可按需选择)。 - 开发版:直接取用本仓库 patched-fonts/MPlus 目录下的字体文件,其中 patched-fonts/MPlus/M_Plus_1 即 M+ 1 的当前修补结果。
下载/取用后,将 TTF 文件安装到系统字体目录即可使用。仓库同时提供了跨平台的安装脚本 install.sh(Linux/macOS)与 install.ps1(Windows),可帮助把字体批量安装到用户字体目录。
方式二:用 font-patcher 自行修补
如果你需要对 M+ 进行定制(例如不包含全部符号以缩小字体体积、调整命名或字族分组),可以自己运行修补器。仓库根目录的 font-patcher 即完整的修补脚本,对未修补字体执行:
./font-patcher src/unpatched-fonts/MPlus/M_Plus_1/MPLUS1-Regular.ttfM+ 子族在仓库中自带修补配置:src/unpatched-fonts/MPlus/M_Plus_1/config.cfg 内容如下:
[Config] commandline: --makegroups 2 abort-mono-patch: True各字段的含义与底层机制:
commandline: --makegroups 2:以--makegroups 2模式进行字体命名。在 font-patcher 中,--makegroups用于 "Use alternative method to name patched fonts",默认值为1,可选范围是-1到6。从源码看,该参数会通过enable_short_families()影响字体族名的组织方式(见 font-patcher):2属于启用"短族名"(short families)的模式,这使修补后的字体按族与字重分组更清晰,适合像 M+ 这样多字重的字体。abort-mono-patch: True:当原始字体不适合生成等宽变体时直接跳过NerdFontMono文件的生成。这正是 M+ 1 目录下只有 NerdFont / NerdFontPropo 而没有 NerdFontMono 的原因——M+ 1 的等宽需求由其兄弟子族 M_Plus_1_code 承担。
如果想要自定义参数(例如--makegroups 0关闭特殊命名、通过--name指定命名来源、或仅包含部分符号集以减小体积),可以直接在命令行追加参数覆盖,或参考 font-patcher 中--help输出的全部选项。注意--makegroups大于 0 时需要FontnameParser模块可用,否则脚本会提示指定--makegroups 0(见 font-patcher)。
许可证与 Reserved Font Name(RFN)
M+ 字体以SIL Open Font License 1.1发布(src/unpatched-fonts/MPlus/OFL.txt),允许自由使用、修改与再分发(不能单独销售字体本身,衍生作品须保持 OFL 许可证)。Nerd Fonts 的 fonts.json 将 M+ 的许可标识为OFL-1.1-no-RFN,即上游未声明 Reserved Font Name(保留字体名)。
这一点值得开发者注意:部分字体(如 Powerline 相关衍生字体)声明了 RFN,禁止修改版沿用原字体名;而 M+ 没有这一限制,因此 Nerd Fonts 可以放心将修补结果命名为M+1 Nerd Font等。关于 RFN 机制(避免名称冲突、保护原作者、减少支持负担、鼓励衍生作品的四个目标),可参见仓库维护的说明 src/readme-rfn-addendum.md。当然,即使 M+ 允许改名,也建议在使用与分发时保留对 "The M+ FONTS Project" 的署名与许可证副本。
小结
围绕 patched-fonts/MPlus/M_Plus_1/README.md,可以把使用 M+ Nerd Font 的决策路径归纳为四步:确认自己需要的是等宽(选 M_Plus_1_code 等子族的NerdFontMono)、大图标(选不带 Mono 的NerdFont)还是比例排版(选NerdFontPropo);在 9 个字重矩阵中选定粗细;直接使用仓库中已修补的 TTF,或按 src/unpatched-fonts/MPlus/M_Plus_1/config.cfg 的--makegroups 2配置自行定制;最后按 OFL-1.1 许可证合规地分发与署名。这样既能获得 M+ 本身多字重、多字形(含假名)的设计优势,又能完整享受 Nerd Fonts 聚合的 14 组开发图标生态。
- 开发工具
- 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
相关推荐
Dangerzone CHANGELOG 解读:从 0.1 首发到 0.11.0 签名沙箱的完整版本演进
Dangerzone CHANGELOG 解读:从 0.1 首发到 0.11.0 签名沙箱的完整版本演进 本文以 CHANGELOG.md https://li
开发工具CLIOpen edX 用户注销驱动脚本配置指南:YAML 驱动配置、状态机与 retire_one_learner 实战
Open edX 用户注销驱动脚本配置指南:YAML 驱动配置、状态机与 retire_one_learner 实战 本文基于 Open edX 仓库中的 dr
开发工具CLINerd Fonts 之 Meslo LG M-DZ Italic:补丁字体变体选择、图标集与连字特性全解析
Nerd Fonts 之 Meslo LG M DZ Italic:补丁字体变体选择、图标集与连字特性全解析 Meslo LG 是 Nerd Fonts 项目收
开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考