谈谈网页设计中的字体应用Font Set

Hihi, 大家好~  最近有不少人都提及了网页上该如何选择字体的问题。问题虽然小,但是却是前端开发中的基本,因为目前的网页,还是以文字信息为主,而字体,作为文字表现形式的最重要参数之一,自然有着相当重要的地位。可惜字体的重要性在很长时间内并没有得到足够的重视。很多人对字体的概念还是停留在 font-family: "宋体", Arial, Helvetica, serif 的阶段,却不明白为什么这样设置,这样设置是否合理等等。现在就让我说说字体的来龙去脉吧。

- font-family

大家知道CSS规则中定义字体是通过 font-family 这条规则来实现的。仔细翻翻CSS的文档,却没有发现任何能指定某一个特定字体的规则。

想想十年前,你可以随处看见类似于这样的代码:

<font face="Frankin Gothic Book">Lorem Ipsum</font>

几乎不会有人考虑到,Frankin Gothic Book是一个 Windows only 的字体。在一台Mac上根本看不到Frankin Gothic Book字体的效果,系统因为找不到这种字体,就改用Mac的默认字体显示了。于是,网页的风格就和原来完全不一样了,根本达不到Frankin Gothic Book的效果。于是W3C提出了font set 的概念——将一系列近似的字体按照优先级顺序组成一个列表;浏览器从列表头部开始匹配,知道找到第一个可用的字体,并使用该字体进行显示。

比如上面这个例子,我们可以创建这样的一个font set:

<span style='font-family: "Franklin Gothic Book","Lucida Grande"'>Lorem Ipsum</span>


我们来看看浏览器怎么来呈现这段文字吧:

  • Windows下:浏览器从列表的第一个字体开始搜索——系统中存在Frankin Gothic Book,使用Frankin Gothic Book字体显示。
  • Mac 下:浏览器从列表的第一个字体开始搜索——系统中不存在Frankin Gothic Book,搜索失败。继续搜索下一个字体——Lucida Grande。系统中存在Lucida Grande字体,终止搜索,并用Lucida Grande字体显示。

这样在Mac上,Mac就能以与Frankin Gothic Book类似的Lucida Grande字体显示这段文字。

但是可能存在一台电脑,上面既没有Frankin Gothic Book字体,也没有Lucida Grande字体,那么它仍然无法正确显示上面的这段文字。于是开发人员不得不在这个字体列表中不断增加字体以适应各种系统,导致这个font set失去原本的“组织近似字体”的作用。于是font set中引入了“通用字体族”,也就是我们经常看见的 serif 和 sans-serif。我会在今后的文章中详细的介绍这两个,以及一些其他的通用字体族。在这里,我们可以简单的将它们理解为一种“在所有指定字体都失效的情况下,浏览器指定的一种最终的代用字体”。

比如我们在改进一下上面的那段示例文字:

<span style='font-family: "Franklin Gothic Book","Lucida Grande",sans-serif'>Lorem Ipsum</span>


我们再看看浏览器怎么来呈现这段改进后的文字吧:

  • Windows下:浏览器从列表的第一个字体开始搜索——系统中存在Frankin Gothic Book,使用Frankin Gothic Book字体显示。
  • Mac 下:浏览器从列表的第一个字体开始搜索——系统中不存在Frankin Gothic Book,搜索失败。继续搜索下一个字体——Lucida Grande。系统中存在Lucida Grande字体,终止搜索,并用Lucida Grande字体显示。
  • 某系统:浏览器从列表的第一个字体开始搜索——系统中不存在Frankin Gothic Book,搜索失败。继续搜索下一个字体——系统中也不存在Lucida Grande字体。继续搜索下一个字体——通用字体sans-serif。浏览器应用它的默认sans-serif字体"Arial"来显示这段文字。

请注意两点。首先,通用字体族具体对应哪个字体,是由浏览器决定的。上面例子中浏览器指定Arial为sans-serif字体,但完全有可能另一个浏览器指定Helvetica 为它的sans-serif字体。具体哪个字体被最终应用,是无法预期的。其次,通用字体族只是一种在font set中其他字体都无效时的代用方案。因此——设计者应该尽可能的给出齐全的font set,以尽可能的覆盖所有的系统,而不应该依赖于通用字体族

类似于以下的两种写法都是错误的:

<span style="font-family:sans-serif">Lorem Ipsum</span>
<span style="font-family:sans-serif,Arial">Lorem Ipsum</span>

第一种写法的错误在于——它相当于根本没有指定字体,仍旧是交由浏览器选择字体。写了相当于没写。

第二种写法的错误在于顺序。因为通用字体族应该在一个font set中其它所有字体都失效时才起作用。因此,将指定字体放在通用字体之后,会造成制定字体尚未匹配时就使用了通用字体。所以,你应该务必使通用字体处在font set中的最后一位。

另外,这里要说明两件事情。

首先,浏览器应用font set中哪个字体的规则虽然看上去很简单,但其实非常trickish。我会在以后的文章中做出具体的说明。

其次,虽然字体的CSS规则名称叫font-family, 但它的实质是一个font set,而不等是印刷意义上的font family。印刷上的font family 是指一系列相同字样的不同强度组合,比如Lucida Family(包括Lucida Sans, Lucida Sans Typewriter, Lucida Console, Lucida Grande等等)和Arial Family(Arial, Arial Black, Arial Rounded MT等等),但显然这些font family 都不适合直接拿来当作一个font set来使用。

今天就到这里了哟。下次我们来仔细谈谈通用字体族。

(0)

