‹ 指南

字体连字 v26.5.1+

-> != => 画成字体为它们设计的那一个符号,每个字符的列一格不动。

需要 Term v26.5.1 或更高版本。

撰写于

有什么不同

写代码用的字体大多自带连字:-> 画成一个箭头,!= 画成带斜线的等号,>= 画成真正的 ≥。Term 以前逐个字符单独绘制,字体里的连字从来显示不出来。打开之后就能看到了。

关闭 Iosevka Term 下的终端截图:几行代码里的 ->、!=、>=、=>、===、<=、|>、-->、==>、<=> 都是分开的字符。
关闭:每个字符单独绘制,和输入的一模一样。
打开 同样几行打开连字后:-> 是一个箭头,!= 是带斜线的等号,还有 ≥、≤、双箭头 => 和三横 ===。
打开:同样的几行、同一部手机、同一个字体。每个运算符成了一个符号,而且什么都没挪位,每个字符仍在自己那一列。

变的只是字符的画法,文本本身不动:-> 仍是两个字符,光标照样一个字符一个字符地走过去,复制出来还是 ->,按列对齐的程序看到的和以前完全一样。

打开方法

设置 → 终端 → 字体连字。 开关立即生效,所有打开的标签页都会跟着变。默认是关闭的,因为不少人更愿意看到自己敲下的原样字符。

设置 → 终端:终端字体为 Iosevka Term,终端字号 11pt,字体连字开关已打开。
设置 · 终端。 开关就在字号下面,只在带连字的字体里才有效果。截图为英文界面。

字体列表里有四款带连字:Iosevka Term(内置,也是默认字体),以及可以在 终端字体 里下载的 JetBrains Mono、Fira Code 和 Cascadia Code。其他字体没有连字可显示,打开开关后照旧绘制。Monaspace Neon 的连字放在可选的样式集里,Term 不会启用。

每个字体画法不同

连字是一种设计,不是统一规则,所以同一行在不同字体里各有样子。

同一行运算符在四个字体里各占一行:Cascadia Code、JetBrains Mono、Fira Code、Iosevka Term。
从上到下:Cascadia Code、JetBrains Mono、Fira Code、Iosevka Term。同一行 a->b != c => d === e <= f >= g |> h --> ==> <=> :: www,箭头和横线随字体变化;www 保持字母(见下文)。

会不会变慢

不会有能感觉到的差别。Term 只处理两个及以上相连的符号,普通文字、ls 输出这类内容完全跳过这一步。每一段只计算一次并记下结果,回滚看同一段代码不会多花工夫。我们在手机上实测,满屏运算符滚动时,开关打开和关闭一样流畅。

什么时候会拆开

有几处会特意显示原样字符。

光标在 = 上 shell 提示符后输入了 [ "$a" != "$b" ],光标停在 = 上:!= 显示为两个字符。
光标移开后 同一行,光标在行尾:!= 显示为一个带斜线的等号。
光标所在处的运算符显示为你正在编辑的原样字符,光标一移开又会合上。

颜色一变就拆开

运算符的两半颜色不同时,比如语法高亮把 - 和 > 标成不同颜色,它们保持两个字符,颜色不会渗到隔壁。

只连符号,不连字母

Term 只合并由标点组成的运算符。由字母组成的连字,比如 Fira Code 的 www 和 0x,保持为字母;Monaspace 按字母宽度调整的“texture healing”也不做。

更多关于终端字体:中文加粗,终于能看清了 · 这些字符都能正常显示吗?