Nerd Fonts 中的 Source Code Pro(SauceCodePro)全解析:命名由来、图标集与修补选型指南
开发工具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点击查看免费下载本篇技术指南以 Source Code Pro 修补字体说明 为主体结合本仓库的修补产物与font-patcher源码系统讲解为什么修补后的字体叫SauceCodePro、它继承了哪些图标集、如何在Nerd Font/Nerd Font Mono/Nerd Font Propo三种变体之间做出正确选择以及两种获取方式直接下载 vs 自行修补的完整流程。读完本文你将能够为自己的终端、编辑器与 GUI 场景精准选用 Source Code Pro 的 Nerd Font 变体并理解 SIL 保留字体名机制对字体改名的约束。Source Code Pro为 UI 环境而生的开源等宽字体Source Code Pro是 Adobe 设计的一套 OpenType 字体家族其设计目标是在用户界面UI环境中获得良好的可读性。在 Nerd Fonts 项目中它以v2.042 / 1.062的版本被作为修补源相关元数据记录在仓库根目录的 fonts.json元数据项值unpatchedNameSource Code ProlicenseIdOFL-1.1-RFN含保留字体名的 SIL OFL 许可version2.042patchedNameSauceCodeProfolderNameSourceCodeProisMonospacedtruedescriptionMonospaced font family for user interface and coding environments可以看到该字体在 fonts.json 中被标记为isMonospaced: true这与它作为代码字体、需要与图标对齐的特性直接相关——正是这个属性决定了修补时采用等宽single-width图标的默认策略。为什么叫SauceCodePro而不是Source Code Pro这是阅读本目录 README 时最先遇到、也最值得理解的一个问题。改名的原因是为了遵守SIL Open Font LicenseOFL中的Reserved Font Name保留字体名RFN机制。SIL OFL 明确规定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.即未经版权持有者的书面许可字体的修改版本不得继续使用被保留的主字体名该限制只作用于呈现给用户的主字体名。由于 Source Code Pro 这一名称被 Adobe 保留Nerd Fonts 项目对修补后的字体改用了一个同音的变体名SauceCodeProSauce 与 Source 读音相近既保留了品牌辨识度又完全合规。该机制的主要目标在 RFN 说明 中有明确归纳可以概括为四点Avoid collisions避免冲突防止修改版与官方版混淆Protect authors保护作者防止作者名誉因劣质修改版受损Minimize support减少支持负担用户不至于把修改版的问题反馈给原版作者Encourage derivatives鼓励衍生在合规前提下鼓励生态衍生。这一机制在本仓库中并不是孤例——fonts.json 中同样标记为RFN: true的字体如 Share Tech Mono → ShureTechMono都遵循相同的改名策略。如果你计划基于 OFL 字体二次分发修改版这一点是必须注意的合规红线。修补字体集成了哪些图标集Nerd Fonts 的核心价值在于把大量图标字体合并进现有编程字体。根据 README 的 Icon sets 表格Source Code Pro 的修补版集成了以下图标集含上游版本与许可信息图标集名称上游来源版本许可证CodiconsVS Code Codicons0.0.45CC BY 4.0DeviconsDevicon2.17.0MITextraglyphsHack 字体额外字形-MITFont AwesomeFont Awesome6.5.1CC BY 4.0Font Awesome Extensionfont-awesome-extension0.0.3MITFont Logosfont-logos1.3.0未授权unlicensedMaterialDesignMaterial Design FontOct 6, 2022Apache 2.0OcticonsOcticons18.3.0MITSeti and originalseti-ui0.8.1MITPomiconsPomicons1.001OFL 1.1 RFNPowerline Extrapowerline-extra-symbols1.200MITPowerline SymbolsPowerline1.000 (ca 2013)MITPower Symbols IECUnicode Power SymbolsFeb 2015MITWeather IconsWeather Icons2.0.10 (1.100)OFL 1.1这些图标的具体 SVG 字形源文件可以在 src/glyphs 与 src/svgs 目录中查阅font-patcher在修补时会按需把这些字形合并进目标字体。各图标集的集合名称Font Awesome、Powerline 等与font-patcher的命令行参数一一对应详见下文。Which font如何选择正确的变体TL;DR 速查README 给出了一条极简决策路径受限等宽场景终端等→ 选择带Nerd Font Mono缩写NFM的变体希望图标更大约 1.5 个普通字母宽度→ 选择不带Mono的Nerd Font缩写NF。多数终端支持但效果因人而异比例字体场景GUI 组件、演示文稿等→ 选择带Nerd Font Propo缩写NFP的变体。这三种变体在修补阶段由font-patcher的不同参数驱动源码中的对应关系非常清晰见 font-patcher--mono / -s创建等宽字体已有与新增字形均为单宽同时隐含--single-width-glyphs--single-width-glyphs将字形生成为单宽而非默认的双宽即Nerd Font Mono的形态--variable-width-glyphs不调整字形推进宽度无 overhang 悬挂即Nerd Font Propo的形态。此外font-patcher还会根据源字体是否为等宽字体动态决策见 font-patcher若源字体不是等宽字体会输出警告并评估是否强制转换为等宽Source Code Pro 本身是等宽字体因此其Mono变体的图标对齐质量是有保障的。连字Ligatures处理修补后的字体一般保留原字体的连字。需要注意的历史变化是Nerd Fontsv2.0.0曾在Nerd Font Mono字体中移除连字这一行为在v2.1.0起被取消即新版本不再移除。如果你使用的是支持连字的终端、但又不想看到连字通常可以在终端设置中手动关闭。对于确实希望移除连字的场景font-patcher也提供了底层手段通过 --configfile 指定配置文件即可按字体全名正则与子表名精确删除liga、dlig等连字查找表。仓库中的 src/config.sample.cfg 给出了完整示例[Config] commandline: --removeligatures --makegroups 2 abort-mono-patch: True [Subtables] # 列表项可以是 # - 要删除的子表名简单字符串 # - [字体全名正则, 子表名] 的二元组正则前加 ! 表示取反 ligatures: [ dlig Discretionary Ligatures lookup 12 contextual 0, dlig Discretionary Ligatures lookup 11 subtable, dlig Discretionary Ligatures lookup 9 subtable, [!Italic, liga Standard Ligatures in Latin lookup 6 subtable] ]其中commandline的--removeligatures与--makegroups 2会在修补阶段生效abort-mono-patch: True用于在等宽字体场景下中止修补以避免不兼容结果。两种获取方式Option 1直接下载已修补字体推荐稳定版从项目的 release 页面下载对应字体包SourceCodePro.zip 或体积更小的 SourceCodePro.tar.xz后安装即可开发版直接使用本仓库 patched-fonts/SourceCodePro 目录下的文件。以本仓库当前内容为例该目录提供了三套完整的变体每套覆盖 Regular 到 Black 多个字重及 ItalicSauceCodeProNerdFont-*.ttf默认比例变体图标双宽SauceCodeProNerdFontMono-*.ttf等宽变体图标单宽面向终端SauceCodeProNerdFontPropo-*.ttf比例变体不调整图标宽度面向 GUI。此外目录内还包含 LICENSE.txtOFL 许可全文与本文所基于的 README.md。安装后在终端或编辑器中即可按SauceCodePro Nerd Font Mono等字体全名直接选用。Option 2自行修补字体如果你需要更细的控制例如不包含全部图标以减小字体体积可以用仓库根目录的 font-patcher 脚本对任意字体执行修补./font-patcher /path/to/SourceCodePro-Regular.ttf常用参数一览完整参数见 font-patcher参数作用--mono, -s生成等宽字体单宽字形--variable-width-glyphs生成比例字体不调整推进宽度--complete, -c添加全部可用图标--fontawesome/--material/--octicons/--codicons/--powerline等仅添加指定图标集--makegroups N选用不同的修补字体命名方式默认 1范围 -1..6--outputdir, -out指定输出目录--configfile使用配置文件控制连字等高级行为--dry只检查命名、不实际修补其中图标集参数名与上文 Icon sets 表格中的集合一一对应例如只想要 Font Awesome Powerline 的轻量版 Source Code Pro可以执行./font-patcher --fontawesome --powerline --outputdir ./my-fonts SourceCodePro-Regular.ttf更完整的批量修补流程可参考仓库根目录的 install.sh、install.ps1 以及 src/config.sample.cfg 中的示例配置。小结从本仓库的 Source Code Pro 文档 出发可以得出三条可直接落地的结论合规改名是必须的SauceCodePro是 Nerd Fonts 为遵守 SIL OFL 保留字体名机制而采用的同音替代名这一做法由 fonts.json 中的RFN: true标记背书变体选择看场景终端选Nerd Font Mono追求大图标选Nerd FontGUI/演示选Nerd Font Propo三者分别对应font-patcher的--mono、默认双宽与--variable-width-glyphs行为两条获取路径都成熟下载本仓库 patched-fonts/SourceCodePro 的现成文件或用 font-patcher 按需自定义修补后者可通过--configfile参考 src/config.sample.cfg精细控制连字与命名。赞分享开发工具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 中 Intel One Mono 的补丁指南命名缘由、图标集成与 NF/NFM/NFP 选型Nerd Fonts 中 Intel One Mono 的补丁指南命名缘由、图标集成与 NF/NFM/NFP 选型 本篇文章以 Nerd Fonts 仓库中开发工具CLINerd Fonts 中的 Bitstream Vera Sans MonoBitstromWera 命名由来与补丁字体选用全指南Nerd Fonts 中的 Bitstream Vera Sans MonoBitstromWera 命名由来与补丁字体选用全指南 Bitstream Ver开发工具CLINerd Fonts 中的 Bitstream Vera Sans MonoBitstromWera补丁字体指南RFN 命名由来与 NF/NFM/NFP 选型实战Nerd Fonts 中的 Bitstream Vera Sans MonoBitstromWera补丁字体指南RFN 命名由来与 NF/NFM/NFP开发工具CLI上一篇EIP-152 详解在 EVM 中通过预编译合约 0x09 实现 BLAKE2 压缩函数 F打通以太坊与 Zcash 互操作下一篇OmniRoute 贡献指南统一 AI 网关的从零开发、测试、提 PR 到发布全流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →