补丁字体的完整指南:字体家族选择、OFL 保留名机制与自打补丁实践)
开发工具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点击查看免费下载iA Writer 是一款专为写作场景设计的字体家族在 Nerd Fonts 项目中被打包为iMWriting系列补丁字体覆盖 Duo、Mono、Quattro 三种字宽变体与多组字重。本篇指南基于仓库中 patched-fonts/iA-Writer/Duo/Regular/README.md 展开系统讲解该字体家族在 Nerd Fonts 中的命名由来OFL Reserved Font Name 机制、内嵌图标集清单、Mono/Propo/标准版三类的选型原则以及下载成品与自打补丁两条获取路径。读完本文你将能够准确理解Nerd Font、Nerd Font Mono、Nerd Font Propo三者的区别判断 iA Writer 各变体是否适合你的终端或 GUI 环境并掌握使用 font-patcher 自行定制图标子集的完整方法。iA Writer 字体家族简介iA Writer 是 Information Architects Inc.iA发布的一套写作字体最初为 iA Writer 应用设计。在 Nerd Fonts 仓库中iA Writer 的补丁版本被归档在 patched-fonts/iA-Writer/ 目录下共分三个字宽家族Duo接近等宽almost monospaced为部分字母留出更多空间适合写作与代码混排场景Mono严格的等宽字体适合终端Quattro与 Duo 类似属于几乎等宽但更宽松的变体。从 iA Writer 的设计说明 可知Duo 和 Quattro are almost monospaced but allow more room for some letters即它们不是严格的单宽字体而是在等宽的基础上为特定字母如m、w等宽字母放宽了度量让排版更舒适。iA Writer 字体本质上是IBM Plex 字体的修改版It is a modification of IBMs Plex font.版本号为2.0002018 年 12 月。在仓库的未打补丁源目录 src/unpatched-fonts/iA-Writer/ 中可以看到三种家族各自的源字体如iAWriterDuoS-Regular.ttf、iAWriterMonoS-Regular.ttf、iAWriterQuattroS-Regular.ttf每个家族均包含 Regular、Bold、Italic、BoldItalic 四种字重。每个已打补丁的字体目录如 patched-fonts/iA-Writer/Duo/Regular/内同时提供Nerd Font与Nerd Font Propo两种成品文件而 Mono 家族还会额外提供Nerd Font Mono文件其文件命名对应关系如下表所示家族标准版大图标Mono 版等宽Propo 版比例DuoiMWritingDuoNerdFont-Regular.ttf无iMWritingDuoNerdFontPropo-Regular.ttfMonoiMWritingMonoNerdFont-Regular.ttfiMWritingMonoNerdFontMono-Regular.ttfiMWritingMonoNerdFontPropo-Regular.ttfQuattroiMWritingQuatNerdFont-Regular.ttf无iMWritingQuatNerdFontPropo-Regular.ttf为什么叫iMWriting而不是iA Writer这是阅读本 README 时最容易产生的疑问上游字体明明叫 iA Writer补丁后为何改名iMWriting答案与SIL Open Font LicenseOFL的 Reserved Font Name保留字体名机制直接相关。OFL 1.1 许可证明确规定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.即未经版权持有者的书面许可任何修改版字体不得使用保留字体名该限制仅作用于呈现给用户的主字体名。在仓库实际归档的许可证 patched-fonts/iA-Writer/Duo/Regular/LICENSE.md 中版权声明明确列出了两个保留名iA WriterCopyright © 2018 Information Architects Inc.PlexCopyright © 2017 IBM Corp.因此Nerd Fonts 在给 iA Writer 打上图标补丁形成修改版后必须回避这两个保留名。这正是 README 中所述该机制四大目的的含义Avoid collisions避免命名冲突不同字体项目共享公共命名空间保留名可防止混淆Protect authors保护作者确保修改版不会借用原作者名声造成误导Minimize support减少支持负担用户遇到问题时能明确区分原版与衍生版减少针对原版的支持请求Encourage derivatives鼓励衍生保留名只约束主名不限制修改本身从而鼓励社区衍生作品。这一改名逻辑在 Nerd Fonts 的打补丁脚本 font-patcher 中有直接实现。脚本维护了一张保留名替换表reservedFontNameReplacements见 font-patcher其中包含iAWriter→iMWritingiA Writer→iM WritingiA-Writer→iM-Writing以及IBMPlex/IBM-Plex/IBM Plex→Blex等一系列同类替换打补丁时脚本会依次对familyname、fullname、fontname执行这些替换见 font-patcher保证生成的补丁字体在元数据层面不再出现保留名。这也是仓库中出现的其他改名如Caskaydia Cove之于 Cascadia Code、Hurmit之于 Hermit、Terminess之于 Terminus背后的统一原因。iA Writer 补丁字体内嵌的图标集与 Nerd Fonts 中其他补丁字体一致iMWriting系列将多个上游图标集合成为一个字体文件便于在终端、编辑器和状态栏中直接渲染图标。以下是该系列内嵌图标集的完整清单来源patched-fonts/iA-Writer/Duo/Regular/README.mdIcon set nameupstreamversionlicenseCodiconsmicrosoft/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这些图标集的字形源文件位于仓库的 src/glyphs/ 与 src/svgs/ 目录中前者多为 svg/otf/ttf 字形源后者为更细粒度的 svg 素材项目级图标清单可参考仓库根目录的 glyphnames.json。需要说明的是各图标集采用不同许可证MIT、Apache 2.0、CC BY 4.0、OFL 等合并进补丁字体后整体再以 SIL Open Font License 1.1 分发参见 LICENSE 与字体目录下的 LICENSE.md。若你计划将补丁字体再分发或商用建议核对各图标集的原始许可证条款。选哪种字体Nerd Font / Nerd Font Mono / Nerd Font Propo 三选一README 专门开辟了 Which font? 一节给出了一套明确的选型决策规则。TL;DR 快速决策受限于等宽字体的场景如终端选择带Nerd Font Mono缩写NFM的字体确保新增图标与既有字符保持单宽想要更大图标的场景选择不带Mono的标准版Nerd Font缩写NF图标通常约为普通字母的 1.5 倍宽。大多数终端支持这种用法但效果因终端而异原文 ymmv比例排版场景GUI 元素、演示文稿等选择带Nerd Font Propo缩写NFP的字体图标按比例宽度参与排版。对照目录结构可以验证这一规则Mono 家族目录同时产出...NerdFont-Regular.ttf、...NerdFontMono-Regular.ttf、...NerdFontPropo-Regular.ttf三种文件见 patched-fonts/iA-Writer/Mono/Regular/而 Duo、Quattro 家族只产出NerdFont与NerdFontPropo两种见 patched-fonts/iA-Writer/Duo/Regular/。三种变体背后的实现差异从打补丁脚本 font-patcher 的参数定义见 font-patcher可以进一步理解三种变体的技术区别--mono/-sforcemono创建等宽字体既有字符与新增字形均按单宽处理隐含--single-width-glyphs对应Nerd Font Mono--variable-width-glyphsnonmono不打乱原始字体的前进宽度、不做图标加宽无 overhang对应Nerd Font Propo两者都不指定时脚本会对图标做约 1.5 倍字宽的处理标准Nerd Font。当同时指定--mono与--variable-width-glyphs时脚本会输出警告并忽略后者见 font-patcher说明这三类成品是互斥的选型而非可叠加选项。Ligatures连字说明打补丁过程通常保留原字体的连字Ligatures are generally preserved in the patched fonts历史上 Nerd Fontsv2.0.0的Nerd Font Mono字体不带连字这一差异自v2.1.0起被取消即当前版本的Nerd Font Mono同样保留连字如果你使用支持连字的终端但不想看到连字通常可以在终端设置中关闭该功能。获取 iMWriting 补丁字体的两条路径Option 1直接下载已打补丁的字体推荐快速上手稳定版从项目发布页下载打包好的iA-Writer.zip或iA-Writer.tar.xz后者体积更小。注意即使发布包文件名沿用iA-Writer包内字体仍按iMWriting命名开发版直接使用本仓库 patched-fonts/iA-Writer/ 目录下的成品覆盖 Duo、Mono、Quattro 三个家族的全部字重。安装后即可在终端、编辑器如 VS Code中配置字族名为iMWritingDuo Nerd Font、iMWritingMono Nerd Font Mono等。关于该选哪个字体的更多排障细节README 指向了 FAQ 文档中的 Which Font 章节。Option 2使用 font-patcher 自行打补丁定制图标子集如果你想只打进去部分图标集以缩小字体体积或需要上游未提供的字重变体可以自行运行补丁脚本。仓库根目录的 font-patcher 是核心工具基本用法如下# 从源码目录对指定字体打补丁 font-patcher --out /path/to/output src/unpatched-fonts/iA-Writer/Duo/Regular/iAWriterDuoS-Regular.ttf常用参数速览完整参数可运行font-patcher --help查看--mono/-s生成等宽版Nerd Font Mono隐含单宽字形--variable-width-glyphs生成比例版Nerd Font Propo--only仅包含指定图标集如--only FontAwesome,Octicons可用于裁剪体积--out dir指定输出目录配置文件方式可将参数写入src/config.sample.cfg风格的配置文件脚本也支持从-c读取配置。值得注意的是iA Writer 的源字体配置 src/unpatched-fonts/iA-Writer/Duo/config.cfg 与 src/unpatched-fonts/iA-Writer/Quattro/config.cfg 中均设置了abort-mono-patch: True即不允许对 Duo 与 Quattro 直接打等宽补丁——这也解释了为何这两个家族只产出Nerd Font与Nerd Font Propo成品。若强行对它们使用--mono脚本会输出 Font will not be patched! Give --mono (or -s) twice to force patching 之类的警告并中止见 font-patcher。小结与排查建议需要终端等宽 图标选用iMWritingMono Nerd Font Mono系列需要更醒目的大图标、且终端兼容选用iMWritingDuo或iMWritingQuat的Nerd Font系列需要 GUI/演示中的比例排版选用任意家族的Nerd Font Propo系列若图标显示为方框tofu先确认终端/编辑器是否完整启用该字体部分终端需在设置中选择完整字体名再确认所选变体是否与终端等宽策略匹配若在意许可证合规注意iA Writer与Plex是 OFL 保留名再分发修改版时不得使用这些主名且整个衍生字体需继续以 OFL 1.1 分发参见 LICENSE.md。赞分享开发工具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 iMWritingiA Writer补丁字体完全指南字体家族选择、图标合成与自行补丁实战Nerd Fonts iMWritingiA Writer补丁字体完全指南字体家族选择、图标合成与自行补丁实战 本指南以仓库内 patched fonts开发工具CLINerd Fonts 中的 iA WriteriMWriting字体族从 iA Fonts 到补丁后字体全解析Nerd Fonts 中的 iA WriteriMWriting字体族从 iA Fonts 到补丁后字体全解析 本指南围绕 Nerd Fonts 仓库中开发工具CLI在 Nerd Fonts 中玩转 iA WriteriMWriting字体从字体家族选择到本地补丁的完整实战指南在 Nerd Fonts 中玩转 iA WriteriMWriting字体从字体家族选择到本地补丁的完整实战指南 本篇技术指南聚焦 Nerd Fonts开发工具CLI上一篇AnimationEngine与UIKit动画集成混合使用的最佳实践下一篇2025年最全面的Llama 2 7B Chat部署指南从本地到生产的量化模型实战方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考