前端学习<三>CSS进阶——03-网页设计和开发中,那些困扰大神的关于字体的知识

前言

我周围的码农当中,有很多是技术大神,却常常被字体这种简单的东西所困扰。

这篇文章,我们来讲一讲关于字体的常识。这些常识所涉及到的问题,有很强的可操作性,都是在实际业务中真实遇到的,都是需要开发同学和产品经理、设计师不断重复沟通的。

字体真的只是“系统默认,无从解释”这么简单吗?是产品被忽悠?还是开发在敷衍?二者之间的博弈究竟谁能胜出?学会本文,你就能胜出。

字体分类

常见的字体可以分为两类:衬线体、无衬线体

1、serif(衬线体):在字的笔画开始、结束的地方有额外的装饰,而且笔画的粗细会有所不同。

常见的衬线体有:

  • 宋体、楷体

  • Times New Roman

2、sans-serif(无衬线体):笔划粗细基本一致,只剩下主干,造型简明有力,起源也很晚。适用于标题、广告等,识别性高。

常见的无衬线体有:

  • 黑体

  • Windows 平台默认的中文字体:微软雅黑(Microsoft Yahei)

  • Windows 平台默认的英文字体:Arial

  • Mac & iOS 平台默认的中文字体:苹方(PingFang SC)

  • Mac & iOS 平台默认的英文字体:San Francisco

  • Android 平台默认字体:Droid Sans

补充

衬线体如今已经很少使用了,你所熟悉的“宋体”,也基本只能在纸质出版物中见到。而非衬线体更符合现代审美

所以,在这里温馨提示各位:做PPT不要用宋体。如果你不知道用什么字体,那就用系统的默认字体就好:Win 平台用微软雅黑、Mac 平台用苹方字体。

如果你发现一名设计师,在做海报设计、或者制图的时候,使用了宋体,说明她一定是个外行。

字体族

CSS 中的字体族可以理解成是某一类字体。常见的字体族可以分为五类:

  • serif:衬线体。

  • sans-serif:无衬线体。

  • monospace:等宽字体。每一个字母所占的宽度是相同的。写代码的字体尽量用等宽字体。

  • cursive:手写字体。比如徐静蕾手写体。

  • fantasy:梦幻字体。比如一些艺术字。

这五类字体族不代表某一个具体的字体,而是当你在 CSS 中指定字体族的时候,系统就有可能在字体族中找出一种字体来显示。

参考链接:serif,sans-serif,monospace,cursive和fantasy

多字体 fallback 机制

多字体 fallback 机制:当指定的字体找不到(或者某些文字不支持这个字体)时,那就接着往后找。比如:

 .div1{
     font-family: "PingFang SC", "Microsoft Yahei", monospace;
 }
 ​

上方 CSS 代码的意思是:让指定标签元素中的文字,在 Mac & iOS 平台用苹方字体,在 Win 平台用微软雅黑字体,如果这两个字体都没有,就随便找一个等宽的字体进行渲染。

注意

(1)写 CSS 代码时,字体族不需要带引号。

(2)有些 Mac 用户会安装 Office 等软件,安装这些软件后,系统会顺带安装微软雅黑字体。此时,写 CSS 代码时,如果写成 "Microsoft Yahei", "PingFang SC"这种顺序,可能导致有些 Mac 用户用微软雅黑来显示字体。这么好看的苹方字体,你忍心割舍吗?

font-weight:字体的加粗属性

font-weight 字体加粗属性,是让前端同学最迷茫的属性。当你把做好的网页拿给产品经理验收时,网页一打开,产品经理首先关注到的就是字体的加粗问题,你信不信?下面这些话都是产品经理的口头禅,想必早已让你产生了幻听:

  • “这个字体怎么没有加粗?”

  • “这个字体是不是太粗了点?”

  • “为什么 iPhone 和 Android 手机上的文字粗细不一致?”

想要明白这些疑惑,我们先来看看 font-weight 有哪些属性值。

font-weight 属性:在设置字体是否加粗时,属性值既可以直接填写 100 至 900 这样的数字,也可以填写normalbold这样的单词。normal的值相当于 400,bold的值相当于 700。如下:

 font-weight: 100;
 font-weight: 200;
 font-weight: 300;
 font-weight: 400;
 font-weight: 500;
 font-weight: 600;
 font-weight: 700;
 font-weight: 800;
 font-weight: 900;
 ​
 font-weight: normal; // 相当于 400
 font-weight: bold;   // 相当于 700

