Meslo LG Nerd Font 斜体变体指南:S-DZ/Italic 字体的图标集、命名选择与自打补丁全解析
Meslo LG Nerd Font 斜体变体指南:S-DZ/Italic 字体的图标集、命名选择与自打补丁全解析
导读:本文以 nerd-fonts 仓库中 patched-fonts/Meslo/S-DZ/Italic 目录的说明文档为核心,系统讲解 Meslo LG 这一经典等宽字体在 Nerd Fonts 项目中的打补丁产物:它合入了哪些图标集、三种命名变体(NF / NFM / NFP)如何按场景选择、连字(Ligatures)如何处理,以及如何通过直接下载或使用 font-patcher 自行打补丁获得该斜体变体。读完本文,你将能准确判断并安装适合自己终端或编辑器的 Meslo LG 斜体 Nerd Font,并理解补丁背后的实现机制。
Meslo LG 是什么:S-DZ/Italic 变体的由来
Meslo LG 是基于 Apple 的 Menlo-Regular 定制而来的字体(而 Menlo-Regular 本身又是 Bitstream Vera Sans Mono 的定制版本),其命名中的 LG、尺寸档位 L / M / S 以及 DZ 后缀构成了完整的产品矩阵。在本仓库中,Meslo 家族按 L、L-DZ、M、M-DZ、S、S-DZ 六个尺寸/后缀组合,每个组合下再按 Regular、Italic、Bold、Bold-Italic 四个样式组织目录,本次聚焦的是 S-DZ/Italic 斜体变体。
该变体使用的是社区开发者 opeik 提供的打补丁版本(版本号 1.21),原始未打补丁的字体文件保存在 src/unpatched-fonts/Meslo/S-DZ/Italic 目录下(名为 Meslo LG S DZ Italic for Powerline.ttf)。经过 Nerd Fonts 补丁流程后,patched-fonts/Meslo/S-DZ/Italic 目录最终产出三个文件:
MesloLGSDZNerdFont-Italic.ttf(标准 Nerd Font,即NF)MesloLGSDZNerdFontMono-Italic.ttf(等宽 Nerd Font Mono,即NFM)MesloLGSDZNerdFontPropo-Italic.ttf(比例 Nerd Font Propo,即NFP)
三个文件共享同一套图标字形,差异仅在于字宽度量(advance width)与命名族,具体选择标准见下文"三种命名变体"一节。
打补丁合入的 14 组图标集
Meslo LG S-DZ Italic 打补丁后,在原有字母字形之外叠加了以下 14 组图标集。Nerd Fonts 的补丁流程本质上是将来自不同开源项目的图标字形合并进目标字体,以下表格完整列出这些图标集的来源项目、合入版本与许可证(信息以本目录 README 为准):
| 图标集名称 | 上游项目 | 版本 | 许可证 |
|---|---|---|---|
| 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 |
可以看到,这些图标集覆盖了代码编辑器(Codicons、Seti)、文件类型图标(Devicons、Font Awesome)、终端状态栏(Powerline 系列)、电量与电源符号(Power Symbols IEC)、天气图标以及品牌 Logo(Font Logos)等常见场景,这正是 Nerd Fonts"图标聚合器"定位的体现。仓库根目录的 readme.md 中标注该项目聚合了 3,600+ 个图标,而各图标的字形源文件位于 src/glyphs 目录,图标 SVG 素材位于 src/svgs 目录。
三种命名变体:NF、NFM、NFP 怎么选
这是使用 Nerd Fonts 时最核心的选择问题,本目录 README 中给出了官方指引,此处完整展开:
TL;DR 速查
- 如果你受限于等宽字体(例如终端程序强制等宽),请选择名称带
Nerd Font Mono(缩写NFM)的字体,即MesloLGSDZNerdFontMono-Italic.ttf; - 如果你希望图标更大(通常约为普通字母宽度的 1.5 倍),选择不带
Mono的Nerd Font(缩写NF),即MesloLGSDZNerdFont-Italic.ttf。大多数终端支持这种用法,但效果因终端而异("ymmv"); - 如果你工作在比例(proportional)上下文(GUI 元素、演示文稿编辑等),选择带
Nerd Font Propo(缩写NFP)的字体,即MesloLGSDZNerdFontPropo-Italic.ttf。
变体背后的实现差异
从 font-patcher 的源码可以印证这三种变体的实现机制(参数定义处):
NF是默认产物,图标按双倍宽度(double-width)度量生成,因此视觉上更大;NFM对应--mono(-s)与--single-width-glyphs选项,强制所有新增字形按单倍宽度生成,保证与字母严格等宽;NFP对应--variable-width-glyphs选项,不打乱原始字宽度量,图标按实际所需宽度排布,适合比例排版场景。
补丁脚本对字体的命名还受 --makegroups 参数控制(默认 1,可选范围 -1 到 6),它决定打补丁后字体族名的聚合与重命名方式,这也是同目录会同时产出 NerdFont、NerdFontMono、NerdFontPropo 三个文件的命名机制之一。
连字(Ligatures)处理
Meslo LG 原始字体自带连字特性,而打补丁后的字体一般会保留连字(README 明确说明 "Ligatures are generally preserved in the patched fonts")。
需要注意一个历史细节:Nerd Fonts v2.0.0 时期的 Nerd Font Mono 字体是不含连字的,这一限制在 v2.1.0 起被移除。也就是说,如果你使用支持连字的终端(ligature-aware terminal),当前版本的 NFM 字体同样可以展示 ->、=> 等代码连字。
如果你不想使用连字,通常可以在终端设置中关闭连字功能;在补丁层面,font-patcher 也提供了 --removeligatures 参数(需配合 --configfile 使用)来移除配置文件中指定的连字子表,相关配置模板见 src/config.sample.cfg:
[Config]
commandline: --removeligatures --makegroups 2
abort-mono-patch: True
[Subtables]
ligatures: [
"'dlig' Discretionary Ligatures lookup 12 contextual 0",
"'dlig' Discretionary Ligatures lookup 11 subtable",
["!Italic", "'liga' Standard Ligatures in Latin lookup 6 subtable"] ]
从这份配置可以看出,Subtables 下的 ligatures 列表既可以是简单的子表名字符串,也可以是"字体全名正则 + 子表名"的两元素列表(正则可用 ! 前缀取反),例如 ["!Italic", ...] 表示只对非 Italic 字体生效——这解释了为什么不同样式目录的连字保留策略可以分别定制。
获取方式一:直接下载已打补丁字体
对于大多数用户,最省事的方式是直接获取打补丁完成的字体包:
- 从仓库 release 页面下载稳定版字体包(本目录 README 中给出的 Meslo 专用包为
Meslo.zip与体积更小的Meslo.tar.xz,二者内容一致,按需选择); - 或者直接从本仓库的开发版目录获取,即本目录
patched-fonts/Meslo/S-DZ/Italic/下的三个.ttf文件; - 将字体文件安装到系统后,在终端或编辑器中选择对应的字体族名(如
Meslo LG S DZ Nerd Font)即可。
从源码目录结构看,patched-fonts/Meslo/ 下的 README(与本文档同源)还列出了 Meslo 家族其余变体的路径,可据此横向对比不同尺寸/样式组合:patched-fonts/Meslo/README.md。
获取方式二:使用 font-patcher 自行打补丁
如果你需要官方包之外的组合(例如剔除部分图标集以减小字体体积,或保留原始命名),可以基于未打补丁的原始字体自行运行打补丁脚本:
# 基础用法:对原始 Meslo S DZ Italic 打补丁,输出到指定目录
./font-patcher "src/unpatched-fonts/Meslo/S-DZ/Italic/Meslo LG S DZ Italic for Powerline.ttf" --outputdir ./out
font-patcher 是仓库根目录下的 Python 脚本(当前脚本版本 4.27.2,对应 Nerd Fonts 版本 3.5.0),它依赖 FontForge 的 Python 绑定(Linux 上可通过 sudo apt install fontforge python3-fontforge 安装)。常用参数包括:
--complete/-c:合入全部可用图标(默认产物即等价于本目录的NF变体);--mono/-s:生成等宽变体(NFM),隐式启用单倍字宽;--variable-width-glyphs:生成比例变体(NFP),不调整字宽度量;--outputdir/-out:指定输出目录;--extension/-ext:改变输出字体格式(如ttf、otf);- 图标集开关:
--fontawesome、--material/--mdi、--octicons、--codicons、--powerline、--powerlineextra、--weather、--pomicons、--fontlogos、--powersymbols等,可只合入你需要的图标集(定义见 font-patcher 的 Symbol Fonts 参数组); --configfile:指定配置文件(参考 src/config.sample.cfg),配合--removeligatures可定制连字移除;--makegroups:控制补丁后字体族命名方式。
各图标的字形定义文件位于 src/glyphs,对应图标集的字形清单可查阅仓库根目录的 glyphnames.json 与 fonts.json,便于在自行打补丁前核对要合入的图标。
许可证与命名注意
Meslo LG S-DZ Italic 打补丁产物的许可是 Apache License 2.0(版权归 André Berg,详见本目录的 LICENSE.txt)。
此外,部分合入图标集(如 Pomicons、Weather Icons)采用 SIL Open Font License,其中涉及 Reserved Font Name(RFN) 机制:未经版权方书面许可,修改版字体不得使用被保留的原字体主名(详见 src/readme-rfn-addendum.md)。这也解释了为什么打补丁后的字体族名统一采用 Meslo LG S DZ Nerd Font 这类带 Nerd Font 后缀的命名,而非直接沿用原始 Meslo LG S DZ 主名。
小结
Meslo LG(S-DZ/Italic)Nerd Font 是本仓库"图标聚合 + 字体打补丁"流程的一个典型产物:一个斜体等宽字体被叠加进 14 组图标集,并同时产出 NF(标准)、NFM(等宽图标)、NFP(比例)三个命名变体以适配终端、编辑器与 GUI 三类场景。无论是直接下载 patched-fonts/Meslo/S-DZ/Italic/ 下的成品文件,还是通过 font-patcher 基于 src/unpatched-fonts/Meslo/S-DZ/Italic 的原始字体自行定制,都能在保留连字与 Apache 2.0 许可约束的前提下获得满意的开发字体体验。