前言

文字是网页中很重要的组成部分。为文字选择一个合适的字体,能够更好的展现一个网站的个性,表达所要传递的信息,同时吸引用户来产生兴趣。

说到字体,我们首先会想到 CSS 里面的 font,例如:

<html>
<head>
<style>
p { font-family: Arial, Helvetica, sans-serif; }
</style>
</head>
<body>
<p>some text</p>
</body>
</html>

在这段 HTML 代码中为<p>标签定义了字体,当浏览器解析<p>some text</p>标签时,首先会在系统中查找 Arial 这个字体,如果找不到,就找 Helvetica 字体,如果还是找不到,就会查找浏览器默认的 sans-serif(非衬线)字体,最后把文字渲染出来。


回页首

什么是安全字体

安全字体这个概念,也许很多人都不是很熟悉,我们先举个例子:

font-family: Arial, Helvetica, sans-serif;

这个对字体(font-family)的定义就是一个安全字体。每种操作系统都有自己默认安装的字体,浏览器只能正常显示操作系统中安装了的字体。而不同的操作系统默认安装的字体不完全相同,有的甚至名称都不一样,在这种情况下,我们必须定义安全字体,使字体在所有的浏览器中都能够正常显示。

在上面这个 font-family 的定义中,我们选择 Arial 作为首选字体(注:Arial 字体是最常用的 sans serif 字体,也是 Windows 的默认字体,当字体很小是不容易阅读),但是,苹果系统中没有这个字体,所以我们选择 Helvetica(和 Arial 很相似)作为第二备选字体,最后我们选择 sans-serif 作为第三备选字体,如果在一个既没有 Arial 也没有 Helvetica 的系统里,那么浏览器会使用默认的 sans-serif 字体来渲染文字。这样,我们很大程度上保证了使用不同操作系统的访问者都能看到相同(至少是类似)的页面文字。

除了 Arial,常见的安全字体还有:

  • Verdana 字体,它是微软公司的核心字体之一,专门为屏幕显示而开发的。它的应用广泛,宽度大而易于阅读,是显示器中最清晰的字体。CSS 写法:font-family: Verdana, Geneva, sans-serif;
  • Times New Roman 字体,它是最常用的 serif 字体,是浏览器默认的字体。小号字的易读性也很差。CSS 写法:font-family: 'Times New Roman', Times, serif;

有兴趣的读者可以通过这个链接来查阅常用的安全字体。http://www.w3schools.com/cssref/css_websafe_fonts.asp

在网页开发中,应该尽量使用安全字体,也就是高度通用的字体,这样,访问者才能流畅的阅读网页的所有内容。

但是,网页设计师一定不会满足于使用这些安全字体,如何才能使用漂亮的字体,并能在普通用户的浏览器中被正确的渲染出来?答案是:使用@font-face 方案。


回页首

@font-face 标签简介

@font-face 被列为了 CSS3 的一项新特性,其实它并不是什么新鲜技术,它最早出现在 CSS2 的规范定义中,但是在 CSS2.1 中又被删除,现在被正式列入 CSS3。目前主流的浏览器(IE 4+/Firefox 3.5+/Chrome 1+/Safari 3.1+/Opera 10+)都能够支持这个属性,所以不用担心会有浏览器兼容性问题。

@font-face 允许您在网页中使用电脑中没有安装的字体,完全摆脱安全字体的限制。只需将字体包安装在服务器上,当用户加载网页时,字体包会自动下载到用户机器上,保证字体能够正确渲染。

随着@font-face 的不断流行,产生了许多新的字体格式图标集,称为网络字体。Google Fonts API 就是基于@font-face 的特性开发的一套优秀的网络字体库。

网络字体的优点有很多:

  1. 使用的是真正的文本,而不是图片,放大和缩小都不会影响渲染效果,用户体验好;
  2. 可以被搜索引擎辨认;
  3. 不像图片每次需要重新生成,添加删除更方便。

回页首

如何使用 Google Fonts API

Google Fonts 提供了超过 600 种的高质量的字体,所有的浏览器都兼容,无需引入 JavaScript,简单易用,更重要的是,免费。(虽然,暂时不支持中文字体,因为中文字体库实在是太大了)。

