5 款适合程序员的开源字体 ====== ![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/documentation-type-keys-yearbook.png?itok=Q-ELM2rn) 什么是最好的编程字体呢?首先,你需要考虑到字体被设计出来的初衷可能并不相同。当选择一款用于休闲阅读的字体时,读者希望该字体的字母能够顺滑地衔接,提供一种轻松愉悦的体验。一款标准字体的每个字符,类似于拼图的一块,它需要被仔细的设计,从而与整个字体的其他部分融合在一起。 然而,在书写代码时,通常来说对字体的要求自然会更具功能性。这也是为什么当给定选择时,程序员更偏爱使用固定宽度的等宽字体。选择一款带有容易分辨的数字和标点的字体在美学上令人愉悦;但它是否拥有满足你需求的版权许可也是非常重要的。 使得一个字体更适合编程需要某些特定的需求。首先使得一款等宽字体看上去有条不紊需要一个非常详细的设定。这里,请考虑一会儿字母 `w` 和字母 `i` 之间的对比吧。当选择一款字体时,正如字母一样,在字母周围的空白也同样值得考虑。在物理书和新闻排版中,高效地使用空格也极为重要,相比于相对宽大的字母 `w`,字体将赋予相对瘦小的 `i` 更少的宽度。 然而在终端中,很幸运你将没有这些限制。每个字符享有相等的空白将非常有用。这么做的首要好处是你可以高效地通过简单的扫一下代码块,推测出你的代码有多长。第二个好处是能够很容易地对齐字符和标点,字符的高亮在视觉上更加明显。另外打印纸张上的等宽字体比均衡字体更加容易识别。 在本篇文章中,我们将探索 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 变种风格下 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) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [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