本页面介绍了 Nerd Fonts 中包含的特定字形(图标)集、它们的组织方式、映射机制和集成过程。Nerd Fonts 将来自多个标志性字体集的 10,000 多个字形聚合到修补后的编程字体中。
当前版本的 Nerd Fonts 包含分布在以下字形集中的 10,390 个图标
| 图标集 | 图标 | 描述 |
|---|---|---|
| Material Design 图标 | 4,119 | Google 的 Material Design 图标体系 |
| Font Awesome | 1,474 | 流行的网页开发图标集 |
| Devicons | 496 | 开发工具和技术图标 |
| Codicons | 439 | Visual Studio Code 图标 |
| Octicons | 310 | GitHub 的图标集 |
| 天气图标 | 228 | 天气状况符号 |
| Seti UI + 自定义 | 190 | Atom 编辑器主题图标及附加内容 |
| Font Awesome 扩展 | 170 | 附加的 Font Awesome 图标 |
| 字体标志 | 130 | 操作系统和软件标志(原 Font Linux) |
| Powerline 额外符号 | 33 | 附加的 Powerline 状态符号 |
| Pomicons | 11 | 番茄工作法图标 |
| Powerline 符号 | 7 | 基本 Powerline 状态符号 |
这些字形集通过 images/sankey-glyphs-combined-diagram.svg 中的桑基图进行可视化,该图展示了每个源集如何对完整的 Nerd Fonts 集合做出贡献。
来源:readme.md20-26 readme.md96-97 bin/scripts/data/sankey/sankeymatic_source.txt
下图显示了 Nerd Fonts 中不同字形集的组织结构
来源:readme.md96-97 bin/scripts/data/sankey/sankeymatic_source.txt
Nerd Fonts 采用结构化系统来管理和集成来自不同来源的字形。该系统可确保在 shell 环境、Web 界面和字体中一致地访问字形。
font-patcher 脚本将来自多个源的字形集成到原始字体文件中。该过程如下图所示
修补器提供选项,可包含特定的字形集或所有可用的字形
-c 或 --complete:添加所有可用字形--fontawesome:仅添加 Font Awesome 字形--octicons:仅添加 Octicons来源:readme.md413-440 readme.md504-517
Nerd Fonts 提供三种主要的字形变体
-s 或 --mono 选项启用--variable-width-glyphs 选项启用这些变体适应不同的终端和编辑器要求。变体选择影响字形在字体中的大小和间距,这对于终端兼容性至关重要。
来源:readme.md491-493 readme.md192-194
每个字形集都占用特定的 Unicode 范围,以避免不同图标集之间的冲突
| 字形集 | Unicode 范围 |
|---|---|
| Powerline 符号 | U+E0A0 - U+E0A2, U+E0B0 - U+E0B3 |
| Powerline 额外符号 | U+E0A3, U+E0B4 - U+E0C8, U+E0CA, U+E0CC - U+E0D4 |
| Font Awesome | U+F000 - U+F2E0 |
| Font Awesome 扩展 | U+E200 - U+E2A9 |
| Devicons | U+E700 - U+E7C5 |
| Octicons | U+F400 - U+F4A8, U+2665, U+26A1 |
| Material Design 图标 | U+F0001 - U+F1AF0 |
| 天气图标 | U+F0000 - U+F0159 |
| 字体标志 | U+F300 - U+F372 |
| Seti UI + 自定义 | U+E5FA - U+E62B |
| Codicons | U+EA60 - U+EBEB |
| Pomicons | U+E000 - U+E00A |
这些 Unicode 范围经过精心选择,以确保不同字形集在合并到单个字体中时不会相互覆盖。
来源:readme.md105-107 readme.md679
Nerd Fonts 在 NerdFonts.com 上提供了一个可搜索的备忘单,用于查找和复制特定字形,如仓库文档中所述
:mag: :mag: You can search for glyphs easily on [NerdFonts.com][Cheat Sheet] via the [Cheat Sheet][]
来源:readme.md105
对于终端使用,字形被映射到 i_*.sh 文件中定义的 shell 变量
这些文件可以在 shell 脚本中被引用(sourced),以在终端输出中显示图标。命名约定遵循 i_[set]_[icon_name] 模式以保持一致性。
对于网页使用,字形映射在生成的文件中作为 CSS 类提供
nerd-fonts-generated.cssnerd-fonts-generated.min.css这些 CSS 文件由 generate-css.sh 脚本生成,并提供了一种在网页上显示 Nerd Font 字形的标准化方式。
Nerd Fonts 中的每个受支持字体都用字形集进行了修补,同时保留了字体的原始度量和特性。bin/scripts/lib/fonts.json 文件包含所有受支持字体的元数据,包括
例如,0xProto 被描述为“一款专注于源代码可读性的编程字体”,版本为 2.300。
来源:bin/scripts/lib/fonts.json1-17 src/unpatched-fonts/0xProto/README.md
Nerd Fonts 包含来自十二个流行图标集的 10,390 个字形,这些字形以结构化系统组织,使其可以在不同环境中访问。桑基图可视化展示了每个图标集对总集合的相对贡献。这些字形在基于文本的界面(如终端和代码编辑器)中实现了丰富的视觉元素。
有关在特定终端模拟器或文本编辑器中使用这些字形的说明,请参阅与终端模拟器一起使用。