前端怎么加粗字体_Variable Fonts 可变形字体

对于经常接触字体的前端开发者来说,引入字体可能是一个“技术活”——不同的字宽、字重以及样式的字体都有可能需要我们单独引入。

以MacOS系统内置的“苹方”字体为例,自带“极细(Ultra Light)”、“纤细(Thin)”、“细(Light)”、“常规(Regular)”、“中黑(Medium)”、“中粗(Semibold)”六种字重,占用体积80M。对于这样的系统字体而言,我们使用时并无需引入,只需设置字体集即可,无需考虑字体引入的速度问题。

引入非系统自带字体时,我们可以通过压缩字体减少体积后引入,不过压缩只会减少字体支持的字符集,对不同字重、字宽等有需求时,依然需要引入相应的字体。

eb1fe377d23cab27445177aa2cfecb41.png上图截取自 https://www.foundertype.com/

可变形字体

为了应对这些问题,Adobe、Microsoft、Apple、Google联合推出OpenType1.8版本,加入了Variable Fonts(可变形字体)。

可变形字体看起来像是不同字重、字宽或不同样式的字体的合集,然而,可变形字体通过轴(Axis)来描述字体轮廓点如何变化,以达到不同的字重、字宽或样式的变化,因此仅使用一套轮廓点的可变形字体体积比普通字体集会小。

可变形字体的秘密 - 变形轴

可变形字体通过变形轴(variation axis)来描述如何渲染展示字体,可以在css中通过font-variation-settings属性来修改:

1. wght - 字重(font weight),用于定义笔画的粗细,可变范围1-999,对应font-weight属性。在使用非可变形字体时,我们只能使用100-900并以100步长递增或者normal、bold这样的别名来定义字重。在使用可变形字体时,我们可以用粒度更小的方式修改字重。

.font-weight-normal {  font-weight: 400;  font-variation-settings: 'wght' 400;}

af605c674ee4b319bd211c9805e29999.gif

2. wdth - 字宽(font width),用于定义字形的宽窄,对应font-stretch属性。

.font-stretch-115 {  font-stretch: 115%;  font-variation-settings: 'wdth' 115; /*设置时不需写上百分比符号。*/}

5069be6b2b33f50bc335463b2f30e62d.gif

3. ital - 斜体(italic),用于设置字形展示为正体或斜体,对应font-style: italic。斜体的变化没有中间值,只有正体和斜体的变化。

.font-italic {  font-style: italic;  font-variation-settings: 'ital' 1;}

40d6862bc76a5c413079f39f4c32926b.gif

4. slnt - 倾斜(slant),与ital不一样的是,slnt可以设置字形倾斜的中间值,还可以根据设计设定顺时针或逆时针的倾斜。

.font-slant-30 {  font-style: oblique 30deg;  font-variation-settings: 'slnt' 30; /*此处也不需设置单位*/}

f93319e241f9ae57c16b0a8b29e1a52c.gif

5. opsz视觉尺寸(optical size),与字重的变化不同,视觉尺寸的变化更注重不同字号下字体笔画的变化,保证在不同尺寸下的可能性。

ba9bdd4c49625690a9fd6524a61a3858.gif

以上五种变形轴又成为保留轴(registered axis),同时字体设计师可以根据需要创建自定义轴(axis),详情可见 https://docs.microsoft.com/zh-cn/typography/opentype/spec/dvaraxisreg

如何使用

已有部分系统字体变成可变字体,不过第三方字体仍需我们引入后才可使用。我们依旧使用@font-face引入:

@font-face {  font-family: 'source sans';  src: url(SourceSansVariable.woff2) format("woff2-variations"),       url(SourceSans.woff2) format("woff2”);  font-weight: normal;  font-style: normal;}

前面的字体src表示可变形字体,后面表示普通字体,方便兼容旧的浏览器。

/*支持的浏览器*/h1 {  font-family: "source sans";  font-variation-settings: "wght" 300, "wdth" 120;}/*不支持的浏览器*/h1 {  font-family: 'source sans';  font-weight: 300;  font-stretch: 120%;}

上面的两种写法,在支持可变形字体的浏览器上的效果是等同的。我们可以通过CSS Media Query,在支持可变形字体的浏览器上,增强展示效果。

@supports (font-variation-settings: normal) {  /* TODO */}

应用

自可变形字体发布以来,操作系统、浏览器、排版软件、设计师、字体厂商都在积极跟进。

MacOS 10.13+和Windows 10都已经系统性支持可变字体。

从caniuse.com数据可以看到,目前主流浏览器均已支持:

bcb15b5614a6039c6ac7dc18525d2d39.png

在中文字体方面,方正、文鼎都已推出可变形字体,可根据需要使用。不过相较于中文字体的复杂,英文可变字体相对就丰富多了。https://www.axis-praxis.org/ 和 https://v-fonts.com/ 都提供了可变字体的预览。

动画

得益于多种变形轴的加入,在设置文字动画时,不再局限于文字的加粗、字号变化等常规操作,现在可以根据设计师的需求,进行文字笔画的变形、圆角等操作。更骚的是,有设计师做出了图形可变字体,再结合动画,可以玩出更多的花样。

e07d40dd18a6d367f46e8afde0e5e361.gif(来自zycon字体)

自适应

页面在前面也介绍过,可以通过视觉尺寸来控制笔画的变化,当然,在不同尺寸的设备上,通过设置不同字重、字宽也可以达到增强可读性的目的。3a553a6cffd36ed068fcdbd206da9d35.png

@media screen and (max-width: 699px) and (min-width: 460px)h1 {  font-size: 2.5rem;  font-variation-settings: "wght" 500, "wdth" 100;}

7eeb0648df5a88e06605f28ae3b42daf.png

@media screen and (min-width: 800px)h1 {  font-variation-settings: "wght" 300, "wdth" 120;  font-size: 3rem;}

展望

字体文件体积大、引入文件数量多是目前我们关注到的制约字体在web应用上的一个痛点,在即将到来的5G时代可能并不是一个需要关注的小问题。不过可变形字体确实能够解决排版问题、提升交互,在不久将来,更注重视觉可读性的网站、APP相信将会越来越多。撒花。

参考文档

  1. https://css-tricks.com/one-file-many-options-using-variable-fonts-web/

  2. https://css-tricks.com/weird-things-variable-fonts-can-do/

  3. https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts/

  4. https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值