惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
ThreatConnect
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
H
Help Net Security
T
Threat Research - Cisco Blogs
Blog — PlanetScale
Blog — PlanetScale
A
Arctic Wolf
G
Google Developers Blog
量子位
U
Unit 42
I
InfoQ
V
V2EX
F
Fox-IT International blog
P
Privacy & Cybersecurity Law Blog
V
Visual Studio Blog
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
C
CERT Recently Published Vulnerability Notes
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Tailwind CSS Blog
SecWiki News
SecWiki News
Know Your Adversary
Know Your Adversary
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
The Hacker News
The Hacker News
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
C
Cisco Blogs
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
Recorded Future
Recorded Future
T
Tenable Blog
W
WeLiveSecurity
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
T
The Blog of Author Tim Ferriss
www.infosecurity-magazine.com
www.infosecurity-magazine.com
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
PCI Perspectives
PCI Perspectives

技术改变视野

为程序员、设计师打造的摸鱼社区:摸鱼派! - 技术改变视野 我在 GitHub 上的开源项目 - 技术改变视野 为IDEA/Git配置GPG密钥,点亮GitHub Verified Commit标识 - 技术改变视野 从 SpringMVC 转为使用 SpringBoot —— 手把手带你使用 Intellij IDEA 最快速地搭建 SpringBoot+MyBatis(无 XML)+Thymeleaf - 技术改变视野 无题 - 技术改变视野 年轻人的第一辆京牌电动车 - 技术改变视野 我们忙碌且漫长的一生,有多久是为自己而活? 说说《后浪》 - 技术改变视野 🎨 适用于 Solo / Bolo 的清新高级主题 —— Sakura | 移植自 WordPress 主题 - 技术改变视野 大白话之Java级联调用:一个类,一条语句,同时调用好几个方法,串成一串 - 技术改变视野 大白话 | Java初学指♂男:“说说初学的误区与死结”( 壹 | 反射与Field ) - 技术改变视野 一个实例理解Java的接口(interface)用处与用法 一个实例带你理解JavaBean WebFilter-SpringBoot过滤器注解实例讲解 实例带你搞懂Java多线程&&线程池之(壹):线程池与多线程的关系和区别 实例带你搞懂Java多线程&&线程池之(贰):简单的线程池应用 实例带你获取多线程Thread的返回值之 (壹) - Callable的运行 实例带你学会简单的Java Thread多线程 实例带你获取多线程Thread的返回值之 (贰) - Callable配合线程池返回数据 一个实例理解Java Runnable多线程用处与用法 一个最简单的实例理解Semaphore在Java中的作用 从零开始OpenSSL之 (壹) - 使用genrsa、rsa、rsautl生成公私钥 从零开始 OpenSSL 之 (贰) - 使用 rsautl 解密文件 大白话之Docker(壹):快速入门&&简单官方实例 大白话之耦合性:什么是耦合性和内聚性?用编程语言实例讲解! 大白话之Docker(贰):简单部署一个Tomcat服务并发布内容 大白话之从零讲解DVWA(壹)-SQL注入(SQL Injection) Low Level - 技术改变视野 大白话之从零讲解DVWA(贰)-SQL注入(SQL Injection) Medium/High Level Java日志插件-Slog4J下载 大白话之必会Java Atomic | 线程一点也不安全(一):比自增和synchronized更快速、靠谱的原子操作(调用C语言) Log-MySQL root用户登录后无法查看数据库全部表/正常访问数据库 Access denied for user 'root'@'localhost' to database 大白话之Docker(叁):制作一个运行Tomcat服务端的Docker镜像 Github仅保留指定文件/文件夹当前Commit,删除所有历史记录,清除「敏感信息」 将Tomcat、MySQL从Linux迁移到Windows的心路历程(干货):令人恐惧的字符编码 Spring: java.lang.NoSuchMethodError: clearCache | ClassNotFoundException | Error during artifact deployment 思路及解决办法 大白话之Java反射-初学最迷的概念:能干啥?咋用? 大白话之Java面向接口编程:最“正经”的中文实例讲解,看不懂来打我! 大白话 | 课堂实践:使用Iterator对数组进行遍历 大白话之fail-fast | fail-safe:为什么会有这个机制?它有什么作用? 刨根问底 | 大白话:在使用注解后,框架是怎么知道你哪个方法使用了注解的?用@RequestMapping注解举例详解! 大白话之必会Java Atomic | 线程一点也不安全(二):Atomic的ABA问题会导致什么情况?如何解决? 随笔 | 奇淫技巧 | Java:记return和短路运算符的妙用 随笔 | Tomcat:续-从Linux迁移到Windows编码问题彻底解决 大白话之AutoClosable接口 | try-with-resources:JDK1.7的新特性,提高重复回收效率 大白话之Java多线程join方法:开局一张图,试学一分钟,你就费和我一样,理解介个方法 大白话之Java Stream流:将类数组流化,便捷批量修改,通俗讲解! Java 困扰三周の问题:使用byte[]或skip()方法读取字节流Stream文件尾部多/少/缺字节解决方法
离线使用 Google Fonts:让你的网站更精致 | goofoffline 神器,一键下载生成离线字体库! - 技术改变视野
adlered · 2020-04-24 · via 技术改变视野

前言

