开发工具CLI【免费下载链接】nerd-fontsIconic font aggregator, collection, patcher. 3,600 icons, 50 patched fonts: Hack, Source Code Pro, more. Glyph collections: Font Awesome, Material Design Icons, Octicons, more项目地址https://gitcode.com/GitHub_Trending/ne/nerd-fonts点击查看免费下载本指南以patched-fonts/Ubuntu/Bold/README.md为核心文档系统讲解 Ubuntu 字体家族被 Nerd Fonts 修补后的特性包括fi/fl连字为何被移除、Ubuntu Condensed 的OS/2宽度表修正原理、NF / NFM / NFP 三种命名变体的适用场景以及直接下载已修补字体与用 font-patcher 自行修补两条获取路径。读完本文你将能根据终端、GUI 或等宽约束快速选对 Ubuntu 字体变体并理解 Nerd Fonts 修补流程在底层做了哪些改动。Ubuntu 字体家族与 Nerd Fonts 修补版Ubuntu 字体家族是一套配套齐全的自由开源libre/open字体于 2010—2011 年期间开发并在 2015 年经历了进一步的扩展与缺陷修复工作。该字体的开发由 Canonical Ltd 代表更广泛的自由软件社区和 Ubuntu 项目资助技术性的字体设计与实现工作则由 Dalton Maag 承担。最终发布的 Truetype/OpenType 字体文件以及用于生成字体家族的设计文件均以开源许可分发官方明确鼓励使用者进行实验、修改、分享和改进。在 Nerd Fonts 仓库中该家族被打包为完整的修补字体系列位于 patched-fonts/Ubuntu 目录下包含Bold、Bold-Italic、Condensed、Light、Light-Italic、Medium、Medium-Italic、Regular、Regular-Italic等全部字重与样式每种字重均提供Nerd Font与Nerd Font Propo两种变体部分字重同时提供 Mono 变体。本文关联文档所在目录为 patched-fonts/Ubuntu/Bold/README.md对应上游版本为Version 0.83。为什么移除fi、fl连字连字与 Font Awesome 的冲突修补版 Ubuntu 字体中fi、fl等标准连字ligatures被主动移除。文档给出的直接原因是这些连字会阻挡block部分 Font Awesome 字形。从源码层面可以印证这一决策的落点在 src/unpatched-fonts/Ubuntu/config.cfg 中[Config]段明确写入了[Config] commandline: --removeligatures --makegroups 2 abort-mono-patch: True [Subtables] ligatures: [ liga Standard Ligatures in Latin lookup 20 subtable, liga Standard Ligatures in Greek lookup 21 subtable, liga Standard Ligatures in Cyrillic lookup 22 subtable ]其中--removeligatures正是 font-patcher 提供的命令行开关见font-patcher中expert_group.add_argument(--removeligs, --removeligatures, ...)的参数定义destremoveligaturesactionstore_true。其实现逻辑位于font-patcher的remove_ligatures()方法中当设置了该参数后patcher 会从配置文件的[Subtables]段读取待移除的连字子表列表json.loads(self.config.get(Subtables, ligatures, fallback[]))逐一删除这些 GSUB 连字子表font-patcher中remove_ligatures相关实现行号约 L832-L842。由于fi、fl这类拉丁连字在 Unicode 私有区UF000 附近与部分 Font Awesome 字形存在字形占用冲突移除它们可以保证修补后图标字形在字体中的可用性与排布正确。这也解释了为什么该家族的--makegroups 2命名分组模式与--removeligatures被固定写入config.cfg——即所有从该源字体修补出的 Ubuntu 字体在构建时都统一执行了连字移除步骤。预处理源字体Ubuntu Condensed 的OS/2宽度修正除了连字移除Nerd Fonts 对Ubuntu Condensed字体还进行了一项直接的源字体预处理将OS/2表中的usWidthClass修正为 Condensed值 3。usWidthClass是 OpenTypeOS/2表中用于声明字体宽度类别的字段取值范围 1—91 为 Ultra-condensed9 为 Ultra-expanded其中 3 代表 Condensed。上游 Ubuntu Condensed 字体的该字段数值不正确导致部分应用程序无法正确识别其窄体属性因此 Nerd Fonts 通过直接修补字体文件的方式将其修正。完成这一修正的脚本位于 src/unpatched-fonts/Ubuntu/make_condensed.py文档中提到的Condensed/目录即指源字体所在的src/unpatched-fonts/Ubuntu/。该脚本是一个不依赖外部库、直接以二进制方式读写字体表的 Python 工具其核心流程为通过find_table([bOS/2], 0)定位字体文件中的OS/2表读取当前widthClass值font.getshort(widthClass)将widthClass强制写为3即 Condensed对应font.putshort(3, widthClass) # 3 Condensed见make_condensed.py中约 L144-L148依次重算该表的表校验和reset_table_checksum与整字体校验和reset_full_checksum保证修补后的字体文件仍通过 OpenType 校验和一致性检查。脚本对head表checksumAdjustment、flags、lowestRecPPEM等字段也有完整的偏移定位与校验和机制说明这是一套可复用的、对字体文件进行字段级外科手术式修改的工具。修补结果即仓库中的Ubuntu-C_modified.ttf见 src/unpatched-fonts/Ubuntu此后所有 Condensed 相关的 Nerd Fonts 变体都由该修正后的源字体生成。终端使用注意Ubuntu 字体并非等宽一个必须提前知晓的关键事实Ubuntu 字体不是等宽monospaced字体字母宽度彼此不同。在终端环境中每个字符必须容纳在同一个单元格cell中因此使用该字体很可能会呈现出错位的观感。如果你对终端显示有严格的对齐要求请优先考虑等宽候选字体如 Hack、JetBrains Mono 等修补变体或直接使用下面介绍的Nerd Font Mono变体——该变体经过单宽化处理图标与字母均被压缩为等宽单元。如何选择NF / NFM / NFP 三种变体原文档给出了一套简洁的选择速记TL;DR适用于所有 Nerd Fonts 修补字体同样适用于 Ubuntu使用场景选择缩写受限于等宽字体终端、编辑器等Nerd Font MonoNFM想要更大的图标通常约为 1.5 个普通字母宽且终端支持Nerd Font不带MonoNF工作在比例字宽场景GUI 元素、制作演示文稿等Nerd Font PropoNFPNerd FontNF图标保持原始比例通常比普通字母宽约 1.5 倍视觉冲击力强大多数现代终端支持但效果因终端而异ymmv。Nerd Font MonoNFM新增字形与既有字形均为单宽图标与字母严格对齐适合对字符网格有硬性要求的场景。Nerd Font PropoNFP保留字体原有的比例宽度属性图标适配比例环境适合 GUI 界面与文档排版。连字Ligatures说明在修补后的字体中连字通常会被保留除上文说明的fi、fl等与图标冲突的特定子表。Nerd Fontsv2.0.0时期Nerd Font Mono字体不含连字自v2.1.0起这一限制已取消Mono 变体也恢复保留连字。如果你使用支持连字的终端却不希望渲染连字一般可以在终端设置中直接关闭连字功能无需更换字体。获取方式一直接下载已修补字体对于 Ubuntu 系列有两种下载路径稳定版本从项目的 Release 页面下载字体压缩包如Ubuntu.zip或体积更小的Ubuntu.tar.xz开发版本直接使用本仓库 patched-fonts/Ubuntu 目录下的字体文件例如UbuntuNerdFont-Bold.ttf、UbuntuNerdFontPropo-Regular.ttf等这些文件即为当前开发分支的实时构建产物。下载后按系统安装字体即可Linux/macOS可运行仓库根目录的 install.sh 脚本批量安装Windows可运行 install.ps1 脚本。获取方式二使用 font-patcher 自行修补如果你需要自定义符号集例如不需要全部图标以缩小字体体积可以使用 Nerd Fonts 自带的 font-patcher 对上游字体自行修补# 基本用法修补单个字体文件输出到当前目录 ./font-patcher Ubuntu-B.ttf # 生成等宽变体单宽图标 ./font-patcher -s Ubuntu-B.ttf # 生成比例变体Propo ./font-patcher --variable-width-glyphs Ubuntu-B.ttf对于 Ubuntu 家族官方已在 src/unpatched-fonts/Ubuntu/config.cfg 中内置了推荐参数--removeligatures --makegroups 2因此按该配置修补即可复现仓库中已修补字体的行为。--makegroups参数用于控制修补后字体的命名分组方式默认值为1取值范围 -1 到 62为启用替代命名方法之一见font-patcher中parser.add_argument(--makegroups, ..., default1, typeint, nargs?, ...)的定义choicesrange(-1, 6 1)。若解析字体名失败可使用--makegroups 0关闭该命名机制。所有源字体位于 src/unpatched-fonts/Ubuntu包括Ubuntu-R.ttf、Ubuntu-B.ttf、Ubuntu-C_modified.ttf即上述修正宽度后的 Condensed 源字体以及相应的LICENCE.txt、TRADEMARKS.txt等许可文件。图标集覆盖与仓库中所有修补字体一致Ubuntu 修补版同样继承了 Nerd Fonts 聚合的图标集参见 patched-fonts/Ubuntu/README.md 中的 Icon sets 表格主要包含图标集上游版本许可Codiconsmicrosoft/vscode-codicons0.0.45CC BY 4.0Deviconsdevicons/devicon2.17.0MITFont AwesomeFortAwesome/Font-Awesome6.5.1CC BY 4.0Font Awesome ExtensionAndreLZGava/font-awesome-extension0.0.3MITFont Logoslukas-w/font-logos1.3.0unlicensedMaterialDesignTemplarian/MaterialDesign-FontOct 6, 2022Apache 2.0Octiconsprimer/octicons18.3.0MITSeti and originaljesseweed/seti-ui0.8.1MITPomiconsgabrielelana/pomicons1.001OFL 1.1 RFNPowerline Extraryanoasis/powerline-extra-symbols1.200MITPowerline Symbolspowerline/powerline1.000 (ca 2013)MITPower Symbols IECjloughry/UnicodeFeb 2015MITWeather Iconserikflowers/weather-icons2.0.10 (1.100)OFL 1.1许可与 Reserved Font NameRFNUbuntu 字体家族以自由开源许可分发官方鼓励实验、修改、共享与改进。Nerd Fonts 的每目录附加说明见 src/readme-per-directory-addendum.md 与 src/readme-rfn-addendum.md提醒部分字体名称受Reserved Font Name保留字体名机制约束——未经版权持有者书面许可修改版字体软件不得使用保留字体名。这一约束的主要目的是避免名称冲突、保护原作者、减少支持负担并鼓励衍生创作。因此如果你基于 Ubuntu 字体自行修补并计划分发请注意不要直接沿用 Ubuntu 作为修改版的对外主名称Nerd Fonts 的修补版本已通过命名规则规避了该问题修补产物使用UbuntuNerdFont系列名称。具体的许可条款请查阅 patched-fonts/Ubuntu/LICENSEUbuntu 目录下的LICENCE.txt与 src/unpatched-fonts/Ubuntu/TRADEMARKS.txt。小结Ubuntu Nerd Font 是非等宽比例字体系列中极具代表性的修补字体它保留了 Ubuntu 家族由 Dalton Maag 设计的整体观感同时聚合了 3600 图标其构建过程在源码层面解决了两个关键问题——通过config.cfg中的--removeligatures与[Subtables]配置移除与 Font Awesome 冲突的fi/fl连字并通过 make_condensed.py 将 Condensed 变体的OS/2 usWidthClass修正为 3。选择变体时只需记住三条规则终端对齐选Nerd Font Mono追求大图标选Nerd Font比例场景选Nerd Font Propo获取方式则既可下载现成文件也可基于 font-patcher 与源字体按需定制。赞分享开发工具CLI【免费下载链接】nerd-fontsIconic font aggregator, collection, patcher. 3,600 icons, 50 patched fonts: Hack, Source Code Pro, more. Glyph collections: Font Awesome, Material Design Icons, Octicons, more项目地址https://gitcode.com/GitHub_Trending/ne/nerd-fonts点击查看免费下载相关推荐Meslo LG Nerd FontM-DZ/Regular补丁字体使用指南图标字体家族选择与获取全解析Meslo LG Nerd FontM DZ/Regular补丁字体使用指南图标字体家族选择与获取全解析 本文以 Nerd Fonts 仓库中 Meslo开发工具CLICKEditor 5 Font 字体功能包深度指南字体家族、字号、字体颜色与背景色全解析CKEditor 5 Font 字体功能包深度指南字体家族、字号、字体颜色与背景色全解析 本篇指南围绕 CKEditor 5 官方开源仓库中的 ckedito前端富文本UI组件Lekton Nerd Font 实战指南字体家族选择、连字处理与安装使用全解析Lekton Nerd Font 实战指南字体家族选择、连字处理与安装使用全解析 Lekton 是 Nerd Fonts 仓库中一款以细瘦笔画与 Olivet开发工具CLI上一篇go-queue核心组件揭秘轻松掌握Kafka消费者与生产者的实现原理下一篇从崩溃到百万级TPSTDengine连接池的高并发优化实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考