相关推荐

  • 谈谈网页设计中的字体应用Font Set

    Hihi, 大家好~  最近有不少人都提及了网页上该如何选择字体的问题.问题虽然小,但是却是前端开发中的基本,因为目前的网页,还是以文字信息为主,而字体,作为文字表现形式的最重要参数之一,自然有着相当重要的地位.可惜字体的重要性在很长时间内并没有得到足够的重视.很多人对字体的概念还是停留在 font-family: "宋体", Arial, Helvetica, serif 的阶段,却不明白为什么这样设置,这样设置是否合理等等.现在就让我说说字体的来龙去脉吧. - font-famil

  • 网页设计中的 serif 和 sans-serif字体应用

    Howdy, 大家好,又是我~ 上一次我们简单的谈了一下font set和一些要注意的基本问题.今天我们继续字体这一话题,深入讲讲上次提到的"通用字体族".首先是最常用的 serif 和 sans-serif 这两个通用字体族. - serif Serif 在印刷学上指衬线字体.为了理解衬线字体的概念,大家先看几个典型的衬线字体的例子: My Georgia字体 King Times New Roman 字体 汉字 宋体 单词 My 中的字母 "M"上下方突出的短横

  • 网页设计中色彩搭配的内涵

    网页的色彩搭配往往是网友们感到头疼的问题,尤其是那些完全没有美术基础的网友.到底用什么色彩搭配好看呢?  一.红色的色感温暖,性格刚烈而外向,是一种对人刺激性很强的色.红色容易引起人的注意,也容易使人兴奋.激动.紧张.冲动.还是一种容易造成人视觉疲劳的色.  1.在红色中加入少量的黄,会使其热力强盛,趋于躁动.不安.  2.在红色中加入少量的蓝,会使其热性减弱,趋于文雅.柔和.  3.在红色中加入少量的黑,会使其性格变的沉稳,趋于厚重.朴实.  4.在红中加入少量的白,会使其性格变的温柔,趋于含

  • 幻灯片带网页设计中的20个奇妙应用示例小结

    下面这些网站使用了各种各样的幻灯片效果,一起体验一下.大家如果想实现精美的 jQuery 幻灯片效果,可以参考这篇文章:60款很酷的 jQuery 幻灯片演示和下载. x-doria Pure Pleasure Design neve / hawk Hufton + Crow Atelier rdio Olly Sorsby Studio Chirpy Aveillant Level Planoform The Kitchen The Barrelhouse Flat Exsud Creativ

  • Dreamweaver网页设计制作技巧与提高 好东西

    1.灵活运用样式 熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,也可以在状态栏中的元素列表上单击右键来调用Style.虽然不同的方法达到的效果看似一样,但实际上产生的HTML代码则完全不同.比如用Custon Style来调用Style标准,在网页代码中就生成一个〈span〉标签,这样的标签一多就会使文件十分臃肿而且影响浏览器的解析速度,所以我们应尽量使用状态栏中的元素列表来调用Style. 2.活用Format Tab

  • CSS 中关于字体处理效果的思考

    作者:flyingbird 来自:蓝色理想 字体的处理在网页设计中无论怎么强调也不为过,毕竟网页使用来传递信息的,而最经典最直接的信息传递方式就是文字,所以,了解一点字体的基本知识对于设计来说还是非常重要的. 中文和英文的最大区别就是中文是方块字,英文是拼音文字,这对字体的处理的影响是巨大的.看看下面的图示就会发现,英文字体里的那些变化在中文字体里都弱化了. 作为中文的读者,习惯性的接受方块形状做为阅读的单元,其实对于眼睛来说,这是一种容易疲劳的方式,阅读的时候你的视线实际上是跟随整行文字的外形

  • 什么叫标准网页设计?

    我们必须知道的! 每个网页都是由'内容'与'表现'组织起来的. 内容:就是我要显示什么.(使用HTML) 表现:怎么显示的更好.(使用CSS,学习CSS教程) 作为一个负责的网页设计者,你要牢记,标准网页设计中,HTML只是负责显示内容的,具体怎么显示,怎么排版是CSS的事.

  • 谈谈node.js中的模块系统

    Node.js 的模块 JavaScript 做为一门为网页添加交互功能的简单脚本语言问世,在诞生时并不包含模块系统,随着 JavaScript 解决问题越来越复杂,把所有代码写在一个文件内,用 function 区分功能单元已经不能支撑复杂应用开发了,ES6 带来了大部分高级语言都有的 class 和 module,方便开发者组织代码 import _ from 'lodash'; class Fun {} export default Fun; 上面三行代码展示了一个模块系统最重要的两个要素

  • Java实现替换PDF中的字体功能

    目录 引入jar Java代码 1. 替换所有字体 2. 替换指定字体 文档中可通过应用不同的字体来呈现不一样的视觉效果,通过字体来实现文档布局.排版等设计需要.应用字体时,可在创建文档时指定字体,也可以用新字体去替换文档中已有的字体.下面,以Java代码展示如何来替换PDF中的已有字体,包括: 替换所有字体 替换指定字体 引入jar Maven程序中配置pom.xml: <repositories> <repository> <id>com.e-iceblue<

  • 如何在React项目中引入字体文件并使用详解

    目录 前言 下面讲下如何引入字体文件并使用 一.下载字体包 二.将字体文件放到项目里 三.使用新字体 总结 前言 在做React项目的时候,发现UI设计给出的设计稿里,某些文字所用的字体,系统默认不支持.比如设计需要的这个字体:EmerlandRegular,即使在css里将文字字体设置为他们,实际效果也显示不出来. <Typography style={{ fontSize:'22px', fontFamily:'EmerlandRegular', textAlign:'center', co

随机推荐