关键问题来了。很多人会发现,在 Windows 平台的浏览器中, font-weight 无论是设置300、400,还是500,文字的粗细都没有任何变化,只有到600的时候才会加粗一下,感觉浏览器好像不支持这些数值,那搞这么多档位不就是多余的吗?

这个时候,大家就开始吐槽 Windows 电脑太挫、Windows 浏览器太挫;同时还会感叹 Mac 真香,支持字体的各种粗细。

实际上,所有这些数值关键字浏览器都是支持的,之所以没有看到任何粗细的变化,是因为你所使用的字体不支持

就拿“微软雅黑”来举例,它只支持 400 和 700 这两种粗细,所以当你在代码里写成500的时候,也会被认为是400。但是 Mac 上的“苹方”字体,就支持从100到900之间的各种粗细。

再比如,前段时间,阿里巴巴开源的普惠字体,也是支持多种粗细的:

各大平台的默认字体加粗效果

一张图,胜过千言万语。解释了这么多,我们来看看各大平台的字体加粗效果是什么样的。

以下截图,都是我亲测的结果,如果你打算让别人看效果,直接把下面的图丢给他即可。像我这样贴心的前端,不多见了。

1、Mac 平台的默认字体加粗效果:(苹方字体)

2、Windows 平台的默认字体加粗效果:(微软雅黑字体)

3、iOS 平台的默认字体加粗效果:(苹方字体)

4、Android 平台(华为 P30 Pro)的默认字体加粗效果:(Droid Sans 字体)

总结各大平台的默认字体加粗档位(字重)

注意,系统默认的 normal 字重是400;加粗的 bold 字重是700。

1、Mac & iOS 平台的“苹方”字体的字重:(有6种粗细,>=600的加粗效果是相同的)

  • 极细体:100

  • 纤细体:200

  • 细体:300

  • 常规体:400

  • 中黑体:500

  • 中粗体:600、700、800、900

2、Windows 平台的“微软雅黑”字体的字重:(只有两种粗细 ;>=600 才会加粗,而且加粗效果相同)

  • 不加粗的默认字体:100、200、300、400、500

  • 加粗字体:600、700、800

3、Android 平台的 Droid Sans 字体的字重:(只有 >=700才会加粗;而且加粗效果相同)

  • 不加粗的默认字体:100、200、300、400、500、600

  • 加粗字体:700、800

实战中,系统默认字体的加粗总结

  • 如果你做的软件产品只有苹果系统(比如iOS或Mac),可以使用各种粗细和字重。

  • 如果你做的软件产品包括了苹果系统(比如iOS或Mac)和非苹果系统(比如Android或Windows),建议直接使用normal(系统默认) 和 bold 这两种粗细。

补充:“苹方”字体的粗细效果,大图预览

“苹方”字体包含了六种自重:常规体、中等、细体、特粗体、特细体、粗体。对应的CSS样式如下:

 /* 苹方-简 极细体:100 */
 font-family: PingFangSC-Ultralight;
 ​
 /* 苹方-简 纤细体:200*/
 font-family: PingFangSC-Thin;
 ​
 /* 苹方-简 细体:300 */
 font-family: PingFangSC-Light;
 ​
 /* 苹方-简 常规体:400 */
 font-family: PingFangSC-Regular;
 ​
 /* 苹方-简 中黑体:500 */
 font-family: PingFangSC-Medium;
 ​
 /* 苹方-简 中粗体:600、700、800、900 */
 font-family: PingFangSC-Semibold;

大图预览如下:

我还要多说一句:我实际测试发现,苹方字体的200字重和300字重,在iOS上的粗细是不同的(符合预期),但在 Mac 上的粗细效果是相同的(无论把字体放大多少倍,都是如此)。具体你可以看看我在上面的截图效果对比。我目测这应该是Mac系统的bug。

大部分字体不是免费的

有一点你需要知道:你所见到的大部分字体,都不是免费的。换句话说,如果你想用第三方字体从事商业活动,要先交钱,获得授权后才可以使用。你在给公司做网页的时候,就是一种商业行为。

「微软雅黑」是免费字体吗?并不是。你可以将微软雅黑字体用在 office 软件中,但是一旦脱离了 office 软件或者脱离了 Windows 系统(比如说,你把做好的PPT打印出来拿去做商业宣传),你就不能使用该字体。

