表示大于等于关系通常使用大于等于符号 ,编程语言也沿用了这个符号。但是因为这个符号输入不便,所以拆成了外形相似的 >= 。能不能在不改变现有语言的情况下使用 还能编译通过呢。当然是可以的啦!要不然就不会有这篇文章了= =

合字

先来看一段 C 语言代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

int main(int argc, char const *argv[])
{
int number = 0;
scanf("%d",&number);
if (0 <= number && number <= 60)
{
printf("你挂了!\n");
}
else
{
printf("还好没挂!\n");
}
return 0;
}

很简单的程序,好像没什么特别的。但是注意看第七行也就是第一个 if 中的 符号。有没有发现它居然不是 >= ,并不是作弊使用了 不信你选择大于等于符号试试。(浏览器版本太低会看不到效果。建议升级 Chrome 或者使用水果机上的 Safari 浏览本页)

选择时会发现,这个 居然占了两个字符。也就是可以选择前一半,再选择后一半。

并不是只是在网页上可以有这种效果。编辑器里面也是可以的。

Visual Studio 2015 ≤可以被部分选择

为什么可以输入的是 >= ,显示的却是 ,而编辑器识别的是 >= 呢?

因为使用了特殊的字体。这个字体中用到了合字ligature)技术

合字,顾名思义,就是将字合到一起。

比如 a 和 e 对应的合字是 æ 。

其实 & 是一个合字,由 e 和 t 合成。

& 由 e 和 t 合成

使用了合字技术后,编辑器会将字体中指定的两个字符渲染为它们的合字。

所以 >= 会被渲染为它们的合字

FiraCode

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 还有其他支持合字的编程字体

最后

支持合字的编程字体还很少。使用合字能够让代码看起来更易读,而且能一眼看出错误的字符输入。但是 FiraCode 感觉不是很好看。什么时候有大神能让 Consolas 支持合字技术啊。