1.背景

前端时间产品经理问我,移动端web默认字体有哪些,哪些字体不侵权?我当时感觉这方面的知识很匮乏,只能回答出微软雅黑和苹方简体,平常写代码时,没怎么留意过font-family设置的字体属性,今天有空,决定学习一下这个知识点。

2.字体族的分类

字体族主要分为6大类:分别是serif(衬线),sans-serif(无衬线字体),monospace(等宽),cuisive(草体),fantasy(梦幻),emoji(表情)。web平常我们接触最多的就是衬线字体和无衬线字体。尤其是无衬线字体,文中将重点介绍。

2.1 serif(衬线)

serif字体的特点是在字的笔画粗细会不同,始末端风格比较突出,常见的衬线字体有Times New Roman、MS Georgia,宋体,仿宋等。

图片引自 serif,sans-serif,monospace,cursive和fantasy

2.2 sans-serif(无衬线)

Sans-Serif字体没有这些额外的装饰,笔划粗细大致差不多,字形端庄,横平竖直,常见的无衬线字体有Tahoma、Verdana、Arial、Helvetica、苹方、微软雅黑,黑体、幼圆、隶书、楷体等。



sans-serif(无衬线字体)和serif(衬线字体)的区别

图片引自 如何优雅的选择字体(font-family)

2.3 monospace(等宽)

等宽字体是指字符宽度相同的字体,通常用于编辑器以及技术文章的代码块中,等宽主要针对西文字体,中文汉字天然等宽,Courier、MS Courier New、Prestige,多数中文字体是最常见的等宽字体。

2.4 cuisive(草体)

特点:像手写的一样,Caflisch Script、Adobe Poetica,徐静蕾手写体、迷你简黄草、华文行草、少女体是手写体的代表。

2.5 fantasy(梦幻)

特点:艺术字,主要用于图片,页面上用的少 。代表字体有 WingDings、WingDings 2、WingDings 3、Symbol,萝卜体

2.6 emoji(表情)

顾名思义,无需过多解释。使用场景很好理解。

3.常见的操作系统自带字体

3.1 sans-serif字体--西文

字体名称
简介
Helvetica 苹果系统支持的一种西文无衬线字体,是苹果生态中最常用的一套西文字体。Helvetica Neue是Helvetica字体改善版本,增加了更多不同粗细与宽度的字形。
Arial 是为了与Helvetica竞争而设计的无衬线西文字体,表现形式和Helvetica类似,在不同系统的浏览器都支持,兼容性非常好。
Tahoma 一种无衬线字体,间距较小,在不同系统的浏览器都支持,兼容性良好,可以解决Helvetica和Arial所为人诟病的缺点,比如大写的 I 和小写的 L 难以分辨。
San Francisco 苹果于2017年推出一种无衬线字体,也是目前苹果系统的默认西文字体,相比于Helvetica字体,San Francisco的字体风格更加简洁,减少了一些修饰的细节,支持符号的整体居中,比如时间显示,之前的 Helvetica 的冒号是不居中的。最低兼容版本:ios9、macOS10.11
Segoe UI windows系统下的一种无衬线西文字体,也是windows系统的默认西文字体。
Roboto Android系统的默认西文字体,也是一种无衬线字体

3.2 sans-serif字体--中文

字体 简介
PingFang SC(苹方-简) 苹果专为中国用户打造的一个中文无衬线字体,在2017年和San Francisco一起推出,SC代表简体,同时还有台湾繁体和香港繁体,整体造型简洁美观,是苹果系统默认的中文字体。最低兼容版本:ios9、macOS10.11
Hiragino Sans GB(冬青黑体)、Heiti SC(黑体) 苹果系统中较早的中文无衬线字体,为了兼容旧版macOS系统,我们一般用它们作为苹方字体的fallback。
Microsoft YaHei(微软雅黑) Windows系统默认的中文字体,也是一套无衬线字体。macOS上的浏览器大都预装微软雅黑,但不包括safari浏览器。ios和android系统不支持微软雅黑,所以设置移动端字体时可以忽略微软雅黑。
Noto Sans (思源黑体) Android系统的默认中文无衬线字体,由google推出的一款开源字体。
WenQuanYi Micro Hei(文泉驿微米黑) Linux系统下默认中文字体,一般为了兼容Linux系统才会设置这个字体。

3.3 serif字体--中文

  • 宋体: 一种中文衬线字体,windows 和 macOS都有支持,字体偏瘦,风格明显。宋体也是windows XP及更早系统的默认中文字体。

3.4 表情字体

