5 款适合程序员的开源字体 ====== > 编程字体有些在普通字体中没有的特点,这五种字体你可以看看。 ![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/documentation-type-keys-yearbook.png?itok=Q-ELM2rn) 什么是最好的编程字体呢?首先,你需要考虑到字体被设计出来的初衷可能并不相同。当选择一款用于休闲阅读的字体时,读者希望该字体的字母能够顺滑地衔接,提供一种轻松愉悦的体验。一款标准字体的每个字符,类似于拼图的一块,它需要被仔细的设计,从而与整个字体的其他部分融合在一起。 然而,在编写代码时,通常来说对字体的要求更具功能性。这也是为什么大多数程序员在选择时更偏爱使用固定宽度的等宽字体。选择一款带有容易分辨的数字和标点的字体在美学上令人愉悦;但它是否拥有满足你需求的版权许可也是非常重要的。 某些功能使得字体更适合编程。首先要清楚是什么使得等宽字体看上去井然有序。这里,让我们对比一下字母 `w` 和字母 `i`。当选择一款字体时,重要的是要考虑字母本身及周围的空白。在纸质的书籍和报纸中,有效地利用空间是极为重要的,为瘦小的 `i` 分配较小的空间,为宽大的字母 `w` 分配较大的空间是有意义的。 然而在终端中,你没有这些限制。每个字符享有相等的空间将非常有用。这么做的首要好处是你可以随意扫过一段代码来“估测”代码的长度。第二个好处是能够轻松地对齐字符和标点,高亮在视觉上更加明显。另外打印纸张上的等宽字体比均衡字体更加容易通过 OCR 识别。 在本篇文章中,我们将探索 5 款卓越的开源字体,使用它们来编程和写代码都非常理想。 ### 1、Firacode:最佳整套编程字体 ![FiraCode 示例][1] *FiraCode, Andrew Lekashman* 在我们列表上的首款字体是 [FiraCode][3],一款真正符合甚至超越了其职责的编程字体。FiraCode 是 Fira 的扩展,而后者是由 Mozilla 委托设计的开源字体族。使得 FiraCode 与众不同的原因是它修改了在代码中常使用的一些符号的组合或连字,使得它看上去更具可读性。这款字体有几种不同的风格,特别是还包含 Retina 选项。你可以在它的 [GitHub][3] 主页中找到它被使用到多种编程语言中的例子。 ![FiraCode compared to Fira Mono][2] *FiraCode 与 Fira Mono 的对比,[Nikita Prokopov][3],源自 GitHub* ### 2、Inconsolata:优雅且由卓越设计者创造 ![Inconsolata 示例][4] *Inconsolata, Andrew Lekashman* [Inconsolata][5] 是最为漂亮的等宽字体之一。从 2006 年开始它便一直是一款开源和可免费获取的字体。它的创造者 Raph Levien 在设计 Inconsolata 时秉承的一个基本原则是:等宽字体并不应该那么糟糕。使得 Inconsolata 如此优秀的两个原因是:对于 `0` 和 `o` 这两个字符它们有很大的不同,另外它还特别地设计了标点符号。 ### 3、DejaVu Sans Mono:许多 Linux 发行版的标准配置,庞大的字形覆盖率 ![DejaVu Sans Mono example][6] *DejaVu Sans Mono, Andrew Lekashman* 受在 GNOME 中使用的带有版权和闭源的 Vera 字体的启发,[DejaVu Sans Mono][7] 是一个非常受欢迎的编程字体,几乎在每个现代的 Linux 发行版中都带有它。在 Book Variant 风格下 DejaVu 拥有惊人的 3310 个字形,相比于一般的字体,它们含有 100 个左右的字形。在工作中你将不会出现缺少某些字符的情况,它覆盖了 Unicode 的绝大部分,并且一直在活跃地增长着。 ### 4、Source Code Pro:优雅、可读性强,由 Adobe 中一个小巧但天才的团队打造 ![Source Code Pro example][8] *Source Code Pro, Andrew Lekashman* 由 Paul Hunt 和 Teo Tuominen 设计,[Source Code Pro][9] 是[由 Adobe 创造的][10],成为了它的首款开源字体。Source Code Pro 值得注意的地方在于它极具可读性,且对于容易混淆的字符和标点,它有着非常好的区分度。Source Code Pro 也是一个字体族,有 7 中不同的风格:Extralight、Light、Regular、Medium、Semibold、Bold 和 Black,每种风格都还有斜体变体。 ![Differentiating potentially confusable characters][11] *潜在易混淆的字符之间的区别,[Paul D. Hunt][10] 源自 Adobe Typekit 博客。* ![Metacharacters with special meaning in computer languages][12] *在计算机领域中有特别含义的特殊元字符, [Paul D. Hunt][10] 源自 Adobe Typekit 博客。* ### 5、Noto Mono:巨量的语言覆盖率,由 Google 中的一个大团队打造 ![Noto Mono example][13] *Noto Mono, Andrew Lekashman* 在我们列表上的最后一款字体是 [Noto Mono][14],这是 Google 打造的庞大 Note 字体族中的等宽版本。尽管它并不是专为编程所设计,但它在 209 种语言(包括 emoji 颜文字!)中都可以使用,并且一直在维护和更新。该项目非常庞大,是 Google 宣称 “组织全世界信息” 的使命的延续。假如你想更多地了解它,可以查看这个绝妙的[关于这些字体的视频][15]。 ### 选择合适的字体 无论你选择那个字体,你都有可能在每天中花费数小时面对它,所以请确保它在审美和哲学层面上与你产生共鸣。选择正确的开源字体是确保你拥有最佳生产环境的一个重要部分。这些字体都是很棒的选择,每个都具有让它脱颖而出的功能强大的特性。 -------------------------------------------------------------------------------- via: https://opensource.com/article/17/11/how-select-open-source-programming-font 作者:[Andrew Lekashman][a] 译者:[FSSlc](https://github.com/FSSlc) 校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]:https://opensource.com [1]:https://opensource.com/sites/default/files/u128651/firacode.png (FiraCode example) [2]:https://opensource.com/sites/default/files/u128651/firacode2.png (FiraCode compared to Fira Mono) [3]:https://github.com/tonsky/FiraCode [4]:https://opensource.com/sites/default/files/u128651/inconsolata.png (Inconsolata example) [5]:http://www.levien.com/type/myfonts/inconsolata.html [6]:https://opensource.com/sites/default/files/u128651/dejavu_sans_mono.png (DejaVu Sans Mono example) [7]:https://dejavu-fonts.github.io/ [8]:https://opensource.com/sites/default/files/u128651/source_code_pro.png (Source Code Pro example) [9]:https://github.com/adobe-fonts/source-code-pro [10]:https://blog.typekit.com/2012/09/24/source-code-pro/ [11]:https://opensource.com/sites/default/files/u128651/source_code_pro2.png (Differentiating potentially confusable characters) [12]:https://opensource.com/sites/default/files/u128651/source_code_pro3.png (Metacharacters with special meaning in computer languages) [13]:https://opensource.com/sites/default/files/u128651/noto.png (Noto Mono example) [14]:https://www.google.com/get/noto/#mono-mono [15]:https://www.youtube.com/watch?v=AAzvk9HSi84