ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Nerd Fonts 之 Overpass:源自 Highway Gothic 的开源字体族与图标补丁实战指南

Nerd Fonts 之 Overpass:源自 Highway Gothic 的开源字体族与图标补丁实战指南 开发工具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点击查看免费下载Overpass是 Nerd Fonts 仓库中一款采用双许可证SIL OFL 1.1 与 LGPL 2.1的开源 Web 字体族设计灵感源自美国高速公路标识字体 Highway Gothic在仓库中同时提供 Mono 与非 Mono 两套补丁变体。本篇指南以patched-fonts/Overpass/Non-Mono/Semi-Bold/README.md为核心完整讲解 Overpass 的字重矩阵、图标集构成、Nerd Font/Nerd Font Mono/Nerd Font Propo三种变体的选型逻辑并深入剖析仓库中config.cfg与font-patcher源码所揭示的连字ligature移除机制帮助读者既能直接下载使用现成补丁字体也能基于 font-patcher 自行定制属于自己的 Overpass 变体。Overpass 在 Nerd Fonts 仓库中的定位Overpass 是一个开源 Web 字体族其上游由 Red Hat 官方维护。在当前仓库的字体元数据 fonts.json 中Overpass 被登记为版本3.0.5、许可证OFL-1.1-no-RFN or LGPL-2.1-only即「无保留字体名的 SIL OFL 1.1或 LGPL 2.1」双许可且未声明保留字体名 RFN描述为 An open source font family inspired by Highway Gothic灵感源自 Highway Gothic 的开源字体族。从源码目录结构看仓库同时维护了两条 Overpass 分支Mono 分支src/unpatched-fonts/Overpass/Mono 提供 Bold、Light、Regular、Semi-Bold 四个字重的原始字体经补丁后产出OverpassM Nerd Font、OverpassM Nerd Font Mono、OverpassM Nerd Font Propo三类文件如 patched-fonts/Overpass/Mono/Semi-Bold 下的OverpassMNerdFont-SemiBold.otfNon-Mono 分支src/unpatched-fonts/Overpass/Non-Mono 覆盖 Thin 到 Heavy 共 10 个字重及其 Italic 变体补丁后产出Overpass Nerd Font与Overpass Nerd Font Propo两类文件——即本文主角 patched-fonts/Overpass/Non-Mono/Semi-Bold 目录内含OverpassNerdFont-SemiBold.otf与OverpassNerdFontPropo-SemiBold.otf。值得注意的细节是Non-Mono 分支的字体不会生成Nerd Font Mono变体。这一行为并非偶然而是由补丁配置显式控制的——见下文「源码级原理config.cfg 如何驱动补丁行为」一节。版本与许可3.0.5 与双许可证原文档明确记录了 Overpass 的版本号为3.0.5与 fonts.json 中的version字段一致。每个补丁目录下都附带了完整的 LICENSE.md其内容声明Copyright 2015 Red Hat, Inc. This Font Software is dual licensed and available under the SIL Open Font License, Version 1.1 and also the LGPL 2.1。这表示 Overpass 字体软件同时遵循两份许可证SIL 开放字体许可证OFL1.1 版以及 GNU LGPL 2.1。OFL 允许字体被自由使用、研究、修改和再分发前提是字体本身及衍生作品不得单独售卖、衍生作品不得使用保留字体名、且必须以相同许可证继续分发。由于 Overpass 未声明保留字体名RFN 为 false补丁衍生作品可以自由使用 Overpass 这一名称——这也解释了为什么仓库中补丁字体的命名可以自然延续为OverpassNerdFont-*。使用建议若在商业软件中打包或再分发 Overpass 及其 Nerd Fonts 衍生版本请务必保留完整许可证文本并遵守 OFL/LGPL 的署名与再分发条款。图标集构成一次注入 14 套符号体系Nerd Fonts 的核心能力是把多个业界知名图标字体合并进同一款补丁字体。根据原文档的「Icon sets」表格Overpass 补丁字体总共融入了14 套图标集每套的上游来源、版本与许可证如下图标集名称上游项目版本许可证Codiconsmicrosoft/vscode-codicons0.0.45CC BY 4.0Deviconsdevicons/devicon2.17.0MITextraglyphssource-foundry/Hack-MITFont 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这些图标字形在仓库中有对应的 SVG 源文件见 src/glyphs 与 src/svgsfont-patcher 在补丁过程中会把它们从各自的私有 Unicode 区段映射进目标字体从而让 Overpass 同时具备编程常用图标、品牌 Logo、Powerline 符号、天气与电源符号等能力。由于各图标集许可证各不相同CC BY 4.0、MIT、Apache 2.0、OFL 等在二次分发时需分别核对对应图标集的许可证要求。如何选择字体变体NF / NFM / NFP原文档「Which font?」一节给出了非常明确的选型指南这也是所有 Nerd Fonts 补丁字体通用的决策规则TL;DR 速查受限于等宽字体如终端环境要求选择名称带Nerd Font Mono简称NFM的字体如OverpassMNerdFontMono-SemiBold.otf想要更大的图标图标宽度通常约为普通字母的 1.5 倍选择名称中不含Mono的Nerd Font简称NF如OverpassNerdFont-SemiBold.otf。大多数终端支持这种用法但效果因终端而异ymmv在比例proportional场景工作GUI 界面元素、演示文稿排版等选择名称带Nerd Font Propo简称NFP的字体如OverpassNerdFontPropo-SemiBold.otf。背后的度量原理三类变体的差异本质在于字形度量metrics是否被等比压缩Nerd Font Mono将原始字体的所有字形推进宽度advance width规整为等宽值图标与字母对齐在同一单元格内保证终端中字符严格对齐Nerd FontNon-Mono / NF保留原字体的自然宽度图标以较大的字形约 1.5 个字母宽呈现视觉更醒目Nerd Font Propo图标字形被压缩为与普通字符宽度相称的比例字形适合需要图标与文字等宽排布、又不想破坏等宽对齐的 GUI 场景。因此同一种字重如 Semi-Bold在仓库中会以多个文件形式存在以覆盖上述三种使用场景。连字Ligature处理从移除到保留原文档给出了 Overpass 特有的连字说明Thefi,fl, andldotligatures are removed because they map to only one advance width.即fi、fl、ldot这三个连字被移除因为它们只映射到一个推进宽度在等宽化后会产生单元格错位问题。同时文档也澄清了 Nerd Fonts 整体上的连字策略补丁字体通常保留原始连字Nerd Fontsv2.0.0时代的Nerd Font Mono字体不带连字但从v2.1.0开始这一限制已被取消如果终端支持连字渲染而你又不想要连字通常可以直接在终端设置中关闭连字选项。源码级原理config.cfg 如何驱动连字移除连字的移除不是手工程序写死的而是由每个字体族自己的补丁配置文件驱动的。查看 Overpass 的两份配置src/unpatched-fonts/Overpass/Non-Mono/config.cfg[Config] commandline: --removeligatures --makegroups 2 abort-mono-patch: True [Subtables] ligatures: [ Ligature Substitution lookup 20 subtable, liga Standard Ligatures in Latin lookup 18 subtable ]src/unpatched-fonts/Overpass/Mono/config.cfg[Config] commandline: --removeligatures --makegroups 2 [Subtables] ligatures: [ Ligature Substitution lookup 23 subtable ]commandline中的--removeligatures参数直接对应 font-patcher 中的同名选项源码第 2276 行定义--removeligatures说明为「Removes ligatures specified in configuration file (needs --configfile)」即它需要配合配置文件中的Subtables段使用。Subtables段则列出了要移除的具体 GSUB 连字替换子表名称。在 font-patcher 的remove_ligatures()方法中可以看到实际执行逻辑读取配置中Subtables.ligatures列表逐项调用字体引擎的removeLookupSubtable()移除对应连字替换子表。该实现还支持复杂的[regex, table]条目——用正则匹配字体全名来决定是否移除某个子表!前缀表示「正则不得匹配」这为不同字重、不同命名族提供差异化连字处理留下了空间。对 Overpass 而言Non-Mono 变体移除了Ligature Substitution lookup 20与liga Standard Ligatures in Latin lookup 18两个子表Mono 变体移除Ligature Substitution lookup 23。这与文档中「fi、fl、ldot连字被移除」的描述相互印证——被移除的正是这些单宽连字所在的替换子表。abort-mono-patch为什么 Non-Mono 没有 Mono 变体Non-Mono 的 config.cfg 中还有一个关键选项abort-mono-patch: True在 font-patcher 中存在对应逻辑当配置中abort-mono-patch为 True 时对等宽补丁流程执行中止。这就是为什么 patched-fonts/Overpass/Non-Mono/Semi-Bold 下只有OverpassNerdFont-SemiBold.otf和OverpassNerdFontPropo-SemiBold.otf两个文件而没有Nerd Font Mono变体——Overpass 原生的非等宽字形本就不适合再强行等宽化配置明确跳过了这一产出。获取 Overpass 补丁字体的两种途径原文档提供了两条使用路径覆盖「开箱即用」与「按需定制」两类需求途径一直接下载已补丁的稳定版本从 Nerd Fonts 发布页下载 Overpass 的字体压缩包Overpass.zip或体积更小的Overpass.tar.xz包也可以直接从仓库的 patched-fonts/Overpass 目录树中获取开发版本即本文涉及的 Semi-Bold 等各级目录。下载后在 Linux/macOS 上可放入~/.local/share/fonts或~/.fonts在 Windows 上右键安装即可仓库根目录还提供了 install.sh 与 install.ps1 脚本用于批量安装所有补丁字体。若希望为终端与编辑器配置字体回落font fallback可参考仓库根目录的 10-nerd-font-symbols.conf将图标字体作为符号回落字体。途径二使用 font-patcher 自行打补丁若默认的图标组合不符合需求例如希望缩小字体体积、剔除不需要的图标集可以基于原始字体自行补丁。仓库根目录的 font-patcher 是核心补丁脚本典型用法# 使用默认图标集补丁 Overpass Semi-Bold ./font-patcher src/unpatched-fonts/Overpass/Non-Mono/Semi-Bold/overpass-semibold.otf # 只包含部分图标集生成更小的字体文件 ./font-patcher src/unpatched-fonts/Overpass/Non-Mono/Semi-Bold/overpass-semibold.otf --only-symbols 2000 3000关键参数说明均可通过./font-patcher --help查看--makegroups N选择补丁字体的命名分组策略。默认值为 1取值范围 -16Overpass 的配置文件选用--makegroups 2即按字重/变体分组方式生成短家族名short family。从 font-patcher 的源码看makegroups为 2/3/5/6 时启用短家族名为 3/6 时还会启用更激进的变体缩写Overpass 采用 2 属于相对保守的命名策略--removeligatures别名--removeligs按配置文件Subtables段移除连字子表需配合--configfile使用--configfile 路径指定字体族专属配置Overpass 的配置位于 src/unpatched-fonts/Overpass/Non-Mono/config.cfg 与 src/unpatched-fonts/Overpass/Mono/config.cfg--only-symbols 范围只注入指定 Unicode 区段的图标用于缩小字体体积。对于希望完全复刻仓库产物的场景也可以直接参考配置文件中的commandline行——它本身就记录了该字体族在补丁时所用的完整命令参数。小结本文围绕 patched-fonts/Overpass/Non-Mono/Semi-Bold/README.md 展开梳理了 Overpassv3.0.5OFL 1.1 与 LGPL 2.1 双许可在 Nerd Fonts 仓库中的补丁形态14 套图标集合并注入、NF/NFM/NFP三类变体的选型规则、fi/fl/ldot连字的移除机制以及「直接下载」与「font-patcher 自助补丁」两条获取路径。配合 config.cfg 与 font-patcher 的源码读者不仅可以正确选用 Overpass 补丁字体还能理解其背后「配置文件驱动连字移除与命名策略」的补丁流水线原理进而举一反三地定制其他字体族的变体。赞分享开发工具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点击查看免费下载相关推荐Nerd Fonts 中的 Overpass 字体族Heavy-Italic 补丁字体解析与选用指南Nerd Fonts 中的 Overpass 字体族Heavy Italic 补丁字体解析与选用指南 Overpass 是 Red Hat 出品的开源字体族开发工具CLINerd Fonts 中的 Overpass开源字体家族的图标修补、连字处理与字体变体选择指南Nerd Fonts 中的 Overpass开源字体家族的图标修补、连字处理与字体变体选择指南 导读 本文以 Nerd Fonts 仓库中 patched f开发工具CLINerd Fonts 中的 Overpass Nerd FontMono/Regular 字体详解、图标集与安装补丁指南Nerd Fonts 中的 Overpass Nerd FontMono/Regular 字体详解、图标集与安装补丁指南 本篇指南聚焦 Nerd Fonts开发工具CLI上一篇maths-cs-ai-compendium 进阶文本生成详解文本扩散、RLHF/DPO 对齐、长上下文、SSM 与投机解码下一篇zk-nvim快速入门5分钟搭建个人知识管理系统的完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表