字体 介绍
Apple Color Emoji 苹果产品的文字表情,在Mac和iOS系统中到处都可以看到,也是我们接触的最多的Emoji表情。
Segoe UI Emoji Windows10系统中的Emoji表情,黑描边风格,没有苹果的圆润和质感。
Noto Color Emoji Google推出的表情,和苹果的较为类似,更加扁平。

4.浏览一下圈内网站的font-family设置 (查看时间-2022.01.09)

4.1天猫

body {
font: 12px/1.5 tahoma, arial, 'Hiragino Sans GB', '\5b8b\4f53', sans-serif;
}

备注:汉字宋体的unicode是'\5b8b\4f53'

4.2京东

body{
font: 12px/1.5 Microsoft YaHei,Heiti SC,tahoma,arial,Hiragino Sans GB,"\5B8B\4F53",sans-serif;
}

4.3腾讯网

body {
font: 400 1em/1.8 'Microsoft Yahei', 'PingFang SC', 'Avenir', 'Segoe UI', 'Hiragino Sans GB', STHeiti, 'Microsoft Sans Serif', 'WenQuanYi Micro Hei', sans-serif;
}

4.4百度

body{
font-family: Arial,sans-serif;
}

4.5博客园

body {
font-family: 'PingFang SC','Microsoft YaHei','Helvetica Neue','Helvetica','Arial',sans-serif;
}

4.6掘金

html {
font-family: -apple-system,system-ui,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial;
}

备注:

  1. -apple-system是system-ui的兼容写法,只在ios和macOS上的safari、Firefox、webview等环境下支持。
  2. system-ui是一种通用字体系列,它选择当前操作系统下的默认系统字体,它的优势在于和当前系统使用的字体相匹配,可以让Web页面和App风格看起来更统一。

4.7简书

body{
font-family: -apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
}

评价:

  • 当字体名称包含空格,则需要用双引号或单引号包裹。京东,掘金,简书有空格的字体名称写法不严谨。
  • 每个系统都会带有无衬线字体,所以sans-serif一般放在最后作为兜底,sans-serif之后的字体都不会生效,除了Emoji字体。因此掘金的兜底字体写的不太规范。

5 总结

5.1 字体族选择

  • 在显示设备上,衬线会让文字变得难以辨认,sans-serif无衬线字体适合在线阅读,是web页面全局字体设置首选。
  • 衬线字体在打印的场景更容易阅读,让人更容易清楚区分不同字母。 serif 适用于打印页面
  • monospace每个字符等宽,在页面上占据相同的空间,多用于页面上的代码块
  • fantasy和cursive适用特殊艺术效果展示的场景,在图片或标题用的比较多。

5.2 字体使用原则

  • 先西后中

    中文网站涉及两种文字类型:西文字体和中文字体,西文字体包括英文数字等,不包括中文,但是中文字体一般包括英文和数字,但西文部分不好看,为了达到更好的显示效果,通常先定义西文字体,后定义中文字体。
  • 系统兼顾

    为了保证苹果系统中使用更优雅的中文字体,优先声明苹方简体, 对于不支持苹方的低版本macOS,使用Hiragino Sans GB(冬青黑体)字体做兜底。

    如果需要兼容Linux系统,还需要添加WenQuanYi Micro Hei(文泉驿微米黑)字体。

    如果需要兼容不同平台的表情符号,一般在sans-serif后添加"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"等字体。
  • 优先使用system-ui

    system-ui使用当前系统的默认字体,让web页面和操作系统的风格统一,体验更好。
  • 以sans-serif字体族兜底

    当所有的字体都找不到时,我们可以使用字体族名称作为操作系统最后选择字体的方向。一般将sans-serif放在字体的后面,非衬线字体在显示器中的显示效果更好。

5.3 推荐字体设置

遵照以上四条原则,推荐的字体设置为:

font-family: system-ui, -apple-system, Tahoma, Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;

推荐理由:

  • 优先设置system-ui,让web和app,pc的字体风格一致,-apple-system是ios和macOS上的safari、Firefox、webview上system-ui的兼容性写法
  • 西文无衬字体优先选择Tahoma,Tahoma字体在小字号下结构清晰端整、阅读辨识容易,可以解决Helvetica和Arial所为人诟病的缺点,比如大写的I和小写的L难以分辨。在不同操作系统支持性好,所以作为首选字体,如果系统没有预装Tahoma,则使用Arial作为替代。Arial在ios和android上支持性很好。
  • 中文无衬字体优先选择"PingFang SC","PingFang SC"造型简洁美观,是苹果系统默认的中文字体。"Hiragino Sans GB"是苹果系统早期的默认的中文无衬字体,为了兼容旧版macOS系统,用它作为苹方字体的fallback。"Microsoft YaHei"是Windows系统默认的中文字体,也是一套无衬线字体。macOS上的浏览器大都预装微软雅黑。
  • 如果前面的字体都不存在,使用sans-serif兜底。
  • 最后大多数字体都有版权,而这些字体都是系统内置字体,不会涉及到侵权。