同理,苹果专属的「苹方字体」也只能在苹果系统的生态内使用。

免费字体当然有,比如思源黑体(Adobe 和 Google 在2014年7月联合推出的一款开源字体)、阿里巴巴普惠体等。但这些免费字体,我们平时基本用不到。

这也就是为什么,很多公司会专门购买一套商用字体库、甚至是自己开发一套字体出来,避免未来潜在的纠纷和麻烦。

给大家列举一个常见的场景。很多时候,前端同学拿到的视觉稿是 psd 稿,需要用 PS 软件打开源文件,才能看到里面的文字是什么字体。在 PS 软件里,当我们用光标选中字体的时候,出现了下面这种场景:

看到上面的FZLTZCHK,不要慌,马上去 Google 查一下,发现这个字体的全称是方正兰亭字体系列。恩,基本可以肯定, 这个字体也是要收费的。

这个时候,前端同学要马上告诉产品或者设计师,不要用这个字体,因为它是商用字体,是要收费的,小心吃官司。那我们该用什么字体呢?接着往下看。

网页一般用什么字体

大多数情况下,网页使用系统默认的字体就足够了。如果要使用特殊字体,顶多只是让阿拉伯数字使用特殊字体。中文和英文,使用默认字体,完全足够。

如果确实要使用特殊字体,只有这几种办法:

  • 使用开源的免费字体(比如思源黑体、阿里巴巴普惠体等)。但这类字体,种类很少,而且大多不是很好看。网页开发中,基本没人用。

  • 单独购买第三方的商用字体,获得授权。

  • 自己公司(找人)开发一套字体,给自己人用。

关于第三种办法,下面,我将以「京东朗正体」来举例。

自主研发的字体举例:京东朗正体

使用举例

比如 JD 公司就自主开发了一套商用字体京东朗正体,支持三种粗细。只允许 JD 公司自己用,别家公司不允许用。如下:

 /**
  * JD正黑体,提供三种字重,请严格按设计稿选择字体
  */
  @font-face {
     font-family: 'JDZH-Light';
     src: url('xxx.com/data/ppms/others/JDZH_Light.ttf') format('truetype');
 }
 ​
 @font-face {
     font-family: 'JDZH-Regular';
     src: url('xxx.com/data/ppms/others/JDZH_Regular.ttf') format('truetype');
 }
 ​
 @font-face {
     font-family: 'JDZH-Bold';
     src: url('xxx.com/data/ppms/others/JDZH_Bold.ttf') format('truetype');
 }
 ​
 @font-face {
     font-family: 'JDZhengHT-EN-Bold';
     src: url('xxx.com/data/ppms/others/JDZhengHei_01_Bold.ttf') format('truetype');
 }
 ​

为了使用这个京东朗正体字体, JD公司在实际开发网页时,是这样做的:

  • 步骤1:在公共的 CSS 文件中引入上方的字体库代码。这样的话,当页面加载时,用户的终端就会去下载这个字体库。

  • 步骤2:在业务代码中,针对目标样式,直接使用 font-family: 'JDZH-Regular';这样的代码,即可生效。

这个JDZH,我们一般也只使用在阿拉伯数字中;中文和英文,建议使用系统默认字体就行,否则会导致字体文件过大。

使用规则

从资料中可以看出,京东朗正体的版权属于方正公司,而京东具有永久使用权。

最后一段

所谓「见微知著」,一个再不起眼的知识点,也是有很多学问的。光是“字体”这一点,就足够成为一门学科。

2005年,苹果公司创始人乔布斯(Steve Jobs)在斯坦福大学的毕业典礼演讲上,有过这样一段话:

当时的我从来没有期盼过我所学的这些东西,能够在我的生活中有什么实际的用处。

但是到了十年之后,当我们在设计第一台 Macintosh 电脑时,这些所学都涌进了我的头脑。于是,我把这些设计融入到了 Mac 电脑之中,这也使这台 Mac 成为了第一台拥有漂亮字体的电脑。

可以说,如果我当时没有退学,就不会有机会去参加我感兴趣的美术字课程,Mac 也就不会拥有那些美妙的排版和字体。而当 Windows 系统借鉴了Mac之后,似乎所有的电脑都应该是这个样子。

当时的我没有办法把这些点点滴滴连接起来,但是,当我十年后回顾的时候,一切都变得豁然开朗

