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 支持合字技术啊。