从 DejaVu Sans Mono 换成 Hack 字体了
美之 DejaVu Sans Mono
最早接触 Windows 使用 Fixedsys、Courier、Courier New 甚至宋体作为程序员字体,后来发现了 Bitstream Vera Sans Mono 的大写字母 L 的小写形式居然如此易于辨认且如此优雅,惊为天人,从此成为这个字体的铁粉,再后来使用 Linux 后换到 Bitstream Vera Sans Mono 的扩充版本 DejaVu Sans Mono,这一用就是十余年,非常满意,再也难以接受包含了长的像数字 1 的字母 L 小写形式的字体,哪怕它的其它字符非常漂亮:
程序员字体的自我修养
一个适合编程以及终端使用的程序员字体除了美观大方、渲染丝滑,更重要的是区分度,否则调试半天发现是眼花看错了,岂不是郁闷的紧!
有如下几组容易混淆的字符:
- a 和 o:小写字母 a 和小写字母 o;
- o O 0 Q C G:小写和大写字母 O,数字 0,大写字母 Q,大写字母 C,大写字母 G;
- i I l | 1:小写字母 i,大写字母 I,大写字母 L 的小写,竖线,数字 1。在最新版 macOS 中默认的 UI 字体下,这几个字符比较难区分;
- g 9 q:小写字母 g,数字 9,小写字母 q;
各个字体为了提升辨识度,会做一些特别的设计:
- 小写字母 a 的开口,与小写字母 o 显著区分。
2. dotted zero 和 slashed zero 与字母 O 显著区分,Q 的长尾巴与字母 O 显著区分。
3. macOS 的 San Francisco Display 在 I 和 L 区分上简直醉了,Mono 版本的 1 和 L 也很像。Hack 的区分度很高,Source Code Pro 的小写字母 i 尤其有区分度。
4. g 9 q 三个字符的区分一般人都不会有问题,但 Source Code Pro 还是采用古典风格的小写字母 g 以进一步增加区分度。
盘点最佳程序员字体
适合程序员使用的优秀字体很多,下面只提及包含 DejaVu 风格字母 L 小写形式的矢量字体。
- 水果家的贵族:Menlo
macOS 的默认固定宽度无衬线字体最早是 Monaco,从上面图可以看到它的小写字母 a 不大妙,有个 Monaco 粉丝基于它做了个略带手写体风格的变体 Fantasque Sans Mono ,把正体的 小写字母 a 改成开口 a 了,但是斜体的没改 ️。
后来 macOS 在 DejaVu Sans Mono 的基础上造出了 Menlo,作为新的默认固定宽度无衬线字体,有粉丝基于它做了个 Meslo 字体免费分发给大家用(奇怪没版权问题么?)。Menlo 非常优秀,不愧继承了 Bitstream Vera 和 DejaVu 一脉,macOS 上 Terminal.app 的默认字体就是 Menlo,Visual Studio Code for macOS 的默认字体是“Menlo, Monaco, Courier New, Monospace",但据说 XCode 用的 Apple 家私房货 San Francisco Mono。
DejaVu Sans Mono 有点不足的是小写字母 i 跟数字 1 有点像,另外数字零采用了 dotted zero 而非更醒目的 slashed zero,Menlo 采用了 slashed zero, 但是维持了小写字母 i 的设计 。
2. 贵族中的王者:Hack
Hack 字体也是基于 DejaVu Sans Mono,字如其名,为程序员编码而设计。它的数字零采用了纵向的 slashed zero,更利于显示器清晰渲染,小写字母 i 仿照了小写字母 L 的设计,底部向右弯,明显的跟数字 1 区分开来,且沿袭了字母 L 小写形式的优雅。
3. 贵族中的将军:Code New Roman
Code New Roman 吸取了 Bitstream Vera Sans 和 Monaco 的设计,几近完美,可惜的是小写字母 a 学了 Monaco,跟小写字母 o 有点像。
4. 名门闺秀:Source Code Pro
Adobe 给穷人免费贡献了高质量的思源系列字体:Source Sans Pro,Source Code Pro,Source Serif Pro,Source Han Sans,Source Han Serif,Source Han Mono,这些字体后来被 Google 的 Noto 字体套件吸收了,虽然 Adobe 家的 Flash 人人喊打,但 Adobe 这个字体贡献值得传颂千古。Source Code Pro 也接近完美,但可惜其斜体版的小写字母 a 跟小写字母 o 有点像。
有粉丝做了个支持连字(ligature)的增强版 Hasklig ,喜欢玩 Haskell 的同学可以试试。还有个粉丝做了个增强版 Office Code Pro ,没把小写字母 a 修一下,倒是把小写字母 i 搞成跟数字 1 比较像了,大概是个对 DejaVu Sans Mono 很有爱的同学。
5. 豪门子弟:Ubuntu Mono
跟很多大公司打造自己的品牌字体做法类似,著名 Linux 发行商 Canonical 也请人做了一套 Ubuntu 字体作为 Ubuntu Linux 的默认西文字体,其中的 Ubuntu Mono 很适合程序员使用。这个字体很新潮很漂亮,接近完美,不足的一点是斜体的小写字母 a 跟小写字母 o 有点像——不同人的审美观真是差别大啊。
这个字体也有粉丝修改版 Bront Ubuntu Mono ,改了他看不顺眼的字符。
6. 其它好物
如果不介意小写字母 i 跟数字 1 有点像(其实我看了很多年 DejaVu 也没今天这么矫情过 ️),或者想要连字效果,那么还有一些值得一试的优秀字体:
- Cascadia Code ,微软给新鲜出炉的 Windows Terminal 打造的字体,免费送给大家用。这个字体非常漂亮,还支持连字,微软大大的良心!
- Go Mono ,Google 专门给 Go 语言设计的字体,这大概是编程语言史上的首次待遇。
- Mononoki ,给编程以及代码审查设计的字体,挺漂亮,就是斜体的 a 像字母 o ️
- Monoid ,号称在低分辨率屏幕以 12px 显示依然能如位图字体那般犀利的程序员字体,支持连字,实测确实效果非常好,强烈推荐。
- Victor Mono ,带手写体风格的斜体样子,漂亮的一塌糊涂,大爱!
字体安装
上面介绍字体的主页都有下载链接,手动下载安装并不难,但一个个的收集总是有点繁琐,惊喜的是有铁粉收集了大部分字体到一个项目里,提供了各种方便的安装方式,包括 macOS 下的 Homebrew。