你一定见过,很多优雅的网站都使用了十分美观且不同的字体。他们通常都是采用了来自 Google Fonts 的 Web 字体。

CSS 指定字体

通过将 font-family 定义在 CSS 的指定标签(例如下面例子中的 body 标签),该标签中的所有文字都会听从 font-family 的指挥,以指定的字体进行显示。

font-family 支持同时定义多个字体,为什么要定义多个字体呢:如果浏览器不支持定义的第一个字体,它将尝试应用下一个字体。

1body {
2    font-family: Arial, Helvetica, sans-serif;
3}

以上例子中,字体的尝试顺序是:ArialHelvetiicasans-serif

安全字体

由于每个浏览器用户使用的系统、浏览器不同,支持的字体也不同,所以我们定义多个字体是为了保险起见,一般我们都会备选几个支持的比较广泛的字体。

如想获得更多关于安全字体的组合,请看:CSS Web安全字体 | 菜鸟教程

Web 字体

简单来讲,就是当你打开一个网站时,如果这个网站定义了 Web 字体 ,那么你的浏览器会自动下载指定的 Web 字体 文件,并将它应用于当前页面中。

Web 字体系统字体 是没有区别的。唯一的区别就在于, 系统字体 不需要进行下载,已经提前在系统中预置 / 安装过了,免除了下载的等待时间。而 Web 字体 则需要浏览器主动对其下载并 临时安装

但并不是每次访问都要重新下载整个 Web 字体,绝大部分浏览器都有缓存系统,它们会将最近加载的静态文件放置在系统缓存中,下一次调用时就不需要再次下载了,直接从系统中获取,直到资源缓存过期或用户主动强制刷新资源(使用 Ctrl + F5 快捷键)才会重新下载。

使用 Web 字体

本地化 Google Fonts

请先安装

  • Node 和 npm

开始

  1. 挑选你喜欢的字体。

需要科学上网!
前往 fonts.google.com 挑选你喜欢的字体,这里以 Roboto 为例:

  • 选择字体粗细,这里选择 Light 300,点击右侧的 + Select this style

image.png

  • 此时右侧会弹出一个选项卡,选择 Embed,复制 <link 标签下 src="xxx" 中的 CSS 文件地址,同时备份 “CSS rules to specify families” 下的内容

image.png

  1. 通过 npm 安装 google-fonts-offline

google-fonts-offline 是一款开源的 Google Fonts 一键离线下载工具。

启动你的终端或命令行,输入以下命令安装:

1npm install -g google-fonts-offline

如果这里提示你 找不到命令 npm,说明你没有仔细阅读这篇文章的前段内容~

  1. 生成离线字体

我新建了一个 Web 目录:/Users/adler/testPage 用于本次测试,这里面包含了主页的 index.html 和即将下载的离线字体文件,目录不是固定的,定位到你的 Web 目录即可。

首先,切换目录到你的 Web 根目录(这里不要照着敲,改成你自己的 Web 目录):

1cd /Users/adler/testPage

还记得刚刚复制的 src="xxx" 中的内容吗?现在要用到它了!
输入命令,记得将地址替换成你自己的:

注意:此处直接粘贴网址到命令中可能会被加上反斜杠 \ ,记得主动删除掉!

1goofoffline "https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap"

运行结果:

 1Mimics to Mozilla/5.0 (MSIE 8.0; Windows NT 6.1; Trident/4.0)...
 2  Downloading Roboto_300_normal.eot...
 3Mimics to Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1...
 4  Downloading Roboto_300_normal.woff...
 5Mimics to Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00...
 6  Downloading Roboto_300_normal.ttf...
 7Mimics to Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10...
 8  Downloading Roboto_300_normal.svg...
 9Mimics to Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0...
10  Downloading Roboto_300_normal.woff2...
11Composing CSS file...
12Done!

在出现 Done! 的提示后,查看下当前目录的文件,你会发现多出了一个 fonts 文件夹:

1> $ ls
2fonts      index.html

进入 fonts 文件夹:

1> $ cd fonts && ls
2Roboto_300_normal.eot   Roboto_300_normal.ttf   Roboto_300_normal.woff2
3Roboto_300_normal.svg   Roboto_300_normal.woff  fonts.css

现在,我们只需要引用 fonts.css 到 HTML 中就可以了。

  1. 应用到 HTML

在 HTML 的 <head> 部分添加以下代码:

1<link rel="stylesheet" href="fonts/fonts.css">

image.png

访问页面,通过开发者工具,可以看到网页已经加载了 Web 字体

image.png

不要慌,我们还需要指定 <head> 标签下的所有文字使用该字体:

还记得刚开始复制的第二行代码吗?将以下代码写入 <style> 标签.css` 文件中:

1body {
2	font-family: 'Roboto', sans-serif;
3}

image.png

  1. 大功告成

刷新页面,你会发现字体变得更加骚气了!

image.png

后语

并不是所有的字体都支持中文,我推荐这款:

1https://fonts.googleapis.com/css?family=Noto+Sans+TC&subset=chinese-traditional

中文字库都很大,这款支持中文的字体将中文划分为多个 20KB 左右的小文件按需加载,大大优化了加载所需的时间。

快给你的 Web 项目安排一个 Web 字体 吧!提升网站质感的神器。