1、 网页自定义字体 CSS font-face 应用及制作网页设计之 CSS font-face 应用网页字体自定义 CSS 中 font-face 应用,当你访问淘宝谷歌等网站,发现他们的 ICON 不管网站如何缩放都不会变虚的时候,是不是很好奇如何实现的,答案是:font-face 实现的,为了能让更多的朋友知道如何使用他,今天我主要把自己的一点学习过程贴上来和大家分享。font-face 的语法规则:font-face font-family: ;src: , *;font-weight: ;font-style: ;取值说明YourWebFontName:此值指的就是你自定义的字体名称,
2、最好是使用你下载的默认字体,他将被引用到你的 Web 元素中的 font-family。如“font-family:“YourWebFontName“;” source:此值指的是你自定义的字体的存放路径,可以是相对路径也可以是绝路径; format:此值指的是你自定义的字体的格式,主要用来帮助浏览器识别,其值主要有以下几种类型:truetype,opentype,truetype-aat,embedded-opentype,avg 等; weight 和 style:这两个值大家一定很熟悉,weight 定义字体是否为粗体,style 主要定义字体样式,如斜体。兼容浏览器说到浏览器对font
3、-face 的兼容问题,这里涉及到一个字体 format 的问题,因为不同的浏览器对字体格式支持是不一致的,这样大家有必要了解一下,各种版本的浏览器支持什么样的字体,前面也简单带到了有关字体的几种格式,下面我就分别说一下这个问题,让大家心里有一个概念:一、TureTpe(.ttf)格式:.ttf 字体是 Windows 和 Mac 的最常见的字体,是一种 RAW 格式,因此他不为网站优化, 支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome4+,Safari3+,Opera10+,iOS Mobile Safari4.2+】;二、OpenType(.otf)格式:.otf
4、字体被认为是一种原始的字体格式,其内置在 TureType 的基础上,所以也提供了更多的功能,支持这种字体的浏览器有 【Firefox3.5+,Chrome4.0+,Safari3.1+,Opera10.0+,iOS Mobile Safari4.2+】;三、Web Open Font Format(.woff)格式:.woff 字体是 Web 字体中最佳格式,他是一个开放的 TrueType/OpenType 的压缩版本,同时也支持元数据包的分离,支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome6+,Safari3.6+,Opera11.1+】;四、Embedded O
5、pen Type(.eot)格式:.eot 字体是 IE 专用字体,可以从 TrueType 创建此格式字体 ,支持这种字体的浏览器有【IE4+】;五、SVG(.svg)格式:.svg 字体是基于 SVG 字体渲染的一种格式,支持这种字体的浏览器有【Chrome4+,Safari3.1+,Opera10.0+,iOS Mobile Safari3.2+】。这就意味着在font-face 中我们至少需要 .woff,.eot 两种格式字体,甚至还需要.svg 等字体达到更多种浏览版本的支持。为了使font-face 达到更多的浏览器支持, Paul Irish 写了一个独特的font-face
6、语法叫Bulletproof font-face:font-face font-family: YourWebFontName; src: url(YourWebFontName.eot?) format(eot);/*IE*/ src:url(YourWebFontName.woff) format(woff), url(YourWebFontName.ttf) format(truetype);/*non-IE*/ 但为了让各多的浏览器支持,你也可以写成:font-face font-family: YourWebFontName; src: url(YourWebFontName.eot
7、); /* IE9 Compat Modes */ src: url(YourWebFontName.eot?#iefix) format(embedded-opentype), /* IE6-IE8 */ url(YourWebFontName.woff) format(woff), /* Modern Browsers */ url(YourWebFontName.ttf) format(truetype), /* Safari, Android, iOS */ url(YourWebFontName.svg#YourWebFontName) format(svg); /* Legacy
8、iOS */ 说了这么多空洞的理论知识,大家一定有点心痒痒了,那么我们先来看看 W3CPLUS 首页中导航部分的兰色字体是如何实现的,假如我们有一个这样的 DOM 标签,需要应用自定义字体:HTML Code:Neues Bauen Demo通过font-face 来定义自己的 Web Font:font-face font-family: NeuesBauenDemo;src: url(/fonts/neues_bauen_demo-webfont.eot);src: url(/fonts/neues_bauen_demo-webfont.eot?#iefix) format(embedde
9、d-opentype),url(/fonts/neues_bauen_demo-webfont.woff) format(woff),url(/fonts/neues_bauen_demo-webfont.ttf) format(truetype),url(/fonts/neues_bauen_demo-webfont.svg#NeuesBauenDemo) format(svg);font-weight: normal;font-style: normal;我在这里采用的是相对路径,当然大家也可以使用绝路径。到这里我们就需要把定义好的字体应用到我们实际页面中去:h2.neuesDemo fo
10、nt-family: NeuesBauenDemo效果:看到上面的效果,我想大家会感到font-face 很神奇,同时也想争着做做看,可是一动手才发现,特殊字体我要怎样才能得到,那些.eot,.woff,.ttf,.svg 这些字体格式又怎么获取呢?有些朋友可能就不知道如何运手了,那么我们就带着这些问题来一个全程完成的实例吧:二、获取font-face 所需字体格式:特殊字体已经在你的电脑中了,现在我们需要想办法获得font-face 所需的.eot,.woff,.ttf,.svg 字体格式。要获取这些字体格式,我们同样是需要第三方工具或者软件来实现,下面我给大家推荐一款我常用的一个工具 fo
11、ntsquirrel,别的先不多说,首跟我点这里进入到下面这个界面吧。如果你进入页面没有看到上图,你可以直接点击导航:如果你看到了上面的界面,那就好办了,我们来看如何应用这个工具生成font-face 需要的各种字体,先把我们刚才下载的字体上传上去:上传后按下图所示操作:现在从 Font Squirrel 下载下来的文件已经保存在你本地的电脑上了,接着只要对他进行解压缩,你就能看到文件列表如下所示:大家可以看到,解压缩出来的文件格式,里面除了font-face 所需要的字体格式外,还带有一个 DEMO 文件,如果你不清楚的也可以参考下载下来的 DEMO 文件,我在这里不对DEMO 说明问题,我
12、主要是给大家介绍如何把下载下来的文件有价值的运用到我们的项目中。例如在自己的本地创建了一个 fontface 项目:为了让项目结构更清晰,我们在项目中单独创建一个 fonts 目录,用来放置解压缩出来font-face 所需的字体格式:现在font-face 所需字体已经加载到本地项目,现在本地项目中的 style.css 中附上我们需要的font-face 样式font-face font-family: SingleMaltaRegular;src: url(/fonts/singlemalta-webfont.eot);src: url(/fonts/singlemalta-webfon
13、t.eot?#iefix) format(embedded-opentype),url(/fonts/singlemalta-webfont.woff) format(woff),url(/fonts/singlemalta-webfont.ttf) format(truetype),url(/fonts/singlemalta-webfont.svg#SingleMaltaRegular) format(svg);font-weight: normal;font-style: normal;到这里为止,我们已经通过font-face 自定义好所需的 SingleMalta 字体,离最后效果只
14、差一步了,就是把自己定义的字体应用到你的 Web 中的 DOM 元素上:h2.singleMalta font-family: SingleMaltaRegular效果:看到上面的效果,那大家就知道我们实现成功了。那么关于font-face 帮你打造特殊效果的字体,到这里基本上就完成了,我在这里需要提醒使用者:1、如果你的项目中是英文网站,而且项目中的 Logo,Tags 等应用到较多的这种特殊字体效果,我建议你不要使用图片效果,而使用font-face ,但是你是中文网站,我觉得还是使用图片比较合适,因为加载英文字体和图片没有多大区别,但是你加载中文字体,那就不一样了,因为中文字体太大了,这
15、样会影响到项目的某些性能的优化;2、致命的错误,你在font-face 中定义时,文件路径没有载对;3、你只定义了font-face ,但并没有应用到你的项目中的 DOM 元素上;以上几点都是在平时制作中常出现的问题,希望大家能小意一些,另外我们没有办法在购买所有字体,就算你实力雄厚,那也没有办法在一台服务器主机上放置你所有项目需要的字体。因此我给大家提供几个免费字体下载的网址:Webfonts,Typekit ,Kernest,Google Web Fonts,Kernest,Dafont,Niec Web Type,前面几个链接是帮助你获取一些优美的怪异的特殊字体,但下面这个工具作用更是无穷的大,他能帮你生成font-face 所需要的各种字体,这工具就是 Font Squirrel。最后在提醒一下,使用font-face 别的可以忘了,但 Font Squirrel 千万不能忘,因为他能帮你生成font-face 所需的各种字体格式。