专栏名称: qize
前端交互开发工程师
目录
相关文章推荐
51好读  ›  专栏  ›  qize

自定义字体

qize  · 掘金  · 前端  · 2018-01-16 02:32

正文

本文作者:IMWeb 结一 原文出处: IMWeb社区 未经同意,禁止转载

概述

一般来说,网页上的字体使用的都是我们电脑里面的字体,比如我们常说的微软雅黑、宋体就是 windows 系统自带的字体。所以你可以看到网页的字体一般都比较中规中矩,不像平面设计那样各种新花样。

但是我们在浏览一些网站时,还是可以发现一些非常酷炫和高端的字体。如 小米笔记本 Air

这里我们可以看到其使用了'F5130a'字体,但是这个酷炫的高端字体我们的电脑里面都没有,它其实就是该站点自定义设置的字体。

那么如何实现自定义字体的效果呢?答案是 CSS 的 [@font-face](/user/font-face)

[@font-face](/user/font-face)

[@font-face](/user/font-face) 的语法规则如下:

[@font-face](/user/font-face) {
    font-family: <fontFamily>; /* 自定义的字体名称; */
    src: <source> [<format>][,<source> [<format>]]*;  /* 自定义的字体的存放路径、格式; */
    [font-weight: <weight>]; /*  是否为粗体 */ 
    [font-style: <style>]; /*  定义字体样式,如斜体 */
}

其取值说明如下:

  • fontFamily

    此值指的就是你自定义的字体名称,如“font-family: myFirstFont”。

  • source

    此值指的是你自定义的字体的存放路径,可以是相对路径也可以是绝对路径。

  • format

    此值表达自定义的字体的格式,用于帮助浏览器识别字体类型。

  • weight和style

    这两个值大家一定很熟悉,weight 定义字体是否为粗体,style 主要定义字体样式,如斜体。

实战使用

了解了 [@font-face](/user/font-face) 后,我们具体来实战下。首先我们可以到 dafont 随便下载一个字体,这里我们选中了下面这个字体:

解压之后,得到我们的字体文件( .ttf .otf 属于不同格式的字体,下面我们再介绍)

编写代码(为了方便使用,已经把 .ttf 格式的字体重命名为 webfont.ttf

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>自定义字体</title>
    <style type="text/css">
        /* 定义字体 */
        [@font-face](/user/font-face) {
            font-family: 'Hard Stones Sans Strip';
            src: url('webfont.ttf') format('truetype');
        }
        .custom-font {
            font-family: 'Hard Stones Sans Strip'; /* 使用 [@font-face](/user/font-face) 自定义的字体 */
            font-size: 80px;
        }
    </style>
</head>
<body>
<p class="custom-font">HEAD SCRIPT</p>
</body>
</html>

最后效果可见: 自定义字体

字体格式

从上面下载的字体解压包来看,我们看到两个不同格式的字体( .ttf .otf ),除此之外还有几种字体格式,大体介绍如下(可以了解下):

  • TrueType (.ttf)

    Windows 和 Mac 系统最常用的字体格式,其最大的特点就是它是由一种数学模式来进行定义的基于轮廓技术的字体,这使得它们比基于矢量的字体更容易处理,保证了屏幕与打印输出的一致性。同时,这类字体和矢量字体一样可以随意缩放、旋转而不必担心会出现锯齿。

  • OpenType (.otf)

    OpenType 是一种可缩放字型(scalable font)电脑字体类型,采用 PostScript格式,是美国微软公司与Adobe 公司联合开发,用来替代 TrueType 字型的新字型。这类字体的文件扩展名为.otf,类型代码是 OTTO。

  • Embedded Open Type (.eot)

    嵌入字体格式(EOT)是微软开发的一种技术,允许 OpenType 字体嵌入到网页并可以下载至浏览器渲染。这些文件只在当前页活动的状态下,临时安装在用户的系统中。

  • Web Open Font Format (.woff)

    相对于 TrueType 和 OpenType ,WOFF(Web开发字体格式)是一种专门为了 Web 而设计的字体格式标准,它并不复杂,实际上只是对于 TrueType / OpenType 等字体格式的封装,并针对网络使用加以优化:每个字体文件中含有字体以及针对字体的元数据( Metadata ),字体文件被压缩,以便于网络传输,并且不包含任何加密或者 DRM 措施。

  • Scalable Vector Graphics Fonts (.svg) 顾名思义,就是使用SVG技术来呈现字体,还有一种 gzip 压缩格式的 SVG 字体 .svgz

这么多字体带来的问题是浏览器的支持:目前现代浏览器基本都支持 .ttf .otf .woff 的字体格式。但需要注意的是 IE8以下仅支持 .eot 格式,而 .svg 目前只有 safari 支持。具体兼容性可参看如下:

如何兼容

通过上面我们可以了解到若在使用 [@font-face](/user/font-face) 规则时仅仅考虑一种字体格式,则可能导致在某些浏览器中无法生效。因此为了兼容不同的浏览器,我们一般会使用多个格式,如下:







请到「今天看啥」查看全文


推荐文章
GCC全球创想家社区  ·  UCCVR Experience Lab 体验实验室探索再升级!
7 年前
经典短篇阅读小组  ·  庙内庙外
7 年前