参考文章

帮你克服web字体选择焦虑症的更多相关文章

  1. Monotype推出基于HTML5的Web字体平台

    著名字体公司Monotype近日宣布推出基于HTML5的Web字体平台,设计者可以访问近10万字体的目录. Monotype推出基于HTML5的Web字体平台 Monotype推出基于HTML5的We ...

  2. 如何把你的图标转换成web字体

    在这篇教程中,我们将使用一个免费的Web应用程序IcoMoon将矢量图转换成Web字体,然后将生成的字体通过css应用到Web页面中. 通常我们在网站中必不可少的会使用到一些小图标.在正常尺寸下,布局 ...

  3. 制作web字体:CSS3 @font-face

    @font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕只能使用Web安全字体,另外@font- ...

  4. web设计经验<七>13步打造优雅的WEB字体

    今天,大多数浏览器已经默认支持Web字体,日趋增多的字体特性被嵌入最新版HTML和CSS标准中,Web字体即将迎来一个趋于复杂的崭新时代.下面是一些基本的关于字体的规则,特别适用于Web字体. 原文地 ...

  5. ICOMOON!强悍的WEB字体图标制造器/Web字体使用实例

    IcoMoon!一个可以通过个性化设置来创建自定义图标(字体)的生成器!也可以将SVG图片,转换成web字体 IcoMoon是一项免费的服务,通过使用不同设置使我们能够创建自定义的ICON图或ICON ...

  6. 从零开始学 Web 之 CSS3(六)动画animation,Web字体

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  7. Web自动化 - 选择操作元素 2

    文章转自 白月黑羽教Python 前面我们看到了根据 id.class属性.tag名 选择元素. 如果我们要选择的 元素 没有id.class 属性, 这时候我们通常可以通过 CSS selector ...

  8. Web 字体 font-family 再探秘

    之前写过一篇关于Web字体简介及使用技巧的文章: 你该知道的字体 font-family. 该篇文章基本没有太多移动端的字体选择及分析.并且过了这么久,如今的 Web 字体又有了一些新的东西,遂有此文 ...

  9. 常用web字体的使用指南

    而真正的挑战在于中文字体,由于中文字体组成的特殊性导致其体积过于庞大,除了操作系统内置的字体之外,我们很难在网站上应用其他的字体.在可选性很差的前提之下,如何正确的使用中文字体呢? 首先,以下的字体声 ...

随机推荐

  1. Redis主从 部署和配置

    目录 一.主从简介 主从介绍 主从原理 二.主从部署 环境介绍 主从配置 临时主从 三.主从测试 一.主从简介 主从介绍 Redis都是主节点.每个从节点只能有一个主节点,而主节点可以同时具有多个从节 ...

  2. Python用matplotlib绘图网格线的设置

    一.X轴网格线的设置 import matplotlib.pyplot as plt import numpy as np from pylab import mpl mpl.rcParams['fo ...

  3. BUU PWN hitcontraining_bamboobox

    本来想学习house of force,结果没用就直接做出来了...我用了三种方法来做这道题. 1.fastbins attack 2.unlink 3.house of force 可以改写got表 ...

  4. 记一次AWD

    有幸bjx师傅又让我参加了一次awd,算是第二次体验awd,又感觉学习到了很多东西. 第一次打这种模式的时候,我几乎什么都没有做,就给师傅们下载文件,上传文件了.(太菜了) 昨晚分的组,发现没有人是p ...

  5. CF253A Boys and Girls 题解

    Content 有 \(n\) 个男生.\(m\) 个女生坐在一排,请求出这样一种方案,使得相邻两个座位之间的人的性别不同的次数最多. 数据范围:\(1\leqslant n,m\leqslant 1 ...

  6. IPV4和IPV6 特殊地址块

    https://en.wikipedia.org/wiki/Reserved_IP_addresses https://blog.csdn.net/tty521/article/details/725 ...

  7. IPtables 之“四表五链”

    目录 架构图 IP tables 简介 包过滤防火墙 Iptables如何过滤 "四表" "五链" Iptables流程 架构图 公司架构模式(酒店迎宾比喻) ...

  8. Android JNI 启动线程,并设置线程名称

    p.p1 { margin: 0; font: 12px Menlo; color: rgba(100, 56, 32, 1); background-color: rgba(255, 255, 25 ...

  9. 【LeetCode】131. Palindrome Partitioning 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 回溯法 日期 题目地址:https://leetco ...

  10. Interviewe(hdu3486)

    Interviewe Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...