FiraCode
表示大于等于关系通常使用大于等于符号 ≥ ,编程语言也沿用了这个符号。但是因为这个符号输入不便,所以拆成了外形相似的 >= 。能不能在不改变现有语言的情况下使用 ≥ 还能编译通过呢。当然是可以的啦!要不然就不会有这篇文章了= =
合字
先来看一段 C 语言代码。
1 |
|
很简单的程序,好像没什么特别的。但是注意看第七行也就是第一个 if 中的 ≥ 符号。有没有发现它居然不是 >= ,并不是作弊使用了 ≥ 不信你选择大于等于符号试试。(浏览器版本太低会看不到效果。建议升级 Chrome 或者使用水果机上的 Safari 浏览本页)
选择时会发现,这个 ≥ 居然占了两个字符。也就是可以选择前一半,再选择后一半。
并不是只是在网页上可以有这种效果。编辑器里面也是可以的。

为什么可以输入的是 >= ,显示的却是 ≥ ,而编辑器识别的是 >= 呢?
因为使用了特殊的字体。这个字体中用到了合字(ligature)技术
合字,顾名思义,就是将字合到一起。
比如 a 和 e 对应的合字是 æ 。
其实 & 是一个合字,由 e 和 t 合成。

使用了合字技术后,编辑器会将字体中指定的两个字符渲染为它们的合字。
所以 > 和 = 会被渲染为它们的合字 ≥ 。
FiraCode
FiraCode 是为数不多的支持合字的编程字体。
支持将 >= 转为 ≥ ,-> 转为 → 和 != 转为 ≠ 等。
全部字符如下

在 VS2015 中启用 FiraCode 也很简单
首先下载 FiraCode 字体。
解压,打开 TTF 文件夹,在 FiraCode-Regular.ttf 上右键安装。 这样字体就安装完成。
接着在 VS 修改字体。
工具→选项→环境→字体和颜色→FiraCode
试着输入 >= 和 != 看看吧。
是不是看到了 != 输入后直接变成了 ≠
FiraCode 支持 -> 转为 → 但是 VS 不支持,所以看不到效果。(鬼知道为什么选择性地支持合字。)
FiraCode 除了支持 VS 之外还支持以下编辑器
| 支持 |
|---|
| Anjuta (unless at the EOF) |
| AppCode (2016.2+, instructions) |
| Atom 1.1 or newer (instructions) |
| BBEdit (instructions) |
| Brackets (with this plugin) |
| Chocolat |
| CLion (2016.2+, instructions) |
| Coda 2 |
| CodeLite |
| Eclipse (Linux) |
| Geany |
| gEdit / Pluma |
| GNOME Builder |
| IntelliJ IDEA (2016.2+, instructions) |
| Kate, KWrite |
| Komodo |
| Leafpad |
| LibreOffice |
| LightTable (instructions) |
| MacVim 7.4 or newer (instructions) |
| Mancy |
| Meld |
| Mousepad |
| NetBeans |
| Notepad (Win) |
| PhpStorm (2016.2+, instructions) |
| PyCharm (2016.2+, instructions) |
| QtCreator |
| RStudio (instructions) |
| RubyMine (2016.2+, instructions) |
| Scratch |
| TextAdept (Linux, Mac) |
| TextEdit |
| TextMate 2 |
| Visual Studio 2015 |
| Visual Studio Code (instructions) |
| WebStorm (2016.2+, instructions) |
| Xamarin Studio/Monodevelop |
| Xcode (with this plugin) |
| Probably work: Smultron, Vico |
除了 FiraCode 还有其他支持合字的编程字体
- Hasklig (free)
- PragmataPro (€59)
- Monoid (free)
- Fixedsys Excelsior (free)
- Iosevka (free)
- DejaVu Sans Code (free)
最后
支持合字的编程字体还很少。使用合字能够让代码看起来更易读,而且能一眼看出错误的字符输入。但是 FiraCode 感觉不是很好看。什么时候有大神能让 Consolas 支持合字技术啊。