或者叫“为什么PDF里拷出来的有些字会消失”, “为什么有些字体里fi可以连在一起”, “Fira Code是怎么做到连体符号的”

ligature

ligature,维基百科中文页是叫“合字”,其实概念意义上更接近“连字”。 正如字面意义上,连字就是连在一起的字,比如中文的连字是这样的:

俗话说,见字如见人。

有的专家根据特总的签名, 分析说他的狂放就如同他那一横一样不羁……

trump-chinese-ligature

在拉丁语系中,很多时候会用到连字这一特性。 比如说德语的字母 ß 最开始其实是 ss拉丁字母中的 W 最开始的时候是 VV, 两个 V, 非常神奇。 而我们熟悉的音标里的 æ 这个字母, 看起来很像连字,但其实不是连字, æ 是古英语等一系列语系里真实用到的字母。

fi与印刷体

在活字印刷盛行的时候, 人们都是用字模来印文章的。 一篇文章, 假如要用不同的字体, 那就要选用对应的不同的字模。

fi

有些字体里面当 字母f 和 字母i 连在一起的时候, f 的一横会跟 i 的一点撞上,导致不好排版。 所以为了方便、美观,有些字体直接会有 fi 连字的字模。 这里不论是印刷字体的连字,还是上面手写字体的连字, 都是一样的概念,都叫 ligature

电脑字体里的 ligature

虽然说电脑字体不会有印刷字体所有的物理限制, 但有些字体的 fi 还依然保留了 ligature 的这一特性。 假如你在你的电脑字体配置页面找一找, 是可以找到相关的属性的。

基于电脑也能支持连字这个设定, 于是聪明的人就想到了可以用它来搞事! 比如有一款字体叫 Fira Code

Fira Code 宣称自己是最适合程序员的编程语言, 因为它对各种数学符号都极度友好(细节请点开下图)

fira-code-demo

当然前提是编辑器也要能支持 ligature, 比如像 JetBrains系IDE:

jetbrains-ligature

果然正如古代智慧说的一样:

苟日新,日日新,又日新

还是要多学习一个呀。