Page 157 - css揭秘
P. 157

解决方案

                                                  我们真的可以用另一种字体来单独美化某个特定字符(或是某个区间内
                                              的多个字符),但其过程可能没有你想像中那么简单明了。

                                                  我们通常会在 font-family 声明中同时指定多个字体(即字体队列)。
                                              这样,即使我们指定的最优先字体不可用,浏览器还可以回退到其他符合整
                                              体设计风格的字体。但是,很多开发者都忽略了一点:这个机制对单个字符
                                              来说也是有效的。如果某款字体可用,但仅包括某几个字符,那它就只会用
                                              来显示这几个字符;而在显示其他字符时,浏览器就会回退到其他字体。这
                                              个规则对本地字体和通过 @font-face 规则引入的嵌入字体都是有效的。

                                                  在这个规则之下,如果有一款字体只包含一个字符(你肯定猜到是哪个
                                              了吧),那这款字体将只用于显示这个字符,其他字符会由字体队列中排在
                                              第二位、第三位或更后面的字体来显示。因此,只美化 & 符号的方法就浮
                                              出水面了:创建一种只包含 & 字形的 Web 字体,通过 @font-face 将其引
                                              入网页,然后把它排在字体队列中的第一位:

                                                  @font-face {
                                                      font-family: Ampersand;
                                                      src: url("fonts/ampersand.woff");
                                                  }

                                                  h1 {
                                                      font-family: Ampersand, Helvetica, sans-serif;
                                                  }

                                                  这个方法比较灵活,但如果我们只想用系统内建字体中的某一款来美化
                                              & 符号,这个方法就不够理想了:不仅生成字体文件很麻烦,还会增加一个
                                              额外的 HTTP 请求;如果你看中的这款字体不允许拆解使用,那你可能还要
                                              面对版权上的问题。有没有一种办法可以用本地字体来实现这种效果呢?
                                                  你可能已经了解 @font-face 规则中的 src 描述符还可以接受 local()
                                              函数,用于指定本地字体的名称。因此,不需要用到任何外部的 Web 字体,
                                              就可以直接在字体队列中指定一款本地字体:


                                                  @font-face {
                                                      font-family: Ampersand;
                                                      src: local('Baskerville'),
                                                           local('Goudy Old Style'),
                                                           local('Garamond'),
                                                           local('Palatino');
                                                  }

                                                  但是,如果你想马上试试 Ampersand 字体,会发现整段文本都会被应用
                    图 5-20
                                              为我们指定的某款衬线字体(参见图 5-20),因为这些字体本身涵盖了这段
                    通过 @font-face 引入本地字体,
                    导致这些字体被默认应用到整段            文本的所有字符。不过这并不表示我们走错了路,只是表示我们漏了一步没
                    文本上                       有走:还需要一个描述符来声明我们想用这几款本地字体来显示哪些字符。



                  126   第 5 章 字体排印







          ඀ࠡ  JOEC
   152   153   154   155   156   157   158   159   160   161   162