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. Mysql安全加固

    1.确保MYSQL_PWD环境变量未设置 描述 MYSQL_PWD环境变量的使用意味着MYSQL凭证的明文存储,极大增加MySQL凭据泄露风险. 加固建议 删除系统环境变量中MySQL密码(MYSQL ...

  2. vue双向绑定和深浅拷贝

    现象描述: vue 在使用的时候,当table绑定了某个data的时候.假如某个el-table-column下面的有个方法传参(data.row),然后在方法中用一个obj=data.row.(这里 ...

  3. 如何实现 range 函数的参数?

    关于 range 函数 Python内置的range函数可以接收三个参数: class range(stop): ... class range(start, stop[, step]): ... 标 ...

  4. [BUUCFT]PWN——pwn2_sctf_2016

    pwn2_sctf_2016[整数溢出+泄露libc] 题目附件 步骤: 例行检查,32位,开启了nx保护 试运行一下程序,看看大概的执行情况 32位ida载入,shift+f12检索程序里的字符串, ...

  5. JS获取url中query_str JavaScript RegExp 正则表达式基础详谈

    面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL ...

  6. c++内存分布之虚函数(多继承)

    系列 c++内存分布之虚函数(单一继承) c++内存分布之虚函数(多继承) [本文] 结论 1.虚函数表指针 和 虚函数表 1.1 影响虚函数表指针个数的因素只和派生类的父类个数有关.多一个父类,派生 ...

  7. 【LeetCode】1171. Remove Zero Sum Consecutive Nodes from Linked List 解题报告 (C++)

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

  8. 【LeetCode】367. Valid Perfect Square 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:完全平方式性质 方法二:暴力求解 方法三:二 ...

  9. 【LeetCode】284. Peeking Iterator 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/peeking-i ...

  10. 【LeetCode】289. Game of Life 解题报告(Python)

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