- 开发工具
- 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
Atkinson Hyperlegible Mono 是 Braille Institute 设计的一款专门提升低视力用户阅读体验的等宽字体,本篇文章以其在 Nerd Fonts 仓库中的原生 README(src/unpatched-fonts/AtkinsonHyperlegibleMono/README.md)为核心骨架,结合仓库中的补丁配置、许可证文件与 font-patcher 源码,完整讲解该字体的版本档案、命名机制(AtkynsonMono 的由来)、补丁参数(--makegroups 4 --metrics TYPO)的底层含义、注入的图标集以及从下载到自行打补丁的全套实践方案。读完本文,你将理解 Nerd Fonts 如何把一个面向无障碍场景的开源字体加工成带 3600+ 图标的标准补丁字体,并能独立完成安装与自定义补丁。
一、字体档案:专为低视力可读性设计的等宽字体
Atkinson Hyperlegible Mono 的核心定位非常明确:一款用于提升低视力(low vision)人群可读性与易读性的等宽(monospaced)字体。这一点在原文档开篇即被点明,并同样记录在仓库的字体清单 fonts.json 中:
{ "unpatchedName": "Atkinson Hyperlegible Mono", "licenseId": "OFL-1.1-RFN", "RFN": true, "version": "2.001", "patchedName": "AtkynsonMono", "folderName": "AtkinsonHyperlegibleMono", "imagePreviewFont": "AtkynsonMono NF", "imagePreviewFontSource": "AtkinsonHyperlegibleMono/AtkinsonHyperlegibleMono-Regular.otf", "linkPreviewFont": "atkinson-hyperlegible", "caskName": "atkynson-mono", "repoRelease": false, "isMonospaced": true, "description": "A monospaced font designed to improve legibility and readability for individuals with low vision" }从这段元数据可以确认三件事实:
- 版本号 2.001:原文档明确标注
Version: 2.001,与 fonts.json 中"version": "2.001"完全一致,这是当前仓库收录的原版字体版本。 - 等宽属性:
"isMonospaced": true,说明它是严格等宽字体,适合终端、编辑器等对字符宽度敏感的场景。 - 上游来源:原文档注明该字体来自 Braille Institute 的免费字体项目(原文档以文字形式给出上游网站,本文按规范不再输出外部链接,读者可在 src/unpatched-fonts/AtkinsonHyperlegibleMono/README.md 中查看原文链接)。
原版字重清单
仓库在 src/unpatched-fonts/AtkinsonHyperlegibleMono/ 目录下完整收录了 8 个字重的原始 OTF 文件:
| 文件 | 字重/风格 |
|---|---|
AtkinsonHyperlegibleMono-Regular.otf | Regular |
AtkinsonHyperlegibleMono-Italic.otf(即RegularItalic) | Italic |
AtkinsonHyperlegibleMono-Bold.otf | Bold |
AtkinsonHyperlegibleMono-BoldItalic.otf | Bold Italic |
AtkinsonHyperlegibleMono-Light.otf | Light |
AtkinsonHyperlegibleMono-LightItalic.otf | Light Italic |
AtkinsonHyperlegibleMono-Medium.otf | Medium |
AtkinsonHyperlegibleMono-MediumItalic.otf | Medium Italic |
注:目录实际文件名中,Italic 系列以
-Italic.otf后缀命名(对应RegularItalic字族风格)。这些文件即后续 font-patcher 的输入原料。
许可证
仓库随字体附带了 src/unpatched-fonts/AtkinsonHyperlegibleMono/LICENSE.txt,其中明确写着:
Copyright 2020, Braille Institute of America, Inc., with Reserved Font Names: "ATKINSON" and "HYPERLEGIBLE". This Font Software is licensed under the SIL Open Font License, Version 1.1.
这一点至关重要:该字体使用SIL OFL 1.1(含保留字体名),是后面"命名变更"一节的直接法律依据。
二、仓库中的落地位置与专属补丁配置
每个被收录的字体在 src/unpatched-fonts/ 下都有自己的目录,除了原始字体文件和许可证外,还包含一个config.cfg专属补丁配置。Atkinson Hyperlegible Mono 的配置非常精简,全文如下(src/unpatched-fonts/AtkinsonHyperlegibleMono/config.cfg):
[Config] commandline: --makegroups 4 --metrics TYPO这行配置会被 font-patcher 读取并应用到该字体的补丁过程中。其机制参考 src/config.sample.cfg 的说明:
- 配置文件是INI 风格,由
font-patcher读取; [Config]段下的commandline键值为 JSON 风格,内容是一段追加到默认命令行之后的 font-patcher 参数;- 通过
--configfile CONFIGFILE可显式指定任意配置文件路径。
也就是说,Atkinson Hyperlegible Mono 在补丁时额外追加了两个参数:--makegroups 4(命名模式)与--metrics TYPO(垂直度量来源)。这两个参数的具体含义见下一节。
三、--makegroups 4与--metrics TYPO的源码级解析
3.1--makegroups:补丁字体的命名模式
--makegroups是 font-patcher 的命名控制参数。在 font-patcher 中其定义如下:
parser.add_argument('--makegroups', dest='makegroups', default=1, type=int, nargs='?', help='Use alternative method to name patched fonts (default=1)', const=1, choices=range(-1, 6 + 1))可取值从-1到6,默认1。取值为4时的具体行为可以从命名逻辑代码中确认(font-patcher):
if self.args.makegroups < 0: ... elif not (FontnameParserOK and self.args.makegroups > 0): ... short_family = projectNameAbbreviation + variant_abbrev if self.args.makegroups >= 4 else projectNameSingular + variant_full也就是说,当makegroups >= 4时,字体族短名采用项目名缩写 + 字重风格缩写的组合方式;此外 font-patcher 显示,makegroups取2/3/5/6时启用"短字族(short families)",取3/6时启用"短子族"命名。结合来看,--makegroups 4是一种基于缩写的简化命名方案,恰好对应 Atkinson Hyperlegible Mono 打补丁后形成的AtkynsonMono系列(NF / NFM / NFP)短名称结构。
注意:
makegroups > 0依赖 FontnameParser 模块(font-patcher),若该模块缺失会报FontnameParser module missing错误并提示改用--makegroups 0。
3.2--metrics TYPO:垂直度量来源选择
--metrics用于选择字体垂直度量(vertical metrics)的来源,其合法取值定义在 font-patcher:
def get_metrics_names(): return ['HHEA', 'TYPO', 'WIN']即HHEA(hhea 表)、TYPO(OS/2 表中的 typographic 字段)、WIN(OS/2 表中的 win 字段)三种。命令行帮助信息将其定位为"为问题字体选择垂直度量来源"(font-patcher)。
补丁器在计算行高时会比较三种度量并做一致性检查(font-patcher):
- 代码首先按
use_typo分支选择TYPO或WIN,并与HHEA比较; - 当三套度量不一致时,会输出形如
Font vertical metrics probably wrong USE TYPO METRICS/Font vertical metrics inconsistent (HHEA / TYPO / WIN), using WIN的警告并做兜底处理。
对 Atkinson Hyperlegible Mono 而言,--metrics TYPO意味着强制采用 OS/2 typographic 度量作为行高计算基准,以保证补丁后 Powerline 分隔符等图标在行内的垂直居中效果稳定——这也是该字体config.cfg里专门追加此参数的原因。
四、命名变更:为什么补丁后叫AtkynsonMono而不是Atkinson Hyperlegible Mono
这是该字体在 Nerd Fonts 中最具"法律味道"的技术细节,patched-fonts/AtkinsonHyperlegibleMono/README.md 用一整节回答了这个问题,标题即为WhyAtkynsonMonoand notAtkinson Hyperlegible Mono?。
4.1 SIL OFL 的 Reserved Font Name 机制
原因在于 src/unpatched-fonts/AtkinsonHyperlegibleMono/LICENSE.txt 中声明的两个保留字体名:ATKINSON和HYPERLEGIBLE。SIL OFL 1.1 第 3 条条件明确写道:
No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
即:修改版(Modified Version)字体不得使用保留字体名,除非获得版权方书面许可,该限制仅针对呈现给用户的主字体名。仓库的 src/readme-rfn-addendum.md 进一步归纳了 RFN 机制的四项设计目标:Avoid collisions(避免撞名)、Protect authors(保护作者)、Minimize support(减少支持负担)、Encourage derivatives(鼓励衍生作品)。
4.2 Nerd Fonts 的应对:缩写改名
由于打补丁属于"Modified Version",不能直接沿用Atkinson Hyperlegible Mono作为主名,Nerd Fonts 采用缩写形式AtkynsonMono作为补丁后的字族名,这一点同时被 fonts.json 的"patchedName": "AtkynsonMono"和"RFN": true双重复确。因此:
- 原版字族:
Atkinson Hyperlegible Mono - 补丁后字族:
AtkynsonMono(主名,规避 RFN) - 补丁后变体:
AtkynsonMono Nerd Font/AtkynsonMono Nerd Font Mono/AtkynsonMono Nerd Font Propo
这也是为什么在 Nerd Fonts 生态里搜索该字体时,看到的是"AtkynsonMono"而不是全名——这不是笔误,而是 OFL 合规设计。
五、补丁后的字体变体与选择指南
Nerd Fonts 为每个字体提供三类补丁变体,patched-fonts/AtkinsonHyperlegibleMono/README.md(内容模板源于 src/readme-per-directory-addendum.md)给出了清晰的"TL;DR"选择规则:
| 场景 | 选择 |
|---|---|
| 受限于等宽字体(终端等场景) | Nerd Font Mono(简称NFM) |
| 想要更大的图标(约为普通字母的 1.5 倍宽) | 不带Mono的Nerd Font(简称NF),多数终端支持但效果因人而异 |
| 比例(非等宽)上下文(GUI 元素、演示文稿等) | Nerd Font Propo(简称NFP) |
连字(Ligatures)说明
补丁字体通常保留原有连字。文档特别提示:Nerd Fontsv2.0.0时代的Nerd Font Mono字体不含连字,该限制自v2.1.0起被移除;如果你用的是支持连字的终端且不想要连字,一般可以在终端设置中关闭。对 Atkinson Hyperlegible Mono 而言,其补丁命令未追加--removeligs(对比 src/config.sample.cfg 中--removeligatures的用法),说明默认保留原字体的连字特性。
一个仓库细节:repoRelease: false
注意 fonts.json 中"repoRelease": false——这意味着该字体的补丁成品并不直接提交在仓库的 patched-fonts 目录中(patched-fonts/AtkinsonHyperlegibleMono/ 目录下目前仅存放 README.md 说明文件,没有字体文件本体),成品需通过官方 Releases 下载,或使用 font-patcher 自行生成(见第七节)。这是该字体与repoRelease: true字体的一个显著差异。
六、补丁注入的图标集清单
Atkinson Hyperlegible Mono 补丁版注入了 Nerd Fonts 标准的多套图标(Glyph sets),patched-fonts/AtkinsonHyperlegibleMono/README.md 给出的完整清单如下(上游列按规范以项目名称呈现,原文链接可在仓库文档中查阅):
| 图标集名称 | 上游项目 | 版本 | 许可证 |
|---|---|---|---|
| Codicons | vscode-codicons(Microsoft) | 0.0.45 | CC BY 4.0 |
| Devicons | devicon(devicons) | 2.17.0 | MIT |
| extraglyphs | Hack(source-foundry) | - | MIT |
| Font Awesome | Font-Awesome(FortAwesome) | 6.5.1 | CC BY 4.0 |
| Font Awesome Extension | font-awesome-extension(AndreLZGava) | 0.0.3 | MIT |
| Font Logos | font-logos(lukas-w) | 1.3.0 | unlicensed |
| MaterialDesign | MaterialDesign-Font(Templarian) | 2022-10-06 | Apache 2.0 |
| Octicons | octicons(primer) | 18.3.0 | MIT |
| Seti and original | seti-ui(jesseweed) | 0.8.1 | MIT |
| Pomicons | pomicons(gabrielelana) | 1.001 | OFL 1.1 RFN |
| Powerline Extra | powerline-extra-symbols(ryanoasis) | 1.200 | MIT |
| Powerline Symbols | powerline(powerline) | 1.000(约 2013) | MIT |
| Power Symbols IEC | Unicode(jloughry) | 2015-02 | MIT |
| Weather Icons | weather-icons(erikflowers) | 2.0.10(1.100) | OFL 1.1 |
这些图标集的 SVG 源文件均收录在 src/glyphs/ 与 src/svgs/ 中,补丁时由 font-patcher 读取并合并进字体。命令行中对应的开关可见于 readme.md 的 Symbol Fonts 段(--codicons、--fontawesome、--material、--octicons、--pomicons、--powerline、--powerlineextra、--powersymbols、--weather等),--complete/-c可一次性注入全部图标。
七、获取、安装与使用
7.1 方式一:下载官方补丁成品
对于稳定版本,可从 Nerd Fonts 的 Release 页面获取该字体的补丁包(对应压缩包命名为AtkinsonHyperlegibleMono.zip与体积更小的AtkinsonHyperlegibleMono.tar.xz,详见 patched-fonts/AtkinsonHyperlegibleMono/README.md 中的下载说明)。由于该字体的repoRelease为false,这是获取成品字体的主要渠道。另外,fonts.json 记录的 Homebrew cask 名为atkynson-mono,偏好包管理器的用户也可据此检索安装。
7.2 方式二:使用仓库脚本批量安装
仓库根目录提供了 install.sh,用法如下(详见 readme.md):
./install.sh # 安装全部字体 ./install.sh <FontName> # 只安装指定字体 ./install.sh Hack # 示例7.3 方式三:用 font-patcher 自行打补丁
如果你需要排除部分图标以缩小体积、或想要自定义变体,可以基于 src/unpatched-fonts/AtkinsonHyperlegibleMono/ 下的原始 OTF 自行补丁。font-patcher 的完整用法参见 readme.md,核心命令如下:
# 推荐用法(经 FontForge 调用,需安装 fontforge、python-fontforge、argparse) fontforge -script font-patcher PATH_TO_FONT # 直接调用(若环境支持) ./font-patcher PATH_TO_FONT # 传入该字体专属配置文件(等效于追加 --makegroups 4 --metrics TYPO) ./font-patcher src/unpatched-fonts/AtkinsonHyperlegibleMono/AtkinsonHyperlegibleMono-Regular.otf \ --configfile src/unpatched-fonts/AtkinsonHyperlegibleMono/config.cfg \ --outputdir /tmp/out常用可选参数速查(取自 font-patcher):
-s / --mono:生成等宽变体(Nerd Font Mono),隐含--single-width-glyphs--variable-width-glyphs:不做 advance width 调整(Nerd Font Propo)-c / --complete:注入全部图标集--outputdir / -out:指定输出目录--makegroups [{-1,0,1,2,3,4,5,6}]:覆盖命名模式--metrics {HHEA,TYPO,WIN}:覆盖垂直度量来源--removeligs:移除连字(该字体默认不启用)
7.4 方式四:Docker 一键补丁
仓库同样提供容器化方案(readme.md):
# 默认并行任务 docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z nerdfonts/patcher [OPTIONS] # 单进程(慢但输出有序) docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z -e "PN=1" nerdfonts/patcher [OPTIONS]八、本文引用的仓库资源速查
为便于继续深入,以下是本文涉及的关键仓库文件:
- 原版字体说明:src/unpatched-fonts/AtkinsonHyperlegibleMono/README.md
- 专属补丁配置:src/unpatched-fonts/AtkinsonHyperlegibleMono/config.cfg
- 许可证(OFL 1.1 + RFN):src/unpatched-fonts/AtkinsonHyperlegibleMono/LICENSE.txt
- 补丁后说明(命名变更、图标集、选择指南):patched-fonts/AtkinsonHyperlegibleMono/README.md
- 字体元数据条目:fonts.json
- 命名参数定义:font-patcher
- 度量参数定义:font-patcher
- 垂直度量比较逻辑:font-patcher
- 配置模板:src/config.sample.cfg
- RFN 机制说明模板:src/readme-rfn-addendum.md
- 字体选择指南模板:src/readme-per-directory-addendum.md
综上所述,Atkinson Hyperlegible Mono 在 Nerd Fonts 中的存在,既是"无障碍字体接入图标生态"的一个典型样本,也是理解 OFL 保留字体名合规改名的绝佳案例:一份仅有八行的精简 README,背后串联起元数据登记、专属补丁参数、许可证约束、命名改写与发布策略这五条完整的技术链路。无论你是需要为低视力用户配置无障碍终端,还是想研究 Nerd Fonts 的补丁流水线,都可以以该字体为切入点深入实践。
- 开发工具
- 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
相关推荐
Atkinson Hyperlegible Mono 与 Nerd Fonts:面向低视力可读性的等宽字体补丁化全指南
Atkinson Hyperlegible Mono 与 Nerd Fonts:面向低视力可读性的等宽字体补丁化全指南 本指南以 Nerd Fonts 仓库中已
开发工具CLInerd-fonts 中的 ProFont:为编程可读性而生的等宽字体与 Nerd Fonts 补丁实践
nerd fonts 中的 ProFont:为编程可读性而生的等宽字体与 Nerd Fonts 补丁实践 ProFont 是一款以“程序代码可读性”为首要目标设
开发工具CLINoto Sans Mono Nerd Font:Nerd Fonts 仓库中全字重等宽中文字体打补丁指南
Noto Sans Mono Nerd Font:Nerd Fonts 仓库中全字重等宽中文字体打补丁指南 Noto 是 Google 推出的、以「为所有语言提
开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考