托管你自己的在线字体
创始人
2024-03-02 02:09:12
0

使用自托管的开源字体来定制你的网页。

字体对许多计算机用户来说可能都是很神秘的东西。举个例子,你在制作好一张很酷的传单之后,你需要将它送到某个地方去打印,结果发现,你设计的所有字体都变成了 Arial,这多半是因为打印店没用安装你设计用到的那些字体。不过,我们仍有很多方法来避免这种情况:你可以将这些使用特定字体的单词转换为路径,你也可以将它封装为 PDF,或是把开源字体封装到你的设计文件中,或者至少列出所需字体。不过,我们总会忘记一些事情,所以这仍是一个问题。

Web 上也有类似的问题。如果你对 CSS 有所了解,你可能会见过这种声明:

h1 { font-family: "Times New Roman", Times, serif; }

这是设计师正在尝试定义网站使用要用到的特定字体,如果用户没有安装 Times New Roman 这个字体,便会回落到另一个字体;如果用户也没有安装 Times 这个字体,便再次回落。它比使用图片而不是文本更好一些,但是在没有字体托管的情况下,这仍是一种棘手且不雅观的方法。不过,在早期的互联网时代,我们不得不这样做。

在线字体

在线字体的登场,把字体管理从客户端搬上了服务端。如今网页上的字体通常由服务器为客户端渲染,而不是要求浏览器从用户的系统中查找字体。谷歌和其它供应商托管了许多开源字体,网站设计师们可以很轻松的用 CSS 来引用它们。

不过,问题是,引用这些字体并不是不花费任何代价的。虽然引用它们免费,但是像谷歌这样的巨头喜欢跟踪那些引用它们资源的网站,其中就包括了字体资源。如果你不想你的网站帮谷歌记录每个人的活动,你可以自己托管在线字体。别觉得这很难,它其实是很简单的,大概流程就是上传字体到你的主机,再使用一个简单的 CSS 便可完成。这样做还有个好处,你的网站能更快地加载,因为它会在加载每个页面的时候进行更少的外部调用。

自托管在线字体

首先,你需要一个开源字体。如果你没有了解过那些令人费解的软件协议,你可能会感到很疑惑,特别是很多字体看起来都是免费的。我们中应该很少有人有字体付费意识,但是他们却在电脑上安装了一些高价的字体。不过,由于授权协议,它使得你的电脑也许带着一些 法律上不允许复制和再分发 的字体。像 Arial、Verdana、Calibri、Georgia、Impact、Lucida 和 Lucida Grande、Times 和 Times New Roman、Trebuchet、Geneva 以及其它的很多字体都是被微软、苹果和 Adobe 这种大公司所拥有的。如果你购买了一台预装了 Windows 或 macOS 的电脑,你就获得了使用这些字体的权利,但是你并没有拥有那些字体,也没有被许可上传它们至服务器(除非额外说明)。

幸运的事,开源热潮在很久以前就席卷了字体界。然后就有了许多优秀的开源字体的合集和项目,比如 The League of Moveable TypeFont Library 以及 Omnibus Type,甚至还有一些来自 GoogleAdobe 的字体。

常见的字体格式有 TTF、OTF、WOFF、EOT 等。因为 Sorts Mill Goudy 发行过 WOFF Web Open Font Format (互联网开放字体格式,Mozilla 参与了部分开发)版本,所以下文中我会用它来做例子。当然,其它字体的方法也是一样的。

假设你想在你的网站上使用 Sorts Mill Goudy 这个字体:

1、将字体文件 GoudyStM-webfont.woff 上传至你的服务器:

scp GoudyStM-webfont.woff seth@example.com:~/www/fonts/

你的主机可能带有像 cPanel 这样的图形化工具,通过它们上传也是一样的。

2、在你网站的 CSS 文件中,添加 @font-face 语句,添加后应该和这个差不多:

@font-face { 
  font-family: "titlefont";
  src: url("../fonts/GoudyStM-webfont.woff"); 
}

font-family 的值是你来决定的。这是一个易于理解的名字,它用于放在使用字体名的地方。我在这里使用 “titlefont” 作为例子,是因为我希望它被用来显示标题字体。你也可以使用 “officialfont” 和 “myfont” 这样的名字。

src 值是你字体文件的路径。这是你服务器上字体的路径。在这里,我用 fonts 目录来作为示例,它和 css 在一个文件夹里。你服务器的文件结构可能和我的不一样,所以你需要调整一下这个路径。记住一点,一个点意味着工作目录,两个点则代表父目录

3、现在,你已经定义了字体的名字和目录,你可以在任何指定的 CSS 类或 ID 来调用它了。举个例子,如果你希望以 Sorts Mill Goudy 字体来渲染

,只需要在 CSS 规则中加入你自己的字体名称:

h1 { font-family: "titlefont", serif; }

现在,你已经成功地托管并使用你自己的字体了。

在线字体的实际效果


via: https://opensource.com/article/19/3/webfonts

作者:Seth Kenlon (Red Hat, Community Moderator) 选题:lujun9972 译者:zhs852 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

【AI贵阳】贵阳人的“咖啡...
当咖啡控遇上毛笔狂, 贵阳街头“啡”常涂鸦! 墨汁混着咖啡香, 喝...
2025-06-30 12:42:35
[oeasy]python...
屏幕点阵字库 回忆上次内容 上次回顾了 字符字型 的 进化过程 从...
2025-05-30 01:09:15
捕捉元素样式 - 字体大小
要捕捉元素的字体大小样式,可以使用JavaScript来获取元素的...
2025-01-12 18:01:08
不影响填充的情况下增加输入...
要在不影响填充的情况下增加输入字体大小,可以使用CSS中的tran...
2025-01-11 07:30:53
不影响父元素高度的情况下改...
使用CSS的transform属性可以实现不影响父元素高度的情况下...
2025-01-11 07:01:32
不要笑,但是我无法在我的....
要在HTML文件中显示特定的字体,你可以使用CSS的@font-f...
2025-01-11 00:00:19

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...