本页面介绍了 Nerd Fonts 中的字形定义系统,它提供了一种结构化的方式来识别、引用和使用项目中包含的数千个图标和字形。这些定义是字体修补过程、CSS 生成和终端使用的基础。
有关 Nerd Fonts 中包含的实际图标集的信息,请参阅图标集。
来源:bin/scripts/lib/README.md31-34
Nerd Fonts 以两种主要格式维护字形定义
这两种格式都将人类可读的字形名称映射到其 Unicode 码点。
来源:glyphnames.json1-3 bin/scripts/lib/i_extra.sh2-19
主要的字形定义存储在 glyphnames.json 中。每个字形都有一个条目,包含:
cod-account)文件中的示例
{
"METADATA": {
"website": "https://www.nerdfonts.com",
"development-website": "https://github.com/ryanoasis/nerd-fonts",
"version": "3.3.0",
"date": "2024-11-18 03:02:36+00:00"
},
"cod-account": {
"char": "",
"code": "eb99"
},
"cod-activate_breakpoints": {
"char": "",
"code": "ea97"
},
// ...many more entries
}
对于终端使用,字形定义存储在名为 i_*.sh 的各种 shell 脚本文件中。每个文件对应一个特定的字形源,并为每个字形定义 shell 变量。
来自 i_extra.sh 的示例
这些 shell 变量遵循命名约定
i_ 以指示其为图标extra、dev、cod)progress_empty_left)来源:bin/scripts/lib/i_extra.sh1-19
字形标识符遵循一致的约定
source-name(例如,cod-account、dev-angular)nf-source-name(例如,nf-cod-account、nf-dev-angular)i_source_name(例如,i_cod_account、i_dev_angular)其中
source 标识原始图标集(例如,cod 代表 Codicons,dev 代表 Devicons)name 是字形的描述性名称这种一致的命名方式便于在不同格式之间进行交叉引用。
来源:css/nerd-fonts-generated.css29-43 bin/scripts/lib/i_extra.sh7-18
Nerd Fonts 聚合了来自多个来源的图标。每个来源都有其对应的定义文件
| 字形来源 | 字体文件 | 定义文件 |
|---|---|---|
| Codicons | codicons/codicon.ttf | i_cod.sh |
| Devicons | devicons.ttf | i_dev.sh |
| Font Awesome | font-awesome/FontAwesome.otf | i_fa.sh |
| Font Awesome Extension | font-awesome-extension.ttf | i_fae.sh |
| IEC 电源符号 | Unicode_IEC_symbol_font.otf | i_iec.sh |
| 字体标志 | font-logos.ttf | i_logos.sh |
| Material Design 图标 | materialdesign/MaterialDesignIconsDesktop.ttf | i_md.sh |
| Octicons | octicons.ttf | i_oct.sh |
| Powerline 额外符号 | PowerlineExtraSymbols.otf | i_ple.sh |
| Pomicons | Pomicons.otf | i_pom.sh |
| SETI UI | original-source.otf | i_seti.sh |
| 天气图标 | weather-icons/weathericons-regular-webfont.ttf | i_weather.sh |
| 额外字形 | extraglyphs.sfd | i_extra.sh |
注意:Material Design Icons(i_material.sh)已在 Nerd Fonts v3 中移除。
来源:bin/scripts/lib/README.md36-50
下图说明了字形定义如何集成到更广泛的 Nerd Fonts 系统中
来源:bin/scripts/lib/i_all.sh1-28 bin/scripts/lib/README.md31-50 glyphnames.json1-3
字形定义用于生成 CSS 文件,使 Web 应用程序能够显示 Nerd Fonts 图标。这是通过与每个字形对应的 CSS 类来实现的
要在 HTML 中使用这些
CSS 文件提供了三种可用的类前缀
.nf-(后跟图标名称).nf(基础类,必须与图标类结合使用).nerd-font 或 .nerd-fonts(替代基础类)来源:css/nerd-fonts-generated.css16-27 css/nerd-fonts-generated.min.css7
shell 变量定义允许在终端脚本中轻松使用图标
这对于创建视觉增强的终端应用程序和状态栏特别有用。
来源:bin/scripts/lib/i_all.sh16-26 bin/scripts/lib/i_extra.sh7-18
下图展示了从字形定义到使用的流程
来源:bin/scripts/lib/README.md31-50 glyphnames.json1-3
字形定义构成了 Nerd Fonts 系统的核心,提供了一种标准化方式,可在不同上下文中使用和引用数千个图标。通过以 JSON 和 shell 变量格式维护定义,Nerd Fonts 确保了与 Web 应用程序、终端实用工具以及字体修补过程本身的兼容性。
这些定义允许用户使用跨不同环境的一致命名约定,轻松地将图标整合到其应用程序、终端配置和自定义脚本中。