程序员用什么字体?

想法 · 2021-12-17

程序员都是一群自以为是的奇怪家伙,除了内卷的厉害,还有各自的坚持和攀比,不过攀比的倒不是什么衣食住行(主要是这方面一般比不过别人),比的也都是一些奇奇怪怪的东西,例如键盘上机械就鄙视薄膜,写代码vim就鄙视Jetbrains,用lua、rust、ruby的鄙视其它一众语言,而php却是最好的语言等等。

不过今天要提的不是这些常见的,而是字体,初听这个概念很奇怪,字体还有什么特殊的,宋体、楷体、黑体之类的都挺常见的,这种东西程序员还能玩出什么特别的?

其实要说的不是某一种字体,而是一类字体,这类字体叫等宽字体,什么叫等宽字体?跟其它非等宽字体有什么区别?

等宽字体

首先我们先看下常见的非等宽字体:

image-20211215150713403.png

对比下等宽字体:

image-20211215150650389.png

非等宽字体中上一行中的字符和下一行的字符是不一样宽的,所以同样的字符,大写字母与小写字母长度不一样,同样的26个字母,下一行长度要更长,导致上下行的字符并没有对齐,不对齐平常看没什么问题,按理说有的字符宽,有的字符窄,长的不一样宽也正常。但在代码当中,能带来一些好处。

  1. 对齐能让阅读起更轻松,同样的字符长度,能让上下行看起来更舒服
  2. 如果字体是非等宽的,那字符缩进了几个空格都不容易识别,尤其对于python这类对于极度依赖缩进的语言非常不友好
  3. 一般编码规范对于单行最大长度有限制,如果是非等宽的字体,会导致最大折行长度不一致

非等宽字体:

image-20211215150346252.png

image-20211215144429712.png

等宽字体:

image-20211215150418615.png

image-20211215144536800.png

不过等宽字体一般应用范围不是很广,出品方一般都是各技术公司,没有进入大众视野,大众也用不到,所以基本都不支持中文,当然中文本身天然是等宽的,所以找到两种匹配的中/英文字体组合下是可以得到完整等宽字体库的。

衬线字体

字体除了等宽与非等宽,还有另一个划分纬度:衬线字体与非衬线字体。

还是先看图吧:

image-20211215161806019.png

这是维基百科上的图,可以看到衬线字体就是在字体笔画起始或末端有点缀性的细节,比如中文中宋体就是衬线字体,黑体就是非衬线字体

image-20211215162416426.png

可以看出衬线字体更加正式富有美感,而非衬线字更加轻松简单。正式场合一般用衬线字,而对于阅读来说非衬线字体更容易阅读,衬线字体因为有过多点缀,容易视觉疲劳,所以计算机上更多使用非衬线字体,而且非衬线字体上多出的点缀对早年分辨率不高的显示器和字体渲染也是一个负担。另外易导致疲劳也是交通指示牌上使用非衬线字的原因。

image-20211215163039789.png

推荐字体

代码字体还要求各字符区识别性比较强,比如各类括号,o和0,1/大写的i/小写的L,这些是不是有足够的区分度,如果容易看错那就毛病比较大了;另外各字符之间也要留有一点空间,不能一个字符挨着一个字符,看起来融合成一坨。

这里举例一些比较有代表性的字体

  • Fira Code

    Fira Code是Mozilla公司出的,看起来线条细一点,加了一些边角的点缀,除了等宽的特性还有一个特点是ligatures,姑且叫做编程操作符连接性,比如能把一些2字符组合的操作符转换为长度为2的样式符。

image-20211215151340518.png

  • JetBrains Mono

    是著名IDE公司JetBrains出品的,看官网应该是脱胎于Consolas字体,整体相对于其它几个字体比较简约,去除掉了字体里的转角,小钩之类的。

image-20211215151800627.png

  • Source Code Pro

    Adobe公司出品的字体,字体略微显得矮一些,区分度不错。

image-20211215155621507.png

  • Monaco

    Apple的官方字体(国内新版本都换成了为中文设计的苹方字体),看起来比较厚重干净。

image-20211215160724269.png

  • Consolas

    Microsoft为Windows选的官方字体,配合Windows的Clear Type显示会更好一些,由于我没有Windows电脑,所以没办法评价了

Theme Jasmine by Kent Liao Modified by eLangX