假设我们通过使用 @font-face
定义了一个要使用的 font-family
:
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v15/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
看起来上面的
font-weight
并不是用于指定在用户指定使用font-family: Roboto
字体时使用哪种字体粗细,而是用于"匹配"当@font-face
指定相同名称时使用哪种字体文件。例如,在@font-face
中指定font-weight
为400
,在 Google Chrome(版本48.0)中呈现的文本内容,无法将轻质变得更轻,但可能会通过双重打印或增加像素的宽度来使粗体文本变粗。如果我们在@font-face
中将font-weight
设置为900
,那么所有3行文本都变回了普通样式。因此,我们可以看出900
并没有指定使用该字体文件应该如何显示。那么,在@font-face
内部使用font-weight
的作用是什么呢?如果我们使用https://www.google.com/fonts#UsePlace:use/Collection:Roboto 并链接这一行,您将看到它提供了一个与font-weight
相关的示例。<link href='https://fonts.googleapis.com/css?family=Roboto:400,700,900,300'
rel='stylesheet' type='text/css'>
这将把一些CSS定义作为文件加载到浏览器中:
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: local('Roboto Light'), local('Roboto-Light'), url(https://fonts.gstatic.com/s/roboto/v15/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v15/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 900;
src: local('Roboto Black'), local('Roboto-Black'), url(https://fonts.gstatic.com/s/roboto/v15/mnpfi9pxYH-Go5UiibESIpBw1xU1rKptJj_0jans920.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
/* other languages omitted here */
现在我们可以看到3个“权重”:
但是,它并不是通过数字的最接近匹配,而是似乎是通过“轻”,“正常”和“粗体”类别进行匹配,因为如果它是301,则不会与299匹配,即使它非常接近于299,但是会与400或500匹配:
699也不会与700匹配,但会与400匹配。
我们还可以看到,如果反转@font-face的font-weight,并使用文本样式的bold、normal、lighter,则bold将使用浅色字体文件,而lighter将使用深色字体文件:
但是,一个奇怪的事情是,如果在最后一个@font-face中将700更改为701,现在所有3条线都会变成粗体:
所以这真的很奇怪。似乎规则是:与3个权重类别匹配,除了最后一个例子。
再说一个奇怪的事情:如果.section1的font-weight为300,它显示为轻盈:
但将其设置为font-weight:299-表示较轻,则现在它显示为粗体:
因此,使其更轻变成了粗体。
那么,在
@font-face
中,font-weight
的规则是什么?