具有不同粗细但名称相同的Google本地字体

时间:2019-04-12 16:55:12

标签: css font-face font-family google-fonts

这是我的问题:

为了改善我对Google速度的洞察力,我不得不从阻止渲染的Google字体切换到加载的本地Google字体。

到目前为止,除了我有一个很大的问题之外,一切都很好。

在我以这种方式加载字体之前:

<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700|Open+Sans+Condensed:300|Ubuntu+Condensed|Ubuntu:300,700" rel="stylesheet">

在我巨大的样式表中,我只是正常地称它们为例如,

body {
  font-family: 'Open Sans', sans-serif;
  font-weight: 400;
}

但是现在,由于我不得不下载它们以避免渲染阻塞的红色标记,所以我以这种方式调用它们:

@font-face {
    font-family: "Opens Sans";
    src: url("/fonts/OpenSans-Regular.ttf");
    font-style: normal;
    font-weight: 400;
}
@font-face {
    font-family: "Opens Sans";
    src: url("/fonts/OpenSans-Light.ttf");
    font-weight: 300;
}
@font-face {
    font-family: "Opens Sans";
    src: url("/fonts/OpenSans-Bold.ttf");
    font-weight: 600;
}
@font-face {
    font-family: "Opens Sans";
    src: url("/fonts/OpenSans-ExtraBold.ttf");
    font-weight: 700;
}
@font-face {
    font-family: "Opens Sans Condensed";
    src: url("/fonts/OpenSansCondensed-Light.ttf");
    font-weight: 300;
}
@font-face {
    font-family: "Ubuntu Condensed";
    src: url("/fonts/UbuntuCondensed-Regular.ttf");
    font-weight: 300;
}
@font-face {
    font-family: "Ubuntu";
    src: url("/fonts/Ubuntu-Regular.ttf");
    font-weight: 300;
}
@font-face {
    font-family: "Ubuntu";
    src: url("/fonts/Ubuntu-Bold.ttf");
    font-weight: 700;
}

在这里您可以看到我的问题。

我用相同的名称称呼不同的字体,但是它们具有不同的粗细。显然,我可以使用不同的名称来称呼它们,例如“ Ubuntu Bold”,但是随后我将不得不更改整个样式表,例如,我现在应该声明:

body {
      font-family: 'Open Sans Normal', sans-serif;
      // font-weight: 400; //
}
p {
      font-family: 'Open Sans Bold', sans-serif;
      // font-weight: 700; //
}

基本上,不再需要字体粗细,而只是使用不同的字体家族名称来表示粗细。

我的问题有解决办法吗?

1 个答案:

答案 0 :(得分:1)

即使字体文件不同,也不需要为每种字体设置不同的font-family。您只需设置一个font-family,然后在不同的@font-face属性中指定不同的版本即可。

您应使用相同的@font-face名称定义每个font-family,如下所示:

@font-face {
    font-family: 'Opens Sans';
    src: url("/fonts/OpenSans-Regular.ttf");
    font-style: normal;
    font-weight: 400;
}
@font-face {
    font-family: 'Opens Sans';
    src: url("/fonts/OpenSans-Italic.ttf");
    font-style: italic;
    font-weight: 400;
}
@font-face {
    font-family: 'Opens Sans';
    src: url("/fonts/OpenSans-Bold.ttf");
    font-style: normal;
    font-weight: 600;
}

请注意,每个不同的字体文件都有一个单独的@font-face,它们具有与特定字体文件相对应的不同属性,但是它们具有相同的font-family。然后,您可以像这样使用CSS中的字体:

body {
    font-family: 'Open Sans', sans-serif;
    font-weight: 400;
}
.bold {
    font-family: 'Open Sans', sans-serif;
    font-weight: 600;
}
.italic {
    font-family: 'Open Sans', sans-serif;
    font-style: italic;
}

css类中的其他属性(font-weightfont-style等)将确定使用哪个@font-face

相关问题