Page 154 - css揭秘
P. 154
24 连字
难题
就像人与人一样,字形(glyph)与字形也不都是和睦相处的。举个
例子,大多数衬线字体中的 f 和 i 就是如此。i 的圆点往往会与 f 的升部
(ascender)发生冲突,导致两者都显示不清(参见图 5-15 中的第一个例子)。
为了缓解这个问题,字体设计师通常会在字体中包含一些额外的字形,
称作连字(ligature)。这些字形被设计为双字形或三字形的单一组合体,专
门提供给排版软件使用,代为显示特定的字符组合。举例来说,图 5-15 就
列出了一些常见的连字,我们可以看出这些连字的显示效果比原有普通字形
1
①
的组合效果好很多 。
还有一种所谓的酌情连字(discretionary ligature),它纯粹是一种设计上
的备选风格,并非是因为某些字符在相邻时会相互干扰(参见图 5-16)。
不过,浏览器在默认情况下永远也不会使用酌情连字(这种行为是
正确的),而且往往不会使用通用连字(这就是个 bug 了)。其实在不久之
前,我们还只能通过 Unicode 中的连字字符来强制产生连字效果,比如输入 图 5-15
fi 可以得到 fi 的连字字符。这种方法显然是得不偿失的。 大多数衬线字体中常见的连字
场景
显然,它让结构层的代码变得很不好读,而且更不好写。(但愿你能
认出 define 这个单词是什么!)
如果当前字体不包含这个连字字符,结果就跟“绑票字条”一个样
(参见图 5-17)。
并不是每个连字效果都有一个对等的、标准的 Unicode 字符。比如,
还没有任何 Unicode 字符跟 ct 的连字效果有关系,所有包括这个连
字字型的字体都只能把它存放在 Unicode 的 PUA(Private Use Area,
私有用途区)区块中。
这会破坏文本的可访问性,包括对文本的复制 / 粘贴、搜索,以及语
音处理等。有很多智能的应用程序可以很好地处理这种情况,但这不
代表整体情况。在某些浏览器中,这些字符甚至无法被正常搜索到。
不过在眼下这个时代,应该已经有更好的办法出现了,对吧? 图 5-16
很多经过专业设计的衬线字体也
会自主设置一些非常规的连字
① 实际上我们常用的简写 and 符号(&)最开始就是字母 E 和 t 的连字(et 在拉丁文中就是
and 的意思)。
24 连字 123
ࠡ JOEC