菜单

使用字体修补工具

相关源文件

Nerd Fonts 字体修补器是一款工具,可让您向任何字体添加与编程和开发相关的字形。本文档提供了关于如何使用 font-patcher 脚本向您自己的字体添加各种图标集的全面指南。有关具体修补选项和标志的信息,请参阅修补选项

概述

字体修补器是一个Python脚本,它使用FontForge将各种图标集中的字形添加到现有字体中。它以原始字体作为输入,并生成一个带有添加字形的修补字体文件。

来源:font-patcher1-50 readme.md19-27 readme.md412-455

先决条件

在使用字体修补器之前,您需要安装以下依赖项:

  • FontForge(带Python绑定)
  • Python 3
  • python-fontforge
  • argparse Python 包

依赖项的安装

Linux (Debian/Ubuntu)

macOS

使用FontForge AppImage

或者,您可以使用FontForge releases上的FontForge AppImage。

来源:readme.md424-427

获取字体修补器

字体修补器脚本是Nerd Fonts仓库的一部分。要使用它,您需要脚本本身及其支持文件。

方法1:下载存档

推荐的方法是将修补器作为存档下载。

重要提示:仅下载font-patcher脚本是不够的。该脚本需要仓库中的额外文件。

来源:readme.md421-423

方法2:使用Docker

Nerd Fonts还提供了一个用于修补字体的Docker镜像。

此方法不需要在本地安装依赖项。

来源:readme.md442-454

字体修补器组件

字体修补器由几个协同工作的重要组件组成。

来源:font-patcher15-39 font-patcher323-432

基本用法

命令行语法

或直接执行(如果设置了可执行权限)

使用FontForge AppImage

来源:readme.md427-440

常见示例

修补一个包含所有字形的字体

创建等宽字体

使用特定字形集进行修补

来源:readme.md542-551

修补过程

字体修补器在修补字体时遵循以下一般过程:

修补过程中涉及的关键方法是:

  1. patch() - 处理主要修补逻辑
  2. generate() - 创建输出字体文件
  3. setup_font_names() - 根据Nerd Fonts约定重命名字体

来源:font-patcher348-512 font-patcher513-529

字体命名约定

修补后,字体的名称将根据以下规则进行修改:

  1. 原始字体名称用作基础
  2. 附加“Nerd Font”
  3. 如果字体是等宽字体,则添加“Mono”
  4. 可以添加包含的字形集的后缀(例如,Font Awesome的“A”)
  5. 保留的字体名称将替换为替代名称以符合许可要求

例如

  • "DejaVu Sans Mono" 变为 "DejaVuSansMono Nerd Font"
  • "Fira Code" 变为 "FiraCode Nerd Font"

字体修补器具有复杂的逻辑,可以处理不同的命名情况,包括带有空格的变体。

来源:font-patcher523-768

命令行选项

font-patcher脚本提供了许多选项来自定义修补过程。以下是主要类别:

字形集选项

选项描述
-c, --complete添加所有可用字形
--fontawesome添加Font Awesome字形
--fontawesomeext添加Font Awesome扩展字形
--fontlogos添加Font Logos字形
--octicons添加Octicons字形
--codicons添加Codicons字形
--powersymbols添加IEC电源符号
--pomicons添加Pomicon字形
--material添加Material Design图标
--weather添加Weather图标

字体样式选项

选项描述
-s, --mono生成单宽(等宽)字形
--variable-width-glyphs不调整字符前进宽度(比例)
-l, --adjust-line-height调整Powerline分隔符的行高

输出选项

选项描述
-out OUTPUTDIR修补字体输出目录
-ext EXTENSION更改输出字体文件类型(例如,ttf, otf)

来源:font-patcher462-539 readme.md462-539

带输出预览的示例

当您运行字体修补器时,您将看到类似的输出:

Nerd Fonts Patcher v3.3.0-21 (4.16.1) (ff 20230101)
originalFontName: Inconsolata.otf
Font contains 782 glyphs
Patching with Powerline Symbols
Patching with Font Awesome
Patching with Font Awesome Extension
Patching with Devicons
...
Generated: 'InconsolataNerdFont-Regular.otf'

最终输出将是一个新的字体文件,位于您指定的输出目录中(如果未指定,则在当前目录)。

Docker用法

使用Docker容器可以简化修补过程,无需安装依赖项。

默认并行任务

单进程(较慢但更稳定)

指定并行任务数量

来源:readme.md442-454

故障排除

常见问题

  1. 缺少依赖项:

    • 错误:FontForge module could not be loaded
    • 解决方案:安装FontForge和Python绑定
  2. 下载不完整:

    • 错误:Can not find symbol glyph directory
    • 解决方案:下载完整的FontPatcher.zip存档
  3. 字体不兼容:

    • 某些字体由于其结构可能无法正确修补。
    • 尝试使用--careful选项以避免覆盖现有字形。
  4. 可变字体:

    • 警告:Source font is a variable open type font (VF)
    • 这是一条通知,表示可变字体可能无法按预期修补。

来源:font-patcher25-39 font-patcher463-477

结论

Nerd Fonts字体修补器是一个强大的工具,用于向任何字体添加面向开发者的字形。通过遵循本指南,您应该能够修补您喜欢的字体并根据您的需求进行自定义。

有关具体选项的更多信息,请参阅修补选项。有关故障排除和额外指导,请访问故障排除部分。