在网页中嵌入任意字体的解决方案

2011 - 1 - 9 作者 : Jimco 分类 : HTML/CSS

点击查看原图

 

        字体使用是网页设计中不可或缺的一部分。经常地,我们希望在网页中使用某一特定字体,但是该字体并非主流操作系统的内置字体,这样用户在浏览页面的时候就有可能看不到真实的设计。美工设计师最常做的办法是把想要的文字做成图片,这样做有几个明显缺陷:①不可能大范围的使用该字体;② 图片内容相对使用文字不易修改;③不利于网站SEO(主流搜索引擎不会将图片alt内容作为判断网页内容相关性的有效因素)。网络上有一些使用sIFR技术、或javascript/flash hack的方法,但实现起来或繁琐,或有缺陷。下面要讲的是如何只通过CSS的@font-face属性来实现在网页中嵌入任意字体。

 

        第一步

 

获取要使用字体的三种文件格式,确保能在主流浏览器中都能正常显示该字体。

  • .TTF或.OTF,适用于Firefox 3.5、Safari、Opera
  • .EOT,适用于Internet Explorer 4.0+
  • .SVG,适用于Chrome、IPhone

下面要解决的是如何获取到某种字体的这三种格式文件。一般地,我们在手头上(或在设计资源站点已经找到)有该字体的某种格式文件,最常见的是.TTF文件,我们需要通过这种文件格式转换为其余两种文件格式。字体文件格式的转换可以通过网站FontsQuirrel或onlinefontconverter提供的在线字体转换服务获取。这里推荐第一个站点,它允许我们选择需要的字符生成字体文件(在服务的最后一个选项),这样就大大缩减了字体文件的大小,使得本方案更具实用性。

 

        第二步

 

获取到三种格式的字体文件后,下一步要在样式表中声明该字体,并在需要的地方使用该字体。

字体声明如下:

@font-face {
 font-family: 'fontNameRegular';
 src: url('fontName.eot');
 src: local('fontName Regular'),
              local('fontName'),
              url('fontName.woff') format('woff'),
              url('fontName.ttf') format('truetype'),
              url('fontName.svg#fontName') format('svg');

/*其中fontName替换为你的字体名称*/

 

在页面中需要的地方使用该字体:

p { font: 13px fontNameRegular, Arial, sans-serif; }
h1{font-family: fontNameRegular}

或者

<p style="font-family: fontNameRegular">掬水月在手,落花香满衣</p>

下面是我通过上面两步做的示例:

运行代码    

13261 人围观 / 43 条评论 ↓快速评论↓

  • 那个字体要怎么弄咯。我进你说的那个网站,但是找不到我想到的字体呀,肿么办呢

    2012-03-01 09:48 回复

    • @冰:上百度google下!

      Jimco 2012-03-01 14:39 回复

  • 为什么IE9失效啦~请问阿狸13

    星星 2011-10-19 14:36 回复

    • @星星:IE9支持开放字体格式(.woff),此例没有加上这种格式的字体文件,也就“失效”了~

      Jimco 2011-10-20 10:30 回复

  • 嗯,挺实用,支持下!

    七七 2011-01-13 20:44 回复

  • 博主很会折腾啊!

    奎奎玩站 2011-01-13 17:33 回复

    • @奎奎玩站:呵呵~多谢支持!

      谢建聪 2011-01-13 18:35 回复

  • 这个问题太实用了,我要好好研究一下

    博客之家 2011-01-13 00:12 回复

  • 研究的不错啊!

    路大侠 2011-01-12 19:21 回复

    • @路大侠:^_^ 多谢支持!欢迎常来!

      谢建聪 2011-01-12 20:23 回复

  • 加油博主   很不错的字

    寇铈鑫 2011-01-11 21:06 回复

    • @寇铈鑫:^_^ 多谢支持!

      谢建聪 2011-01-11 22:08 回复

  • 研究的够透彻的啦

    卢松松 2011-01-11 15:41 回复

    • @卢松松:呵呵~这不自己瞎捣鼓么~~~

      谢建聪 2011-01-11 16:42 回复

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18

Powered by Jimco

©2013 前端那些事儿 Designed by Jimco

About me|意见反馈