现在来看下,如何在网页中使用 Google Fonts。

挑选字体

登录Google Fonts (谷歌字体官方网站)。(图 1)

图 1.Google Fonts 主页

在主页中,您可以直接浏览所有的字体,可以按单个词语来查看,或者按句子段落来查看整体效果,还可以调整字体大小。如果您对字体分类比较熟悉,就可以使用左边的搜索条件对字体作筛选。找到您喜欢的字体之后,点击"Add to Collection"按钮,然后在网页下方的"Collection"中即可找到您添加的所有字体。

使用选中的字体来测试您的文字

在上一页面(图 1)的"Collection"中,点击"review"。在预览页面中(图 2),输入您的测试文字,来查看效果。另外在"review"页面上,您还可以调整其它的与字体相关的样式,比如字体大小,间隔,变换,等等。在图 2 中,我们选择测试的是"Condiment"字体

图 2.Google Fonts 预览页面

在您的网页中添加字体链接。

如果确认使用该字体, 在网页下方的"Collection"中,点击"Use"按钮,在接下来的页面中,您将看到详细的说明,包括字体链接和如何将字体添加到您的网页中。

有三种方式来添加字体链接:

  • Standard 方式:

    <link rel='stylesheet' type='text/css'
    href='http://fonts.googleapis.com/css?family=Condiment'>
  • @import 方式:
    @import url(http://fonts.googleapis.com/css?family=Condiment);
  • JavaScript 方式:

    (通过添加动态脚本并执行来导入字体,代码省略)

下一步定义在那个标签上使用该字体,例如:在<class="myheader">标签上使用,

.myheader {font-family: 'Condiment', cursive;}

大功告成,您现在可以打开您的网页欣赏一下了(图 3)。

图 3.测试页面效果

清单 1.测试页面代码
<html>
<head>
<link rel="stylesheet" type="text/css"
href='http://fonts.googleapis.com/css?family=Condiment'>
<style>
.myheader {
font-family: Condiment, cursive;
font-size: 48px;
text-align: center;
}
</style>
</head>
<body>
<div class="myheader"> Test my own text !</div>
</body>
</html>

优化字体包加载

如果您不是大范围的在网页中使用 Google 字体,只是在标题或 logo 里使用,那么可以在 url 里添加 text 参数,来限制加载的字体包的大小,最高能缩减 90%左右的大小,以此来节约下载流量。例如:http://fonts.googleapis.com/css?family= Condiment'&text=Hello

这样,您只会下载 h,e,l,o 这四个字母的字体,大大缩小了字体包的大小。

下载字体包

您还可以把字体包下载并安装到本地,这样您就可以在本地使用这些字体,比如在 Notepad,Microsoft Office 里。

方法为:在图 3 中,点击下载按钮, 选择"Download the font families in your Collection as a zip file"

高级应用 API

Google Fonts 还开放了一些接口(称为 Developer API),用于获取字体库的信息数据。

比如实时获取字体库实际可用的字体及其相关信息:

https://www.googleapis.com/webfonts/v1/webfonts?key=YOUR-API-KEY

这个请求的返回结果是一个 JSON 类型的数据,包括了每种字体的名称,样式种类(比如 regular,italic),版本,修改时间,包含的样式包的请求地址,等等。

请注意,在 URL 里面有一个 key,这个 key 是和您的 web 应用工程相联系的,只有注册过的 web 应用才能成功调用 Developer API。我们必须要在 Google Cloud Console 注册之后,才能获取这个 key。

关于这个 Developer API, 可以参阅这个链接


回页首

结束语

Google Fonts 很强大,但是也碰到一些加载的问题,最好还是字体声明的时候,在最后添加一个安全字体,来保证万无一失。另外的一个建议是,在网页中要适量的使用花样的字体,让整个页面保持干净简洁。

http://www.ibm.com/developerworks/cn/web/1505_zhangyan_googlefont/

使用 Google Fonts 为网页添加美观字体的更多相关文章

  1. Google Fonts导致网页加载速度慢

    最近在做商城项目时候发现在加载一个html页面反应非常慢,查看发现是Google Font导致的网页加载速度缓慢,删除掉该样式会发现很多内容出错. 上网百度发现问题在于: 谷歌香港(google.co ...

  2. (转)Google Fonts 的介绍与使用

    转载自“前端笔记”  http://www.cnblogs.com/milly/archive/2013/05/10/google-fonts.html Google Fonts 是什么?(以下翻译为 ...

  3. 使用Google Fonts注意事项

    Google Fonts是一个字体嵌入服务库. 这包括免费和开源字体系列.用于浏览库的交互式 Web 目录以及用于通过 CSS 和 Android 使用字体的 API. Google 字体库中的流行字 ...

  4. bootstrap之google fonts

    bootstrap之google fonts 在学习一个bootstrap时,看到了一行引用代码:@import url(http://fonts.googleapis.com/css?family= ...

  5. android添加第三方字体并设置的简单使用

    1.java文件 package lpc.com.project006; import android.app.Activity; import android.content.res.AssetMa ...

  6. seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码

    seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码 网页摘要是搜索引擎搜索结果下的几行字,用户能通过网页摘要迅速了解到网页的大概内容,传统的摘要是纯文字摘要,而结 ...

  7. HTML&CSS基础学习笔记1.28-给网页添加一个css样式

    CSS是什么? 当HTML配合CSS一起使用时,我们发现页面变得好看了很多.那么CSS到底是什么呢? CSS指层叠样式表 (Cascading Style Sheets),它主要是用于定义HTML标签 ...

  8. html网页引用中文字体,解决加载缓慢办法

    [ttf 压缩]html网页引用中文字体,文件过大,加载缓慢的解决办法[字蛛][web font] [字蛛]http://font-spider.org/ 先安装好 NodeJS,然后执行: npm ...

  9. Linux下添加windows字体

    在Linux下使用wqy字体,在视觉效果上就已近很好了,其实没有必要添加windows字体.但是显然有些人(比如领导,^..^)就喜欢宋体.楷体,所以添加windows字体有时还是需要的,幸运的是这件 ...

随机推荐

  1. Hibernate笔记——关联关系配置(一对多、一对一和多对多)

    原文:http://www.cnblogs.com/otomedaybreak/archive/2012/01/20/2327695.html ============================ ...

  2. !! This tutorial was designed to help you with installation and configuration of OpenCV4Android SDK.

    ref: http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html#running-o ...

  3. [IT] 关闭笔记本的蜂鸣提示

    很久没有写什么了,今天开过workshop, 稍微放松些, 一时动念上来看看,没想到最近一篇都是2010年的了, 不得不感叹时光流逝之快啊. 那就写点什么吧. 现在每天工作用的DELL笔记本,性能差强 ...

  4. C语言ASM汇编内嵌语法【转】

    转自:http://www.cnblogs.com/latifrons/archive/2009/09/17/1568198.html GCC 支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作G ...

  5. Linux中__init、__devinit等内核优化宏【转】

    转自:http://blog.csdn.net/joker0910/article/details/7171626 内核使用了大量不同的宏来标记具有不同作用的函数和数据结构.如宏__init .__d ...

  6. [原]POJ-1631-Bridging signals-( 水LIS-O(nlogn) -DP)

    题目大意:求最长上升子序列(LIS)长度,序列最大数不超过40000.因为只有上升排列的接口才不相交. 思路:普通的 O(n^2)的做法肯定会超时:因此,dp[ ] 记录长度为 i+1 的子序列中最末 ...

  7. 每天一个小算法(Heapsort)

    #include "stdio.h" #include "stdlib.h" #define Num 10 Heap(int arr[],int i,int n ...

  8. java-基础练习题3

    [程序3] 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因 ...

  9. laravel, Composer和autoloading

    http://www.php-fig.org/psr/psr-4/ http://www.php-fig.org/psr/psr-0/ http://alanstorm.com/laravel_com ...

  10. DOM应用

    父级.removeChild(子节点);父级.appendChild(子节点);父级.insertBefore(子节点, 在谁之前); 创建元素: <script> window.onlo ...