小姿势首页投稿(暂停使用,暂停投稿)程序员

你可能不知道的font

2016-02-15  本文已影响1667人  SuperSnail

对于字体的认识一直有一个误区:
我们可能一直认为font-family是某一种字体,实际上,它指的是一个字体的系列。
比如说Times,它实际上是多种变形的一个组合。包括,TimesRegular,TimesBold,TimesItalic,TimesOblique,TimesBoldItalic,TimesBoldOblique等。

除了各种特定的字体系列外,CSS还定义了5种通用的字体系列

一张图区分衬线字体和无衬线字体 Monospace字体 Cursive字体 Fantasy字体

理论上来说,用户安装的任何字体都应该属于以上某个系列,但是也有可能有例外,不过这种例外并不多。

** 在这里不得不提的是浏览器的默认字体**
浏览器都会有默认的一个字体系列,在代码没有设置字体类型的时候,就会以默认的字体系列展示。众所周知,在中文版window下,IE,Chrome,Firefox的默认中文字体都是中易宋体。因此当字体系列名称为serif,sans-serif,monospace均使用中易宋体字体库。

MAC OS X下浏览器的默认中文字体是华文黑体。

要注意的是,在设置font-family的时候要以字体系列名称(generic-family)比如,serif,这样的结尾,因为在generic-family后面设置的字体名称是不会生效的。

比如:

font-family:arial,sans-serif,Simsun;
font-family:Simsun,sans-serif;

以上两个font-family来看,如果浏览器的默认字体是微软雅黑。第一个会以微软雅黑来展示,第二个会以宋体来展示。
原因就是因为第一个设置在sans-serif后面的宋体是失效的。

关于字体的属性

这样的话,用户代理会自己选择一个无衬线字体,并将其运用到body元素上。

这样就会将微软雅黑应用于body元素,如果用户代理找不到微软雅黑这个字体,它只能使用用户代理默认的字体来显示,除此之外,什么都不做。

当然,我们也可以结合使用字体系列和字体名

    body{font-family:microsoft yahei,sans-serif;}

这样在找不到微软雅黑字体的情况下,则会使用另一种无衬线字体。

处于这样的考虑,就很建议在写font-family的时候提供一个通用字体系列,这样,就提供了一个在找不到预设字体时候的备选方案。书写的方法是,确定这些字体的优先顺序,然后用逗号分隔。
比如:

    body{font-family:Times,TimesNR,'New Century Schoolbook',Georgia,'New York',serif;}

如果经过以上两步没有匹配到字体,那么就会去寻找候选字体。

如果没有候选字体,用户代理将会为给定的通用字体选择一个默认字体。

上一篇 下一篇

猜你喜欢

热点阅读