複数のfont-weights、1つの@ font-faceクエリ


118

私はKlavikaフォントをインポートする必要があり、複数の形状とサイズでそれを受け取りました:

Klavika-Bold-Italic.otf
Klavika-Bold.otf
Klavika-Light-Italic.otf
Klavika-Light.otf
Klavika-Medium-Italic.otf
Klavika-Medium.otf
Klavika-Regular-Italic.otf
Klavika-Regular.otf

次に、クエリでを@font-face定義している-queryを1つだけ使用してCSSにインポートできるかどうかを知りたいと思いweightます。クエリを8回コピー/貼り付けしたくない。

したがって、次のようなもの:

@font-face {
  font-family: 'Klavika';
  src: url(../fonts/Klavika-Regular.otf), weight:normal;
  src: url(../fonts/Klavika-Bold.otf), weight:bold;
}

4
それは1つのフォントではありません...それは複数のフォントです...だから残念ながら、私はあなたがただにやにや笑って耐えなければならないだろうと思います。
Paulie_D 2015

申し訳ありませんが、同じファミリー内の異なるフォントです。
Rvervuur​​t 2015

複数のwebfont-files ===異なる重み
Eric

2
この記事は役立つかもしれません:456bereastreet.com/archive/201012/…実際にはここにSO Answerがあります:stackoverflow.com/questions/10045859/…それはその記事を使用しています。
97ldave、2015

回答:


270

実際には、@ font-faceの特別なフレーバーがあり、あなたが求めているものだけを許可します。

これは、異なるフォントに関連付けられた異なるスタイルと太さの同じフォントファミリ名を使用する例です。

@font-face {
  font-family: "DroidSerif";
  src: url("DroidSerif-Regular-webfont.ttf") format("truetype");
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: "DroidSerif";
  src: url("DroidSerif-Italic-webfont.ttf") format("truetype");
  font-weight: normal;
  font-style: italic;
}

@font-face {
  font-family: "DroidSerif";
  src: url("DroidSerif-Bold-webfont.ttf") format("truetype");
  font-weight: bold;
  font-style: normal;
}

@font-face {
  font-family: "DroidSerif";
  src: url("DroidSerif-BoldItalic-webfont.ttf") format("truetype");
  font-weight: bold;
  font-style: italic;
}

これで、指定することができfont-weight:boldたりfont-style:italic、フォントファミリーまたは上書きを指定しなくても、あなたが好きな要素へfont-weightfont-style

body { font-family:"DroidSerif", Georgia, serif; }

h1 { font-weight:bold; }

em { font-style:italic; }

strong em {
  font-weight:bold;
  font-style:italic;
}

この機能の完全な概要と標準的な使用法については、この記事をご覧ください。


ペンの例


1
上記のコメントで提案したとおり、;-)
97ldave、2015

4
私の場合、これは最も低い@ font-faceのみを使用します。それはfont-weightです。フォントスタイル:イタリック; font-family: 'DroidSerif'を参照するたびに;
Simon Arnold、

1
この方法が実際に機能していることを証明するテストはありますか?ブラウザが正しいフォントファイルを読み取らずに、太さやスタイルを偽造していないことをどのように証明しますか?
rojobuffalo 2016年

1
@rojobuffalo ここだ期待のように、それは働いて、例のペン。
maioman

2
@rojobuffaloは非常に有効なポイントです。ペンは、これが期待どおりに動作するという主張の有効性を検証するために何もしません。具体的には、CSSの例から太字のfont-face宣言を削除して、もう一度実行しました。外観は同じでした。キャッシュから取得していましたか?ブラウザは、通常のフォントの表示された太さをいじるだけですか?

10
@font-face {
  font-family: 'Klavika';
  src: url(../fonts/Klavika-Regular.otf) format('truetype') font-weight-normal,
       url(../fonts/Klavika-Bold.otf) format('truetype') font-weight-bold,
       url(../fonts/Klavika-Bold-Italic.otf) format('truetype') font-italic font-weight-bold;
}

17
これで問題が解決する理由について簡単に説明してください。文章のように単純な場合もあります。
ggderas

3
前のものと同じ解決策。ただ短い表記:)
MirkaNimsová'19

2
この表記についてどこで読むことができますか?MDNで表示しない
avalanche1

それは動作していないようで、リソースを見つけることができませんが、それはそれに対していくつかの真実があるようです。
ダカブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.