- 开发工具
- 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
导读
D2Coding 是 NAVER 出品的韩语编程字体,本仓库以连字(ligature)变体为基础对其进行补丁处理,在保留原字体连字与等宽特性的前提下注入 3600+ 图标字形。本文以 patched-fonts/D2Coding/README.md 为骨架,结合仓库源码与配置,完整讲解该字体的命名由来(SIL OFL Reserved Font Name 机制)、内置图标集清单、NF / NFM / NFP 三种变体的选择策略,以及"直接下载补丁版"与"使用 font-patcher 自行补丁"两条获取路径,并给出 Linux / macOS / Windows 下的安装命令,帮助你快速在终端、编辑器中获得带图标的韩语编码体验。
字体概述
D2Coding是专为韩语使用者设计的编码字体,其字形针对韩文(Hangul)的阅读与书写习惯做了优化。本仓库收录的是带连字(ligature)的变体,源码版本为1.3.2(对应上游文件D2Coding-Ver1.3.2-20180524-ligature.ttf)。
在仓库中,该字体的相关资源分布如下:
- 补丁完成后的成品字体目录:patched-fonts/D2Coding/(内含字体说明 README)
- 未打补丁的原始字体:src/unpatched-fonts/D2Coding/(含 Regular 与 Bold 两个带连字 ttf、OFL.txt 许可证与 config.cfg 补丁配置)
- 字体元数据登记:bin/scripts/lib/fonts.json
从 bin/scripts/lib/fonts.json 的登记项可以看到官方对该字体的定义:
| 字段 | 值 | 含义 |
|---|---|---|
unpatchedName | D2Coding | 上游字族名称 |
patchedName | D2KodingLigature | 补丁后的字族名称(见下文命名说明) |
version | 1.3.2 | 上游版本号 |
licenseId | OFL-1.1-RFN | 采用 SIL Open Font License 1.1,且包含保留字体名(RFN) |
RFN | true | 该字体存在 Reserved Font Name 限制 |
isMonospaced | true | 属于等宽字体 |
folderName | D2Coding | 仓库中的目录名 |
caskName | d2coding | Homebrew Cask 中的名称 |
为什么叫 D2KodingLigature 而不是 D2Coding?
这是本文档中最关键也最容易被忽略的一个问题:补丁后的字体为什么不沿用 "D2Coding" 这个名字?
答案是为了遵守SIL Open Font License(OFL)中的Reserved Font Name(保留字体名)机制。该机制规定:
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.
也就是说,任何对字体的修改版本,在没有获得版权所有者书面许可的情况下,都不得使用保留字体名。由于 Nerd Fonts 补丁会向原字体中注入大量图标字形,本质上构成对 D2Coding 的"修改版本",因此补丁后字体的主名称被改为D2KodingLigature(保留了 D2 + Koding 的字形,同时呼应 Ligature 连字特性),而不是直接命名为 D2Coding。
该机制设计的核心目的可以归纳为:
- 避免冲突(Avoid collisions):防止不同修改版本共用同一名称导致用户混淆;
- 保护作者(Protect authors):避免修改版字体的缺陷被误记到原作者名下;
- 最小化支持负担(Minimize support):原版权所有者无需为第三方修改版提供技术支援;
- 鼓励衍生(Encourage derivatives):在明确命名的前提下允许社区放心地二次开发。
这一限制在 bin/scripts/lib/fonts.json 中以"RFN": true、"licenseId": "OFL-1.1-RFN"被显式记录,补丁流程据此自动采用D2KodingLigature作为成品字族名。如果你在使用补丁后的字体时发现系统字体列表中显示的是D2KodingLigature Nerd Font,这正是该机制生效的结果,而非版本错误。
补丁内置的图标集
D2Coding 补丁版注入的图标并非来自单一来源,而是聚合了 14 个上游图标项目。下表完整列出各图标集的名称、上游项目、版本与许可证(信息来自 patched-fonts/D2Coding/README.md):
| 图标集名称 | 上游项目 | 版本 | 许可证 |
|---|---|---|---|
| Codicons | microsoft/vscode-codicons | 0.0.45 | CC BY 4.0 |
| Devicons | devicons/devicon | 2.17.0 | MIT |
| extraglyphs | source-foundry/Hack | - | MIT |
| Font Awesome | FortAwesome/Font-Awesome | 6.5.1 | CC BY 4.0 |
| Font Awesome Extension | AndreLZGava/font-awesome-extension | 0.0.3 | MIT |
| Font Logos | lukas-w/font-logos | 1.3.0 | unlicensed |
| MaterialDesign | Templarian/MaterialDesign-Font | Oct 6, 2022 | Apache 2.0 |
| Octicons | primer/octicons | 18.3.0 | MIT |
| Seti and original | jesseweed/seti-ui | 0.8.1 | MIT |
| Pomicons | gabrielelana/pomicons | 1.001 | OFL 1.1 RFN |
| Powerline Extra | ryanoasis/powerline-extra-symbols | 1.200 | MIT |
| Powerline Symbols | powerline/powerline | 1.000 (ca 2013) | MIT |
| Power Symbols IEC | jloughry/Unicode | Feb 2015 | MIT |
| Weather Icons | erikflowers/weather-icons | 2.0.10 (1.100) | OFL 1.1 |
这些图标集的 SVG 源文件即存放在仓库的 src/glyphs/ 与 src/svgs/ 目录中,font-patcher 在补丁时按图标集逐组注入,并可通过命令行参数按需裁剪(见下文"自行补丁")。
选择哪个变体:NF / NFM / NFP
TL;DR 速查
补丁完成后,同一字族会生成三套命名后缀,选择原则如下:
- 如果你的环境限制使用等宽字体(例如多数终端),请选择名称带
Nerd Font Mono(简称NFM)的字体; - 如果你希望图标更大(通常是普通字母宽度的 1.5 倍左右),请选择不带
Mono的Nerd Font(简称NF)。多数终端支持这种变体,但效果因终端而异; - 如果你在比例字体(proportional)环境中工作(如 GUI 界面元素、演示文稿编辑等),请选择带
Nerd Font Propo(简称NFP)的字体。
连字(Ligatures)说明
补丁后的字体默认保留连字特性。需要注意的历史行为:
- Nerd Fonts
v2.0.0及之前,Nerd Font Mono变体不含连字; - 自
v2.1.0起,这一限制已被取消,Nerd Font Mono也保留连字。
因此,如果你使用的终端本身支持连字渲染,但又不想看到连字效果,通常可以在终端自身的设置中关闭连字,而无需更换字体。
原理详解
当你把字族(如 D2Coding)和字重(如 Bold、Regular)确定后,还需要在上述三种变体间做最终选择。这一设计的原因是:图标字形注入后默认占用与普通字母相同的宽度单位,Nerd Font变体会让图标"加宽"以提升辨识度,代价是破坏严格等宽;Nerd Font Mono则强制所有字形(包括图标)保持同一宽度,以适配等宽终端的光标对齐;Nerd Font Propo则按比例宽度排列,适合非等宽排版场景。
获取方式:下载成品 与 自行补丁
Option 1:直接下载已补丁的字体(推荐给大多数用户)
对于稳定版本,可以直接从项目的 release 页面下载 D2Coding 补丁版压缩包:
D2Coding.zip(全量包)D2Coding.tar.xz(体积更小的压缩格式)
下载解压后,即可在系统字体目录中安装D2KodingLigature Nerd Font系列字体文件。
Option 2:使用 font-patcher 自行补丁
如果你需要不包含全部图标(例如为了缩小字体体积)或其他自定义变体,可以基于仓库内的原始字体自行补丁:
- 原始字体位于 src/unpatched-fonts/D2Coding/:
D2Coding-Ver1.3.2-20180524-ligature.ttf(Regular 连字版)D2CodingBold-Ver1.3.2-20180524-ligature.ttf(Bold 连字版)
- 使用仓库根目录的 font-patcher 脚本执行补丁,并通过参数选择要注入的图标集、变体类型等。
仓库为 D2Coding 提供了专门的补丁配置 src/unpatched-fonts/D2Coding/config.cfg,其内容为:
[Config] commandline: --xavgcharwidth 500这意味着官方在补丁 D2Coding 时会附加--xavgcharwidth 500参数。该参数的作用在 font-patcher 的源码中有明确注释:调整 OS/2 表中的xAvgCharWidth字段,用于兼容 notepad 等旧应用以及非拉丁字体。其取值规则为:
- 不传(默认):从源字体复制该值;
0:按 OS/2 version 2 规范从字体自行计算;500(或其他具体数值):直接设置为该值。
font-patcher 还会对参数做合法性校验:不接受负数,且最大值不能超过 16384,否则脚本会以错误码退出。对于韩文等包含宽字形的非拉丁字体,手动指定一个合理的平均字符宽度(此处为 500)可显著改善其在旧版文本应用中的对齐表现。
安装方法
补丁版字体下载或生成后,可通过仓库自带的安装脚本一键安装到系统中。
Linux / macOS(install.sh)
安装单个字体,将<FontName>替换为字体目录名:
./install.sh D2Coding安装全部字体(注意体积很大,按需使用):
./install.shWindows PowerShell(install.ps1)
./install.ps1 D2CodingPowerShell 脚本还支持一次安装多个字体及预演模式:
./install.ps1 D2Coding ./install.ps1 FiraCode, Hack ./install.ps1 DejaVuSansMono -WhatIf完整的安装说明见仓库根目录 readme.md。需要注意的是,当前仓库的安装脚本依赖对仓库的(浅)克隆,且新版本字体可能已不在仓库内,请以 release 页面提供的成品压缩包为准。
补充:字体回退(Fallback)策略
如果你的编辑器或终端在没有安装上述补丁字体的情况下显示图标为方框(豆腐块),还可以利用系统的字体回退机制:大多数系统在"当前字体缺少某字形"时会自动从其他字体中查找替代字形。此时可以额外安装仓库的 10-nerd-font-symbols.conf(Fontconfig 配置)或专用 Symbols 字体,让图标字形由回退字体补足,而不必强制整个界面改用补丁字体。
小结
D2Coding Nerd Font 是"韩语编码字体 + 聚合图标"的组合产物:上游 D2Coding 1.3.2 提供面向韩文优化的字形与连字,补丁流程按 SIL OFL 的 Reserved Font Name 机制将其改名为D2KodingLigature,并注入 14 套开源图标集。日常使用只需记住:终端选NFM、要更大图标选NF、比例排版选NFP;官方默认配置通过--xavgcharwidth 500优化了非拉丁字体的平均字宽兼容性。无论是直接下载 release 压缩包,还是基于 font-patcher 自定义补丁,都能快速获得一套可用的韩语开发字体环境。
- 开发工具
- 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
相关推荐
Perfetto 实战 FAQ:命令行打开 Trace、JSON 兼容性、多进程/多 Trace 合并全解析
Perfetto 实战 FAQ:命令行打开 Trace、JSON 兼容性、多进程/多 Trace 合并全解析 Perfetto 是一个生产级的客户端侧 trac
开发工具CLInerd-fonts 中的 Fira Code:编程连字字体打补丁全指南
nerd fonts 中的 Fira Code:编程连字字体打补丁全指南 导读 本文以 nerd fonts 仓库中 patched fonts/FiraCod
开发工具CLIfirst-contributions 分支清理指南:合并后正确删除本地与远程分支
first contributions 分支清理指南:合并后正确删除本地与远程分支 本指南针对 first contributions 新手贡献流程的收尾环节,
开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考