字体相关的网站推荐

  • 360字体版权查询:360查字体-查版权,免纠纷

  • 2020年最全的免费可商用字体清单:GitHub - wordshub/free-font: 大概是2020年最全的免费可商用字体,这里收录的商免字体都能找到明确的授权出处,可以放心使用,持续更新中...

  • 免费可商用字体-效果预览(跟上线的链接属于同一个项目):字集-免费字体

  • 常见的免费字体:http://zenozeng.github.io/Free-Chinese-Fonts/

如果不花钱,免费可商用的字体挺少的,也才100多种。

推荐阅读

  • Web 中文字体处理总结

  • 常见的免费字体:http://zenozeng.github.io/Free-Chinese-Fonts/

  • 如何优雅的选择字体(font-family):滑动验证页面

  • iconfont:iconfont-阿里巴巴矢量图标库

  • 乔布斯斯坦福大学演讲-翻译

  • 乔布斯斯坦福大学演讲-翻译

  • 阿里巴巴官方发布免费商用字体:阿里巴巴普惠体:阿里巴巴官方发布免费商用字体:阿里巴巴普惠体

  • 得到 | 从甲骨文至得到今楷,造字的人都是神:从甲骨文至得到今楷,造字的人都是神

  • APP设计必备字体:San Francisco Pro、苹方、思源黑体和Roboto等

  • 《独立宣言》使用了什么字体?

  • 你的版权常识指南

  • 免费商用 | 这几款字体你值得拥有

写在最后:希望大家可以点个关注点个赞,这对up真的很重要!谢谢!

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/510367.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Xinstall带你解锁新姿势:网页直接拉起iOS应用!

在移动互联网时代,用户体验至关重要。对于iOS用户来说,能够在使用网页时直接拉起对应的应用,无疑会大大提升操作便利性和效率。然而,要实现这一功能,往往需要繁琐的开发流程和高昂的维护成本。这时,一个名为…

【JavaWeb】Day31.SpringBootWeb请求响应——分层解耦(二)

3.IOC&DI 3.1 IOC&DI入门 完成Controller层、Service层、Dao层的代码解耦 思路: 1. 删除Controller层、Service层中new对象的代码 2. Service层及Dao层的实现类,交给IOC容器管理 3. 为Controller及Service注入运行时依赖的对象 Controller程序…

服务注册与发现

服务注册与发现 传统单体架构与分布式架构 单体架构的不足: 所有的服务都集中在一个应用中,一个服务出错,可能导致整个系统宕机随着用户越来越多,程序承受的并发越来越高,单体应用的并发能力有限。数据库瓶颈&#x…

RTSP/ONVIF安防监控云平台EasyNVR激活码授权异常(状态码-2)的原因排查:服务器时间异常

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议,将前端接入设备的音视频资源进行采集,并转码成适合全平台、全终端分发的视频流格式,包括RTMP、RTSP、FLV、HLS、WebRTC等格式。平台可提供视频直播监控、录像、检索与回看、云存储、国标级联…

蓝桥杯算法题——暴力枚举法

先估算这个数小于3的50次方 cnt0 for i in range(50):for j in range(50):for k in range(50):a3**ib5**jc7**kif a*b*c<59084709587505:cnt1 print(cnt-1)#当ijk都为0时&#xff0c;a*b*c1不是幸运数字所以要减去

2024 年每个程序员都应该尝试的 8 个AI工具

随着人工智能技术的极速发展&#xff0c;新的 AI 工具正以前所未有的速度涌现&#xff0c;为开发者们带来了前所未有的机会和挑战。在这个不断演进的时代&#xff0c;掌握最新的 AI 技术已成为每个程序员的必修课。 在本文中&#xff0c;我们收集了8 个程序员在 2024 年值得尝…

持续交付/持续部署流水线介绍(CD)

目录 一、概述 二、典型操作流程 2.1 CI/CD典型操作流 2.2 CI/CD操作流程说明 2.3 总结 三、基于GitHubDocker的持续交付/持续部署流水线&#xff08;公有云&#xff09; 3.1 基于GitHubDocker的持续交付/持续部署操作流程示意图 3.2 GitHubDocker持续交付/持续部署流水…

总结TCP协议各类知识点

前言 本篇博客博主将详细地介绍TCP有关知识点&#xff0c;坐好板凳发车啦~ 一.TCP特点 1.有连接 TCP传输的过程中类似于打电话的各个过程 2.可靠传输 通过TCP自身的多种机制来保证可靠传输 3.面向字节流 内容是以字节的方式来进行发送与接收 4.缓冲区 TCP有接收缓冲区…

