最近看到一篇公众号推荐 Maple Mono 编程字体,正好我对自己现在的终端字体配置也稍微有点审美疲劳,索性折腾了一番,换换视觉感受。
#我的旧方案
之前我的 iTerm2 配置:
- ASCII 字体:
Monaco。毕竟是 macOS 曾经的经典,优雅永不过时。 - 非 ASCII 字体:
SauceCodePro Nerd Font Mono。Adobe 开源字体 Source Code Pro 的 Nerd Font 补丁版,也是很经典的一款字体。主要为了能在终端下正常显示一些 Emoji 和图标,毕竟现在这些emoji出场率越来越高了。
Monaco + SauceCodePro 的搭配我用了好多年,感觉挺不错。
#新的尝试:Maple 与 JetBrains Mono
这次正好看到那篇文章,就把 Maple Mono 装上了试试,顺道也重新体验了一把之前试过但没坚持用的 JetBrains Mono (Nerd Font 版)。
在这个下载和筛选的过程中,面对着文件名里那一长串的后缀,我顺便把以前一知半解的字体命名术语给彻底理清楚了。
#字体后缀里的“门道”
现在的开源编程字体,为了满足不同使用者的喜好,往往会分发很多个版本。理解这些后缀是选择合适字体的前提。
#1. Mono (Monspaced)
这是编程字体的基础属性——等宽。意味着所有字符(无论是 i 还是 W)都占据相同的水平宽度。这确保了代码在垂直方向上的对齐。
#2. NF (Nerd Fonts)
如果使用了像 Oh My Zsh (Powerlevel10k) 等美化程度较高的主题,建议选择带这个后缀的字体。
Nerd Fonts 是一个非常流行的开源项目,它致力于解决开发环境中的“图标缺失”问题。它将 Font Awesome, Material Design, Weather Icons 等大量流行的图标库,“打补丁”进现有的编程字体中。简单来说,带有 NF 后缀的版本,才能正确显示 Git 分支、系统 Logo 等花哨的终端图标。
#3. CN (Chinese)
大多数英文字体设计时并不考虑汉字宽度。而带有 CN 后缀的版本(很少见),通常经过专门调整,强制实现了 中英 2:1 的宽度比例(即 2 个英文字符宽度 = 1 个汉字宽度)。
这一点对于强迫症非常治愈,尤其是在 Vim 表格编辑或纯文本排版时,能保证纵向的严格对齐。
#4. NL (No Ligatures)
指的是 禁用连字。即输入 != 显示为 !=,而不是合并成数学符号 ≠。
这一点因人而异。我个人还是不习惯连字,所以我直接选择 NL 版本的字体。
#使用体验与总结
- 不得不说,Maple Mono 确实不错,官方直接提供的
CN + NF 组合版本非常省心。对比我之前的混搭方案,Maple Mono 一个字体就能同时搞定“中英文对齐”+“Nerd Font 图标”,整体感强了很多。 - 缺点就是中文环境下,文字间距太宽了,issue里我看也有人建议过,这一点在终端下感觉还好,但是我在 Obsidian 里设置其为默认字体时,感觉就有点难受。
- JetBrains Mono 依然是编程字体中高居榜首的选择,iTerm终端和Obsidian笔记App里使用都挺不错
最终,我针对常用的软件,这么设置:
- iTerm2: ASCII和非ASCII字体都选择
Maple Mono Normal NL NF CN - Obsidian: 正文字体选择
JetBrainsMonoNL Nerd Font Mono作为英文字体,PingFang SC 作为中文字体(macOS下的默认选择)
这里顺带提一下,Obsidian里外观-正文字体如果设置的字体没有专门针对中文适配,那么仅针对英文有效,中文会默认使用PingFang SC,所以这里如果设置Maple Mono Normal NL NF CN,那么中英文都会用这个字体了。
今天先扯到这里~ Over。