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
   149   150   151   152   153   154   155   156   157   158   159