智慧驿站式的“智慧公厕”,给城市新基建带来新变化

随着智慧城市建设的推进&#xff0c;智慧驿站作为一种多功能城市部件&#xff0c;正逐渐在城市中崭露头角。这些智慧驿站集合了智慧公厕的管理功能&#xff0c;为城市的新基建带来了全新的变革。本文以智慧驿站智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;大量精品案…

基于UML的系统分析与设计

统一建模语言(Unified Modeling Language&#xff0c;UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言&#xff0c;是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具&#xff0c;独立于任何具体程序设计语言。 毕业设计是实现本科教学培…

Ps:颜色查找

颜色查找 Color Lookup命令通过应用预设的 LUT 来改变图像的色彩和调性&#xff0c;从而为摄影师和设计师提供了一种快速实现复杂色彩调整的方法&#xff0c;广泛应用于颜色分级、视觉风格的统一和创意色彩效果的制作。 Ps菜单&#xff1a;图像/调整/颜色查找 Adjustments/Colo…

Unity自定义框架(1)-----------单例模式

前言&#xff1a; Unity作为一款强大的游戏开发引擎&#xff0c;其基础框架的设计对于项目的结构和性能有着重要的影响。其中&#xff0c;单例模式是一种常用的设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 什么是单例模式&#xff1f…

练习 16 Web [极客大挑战 2019]LoveSQL

extractvalue(1,concat(‘~’, (‘your sql’) ) )报错注入&#xff0c;注意爆破字段的时候表名有可能是table_name不是table_schema 有登录输入框 常规尝试一下 常规的万能密码&#xff0c;返回了一个“admin的密码”&#xff1a; Hello admin&#xff01; Your password is…

【Redis】NoSQL之Redis的配置和优化

关系型数据库与非关系型数据库 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系型模型&#xff08;二维表&#xff09;的基础上&#xff1b;一般面向于记录&#xff1b; SQL语句(标准数据查询语句)就是一种基于关系型数据库的语言&#xff0c;用于执行…

【文化课学习笔记】【数学】复数

【数学】复数 定义 规定 \(i^2 -1\)&#xff0c;并称 \(i\) 为虚数单位。则 \(i^3 -i,i^4 (i^2)^2 1,i^5 i^4 \cdot i i\)&#xff0c;所以 \(i^k\) 具有周期性&#xff0c;周期为 \(4\)。 复数&#xff1a; \[z a bi(a,b \in \mathrm R) \] 其中 \(a\) 为实部&#xf…

数据仓库实践

什么是数据仓库&#xff1f; 数据仓库是一个用于存储大量数据并支持数据分析与报告的系统。它通常用于集成来自不同来源的数据&#xff0c;提供一个统一的视图&#xff0c;以便进行更深入的分析和决策。 数据仓库的主要优势&#xff1f; 决策支持&#xff1a;为企业决策提供可靠…

景联文科技提供高质量医疗健康AI大模型数据

医疗行业是典型的知识和技术密集型行业&#xff0c;其发展水平直接关系到国民健康和生命质量。 医疗健康AI大模型&#xff0c;作为人工智能的一个分支&#xff0c;能够通过学习大量的数据来生成新的数据实例&#xff0c;在医药研发、医学影像、医疗文本分析等都有广泛的应用前景…

HarmonyOS 应用开发之LifecycleForm接口切换LifecycleApp接口切换 LifecycleApp接口切换

LifecycleForm接口切换 FA模型接口Stage模型接口对应d.ts文件Stage模型对应接口onCreate?(want: Want): formBindingData.FormBindingData;ohos.app.form.FormExtensionAbility.d.tsonAddForm(want: Want): formBindingData.FormBindingData;onCastToNormal?(formId: string…

【LeetCode热题100】17. 电话号码的字母组合(回溯)

一.题目要求 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 二.题目难度 中等 三.输入样例 示例 1&#xff1a; 输入…

macbook更改默认打开方式

1、mac上更改文件的默认打开方式&#xff0c;例如将.sql文件默认方式改成文本编辑 2、单击右键&#xff08;两指单机触摸板&#xff09;-> 显示简介 -> 打开方式 -> 选择新的默认打开方式 -> 全部更改 3、再次打开就设置完成了