news 2026/10/1 1:57:07

Nerd Fonts M+ 字体修补版完全指南:M_Plus_1 变体选择、14 组图标集与自行修补实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nerd Fonts M+ 字体修补版完全指南:M_Plus_1 变体选择、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

项目地址:https://gitcode.com/GitHub_Trending/ne/nerd-fonts
点击查看免费下载

导读

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:MPlus
  • patchedName:M+
  • version:1.100
  • licenseId:OFL-1.1-no-RFN(SIL Open Font License 1.1,且未声明保留字体名 Reserved Font Name)
  • isMonospaced:true
  • description: "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_1M+ 1,本文主角,9 个字重
patched-fonts/MPlus/M_Plus_1_codeM+ 1 Code,等宽变体,7 个字重
patched-fonts/MPlus/M_Plus_2M+ 2,9 个字重
patched-fonts/MPlus/M_Plus_code_latin50Code Latin 50 子集,7 个字重
patched-fonts/MPlus/M_Plus_code_latin60Code Latin 60 子集,7 个字重

修补后内置的 14 组图标集

M+ 字体的核心价值在于:经过 Nerd Fonts patcher 修补后,它把来自多个开源图标项目的字形合并进了同一份字体文件。M_Plus_1/README.md中给出了完整清单(下表保留原文档的图标集名称、版本与许可证信息,上游出处以项目名标注):

Icon set nameupstreamversionlicense
Codiconsmicrosoft/vscode-codicons0.0.45CC BY 4.0
Deviconsdevicons/devicon2.17.0MIT
extraglyphssource-foundry/Hack-MIT
Font AwesomeFortAwesome/Font-Awesome6.5.1CC BY 4.0
Font Awesome ExtensionAndreLZGava/font-awesome-extension0.0.3MIT
Font Logoslukas-w/font-logos1.3.0unlicensed
MaterialDesignTemplarian/MaterialDesign-FontOct 6, 2022Apache 2.0
Octiconsprimer/octicons18.3.0MIT
Seti and originaljesseweed/seti-ui0.8.1MIT
Pomiconsgabrielelana/pomicons1.001OFL 1.1 RFN
Powerline Extraryanoasis/powerline-extra-symbols1.200MIT
Powerline Symbolspowerline/powerline1.000 (ca 2013)MIT
Power Symbols IECjloughry/UnicodeFeb 2015MIT
Weather Iconserikflowers/weather-icons2.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):

字重NerdFontNerdFontPropo
ThinM+1NerdFont-Thin.ttfM+1NerdFontPropo-Thin.ttf
ExtraLightM+1NerdFont-ExtraLight.ttfM+1NerdFontPropo-ExtraLight.ttf
LightM+1NerdFont-Light.ttfM+1NerdFontPropo-Light.ttf
RegularM+1NerdFont-Regular.ttfM+1NerdFontPropo-Regular.ttf
MediumM+1NerdFont-Medium.ttfM+1NerdFontPropo-Medium.ttf
SemiBoldM+1NerdFont-SemiBold.ttfM+1NerdFontPropo-SemiBold.ttf
BoldM+1NerdFont-Bold.ttfM+1NerdFontPropo-Bold.ttf
ExtraBoldM+1NerdFont-ExtraBold.ttfM+1NerdFontPropo-ExtraBold.ttf
BlackM+1NerdFont-Black.ttfM+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.ttf

M+ 子族在仓库中自带修补配置: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

项目地址:https://gitcode.com/GitHub_Trending/ne/nerd-fonts
点击查看免费下载
上一篇:Kafka-King:告别命令行,用可视化界面轻松管理Kafka集群的现代化工具
下一篇:揭秘cppreference2mshelp工作原理:PHP脚本如何处理4000+HTML文件

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 1:56:19

游戏引擎架构设计:从团队分工到模块边界与内存管理实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 1:55:56

keil软件调试debug printf viewer 查看printf输出没有内容,谁有解决办法

网上说的添加一段重新定义输出的代码&#xff0c;然后配置一下debug那种方法我试过了 然后还有一种是配置这里也试过了还是不行&#xff0c;查来查去就只有这两种方法 而且上面这两种方法在运行时都会卡在 while (ITM_Port32(0) 0); 这行 然后我自己查一下ai&#xff0c;改了源…

作者头像 李华
网站建设 2026/10/1 1:55:31

时间序列建模必知:严平稳与宽平稳的区别与应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华