Beberapa bobot font, satu kueri @ font-face

118

Saya harus mengimpor font Klavika dan saya telah menerimanya dalam berbagai bentuk dan ukuran:

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

Sekarang saya ingin tahu apakah mungkin untuk mengimpornya ke CSS hanya dengan satu @font-face-query, di mana saya mendefinisikannya weightdalam kueri. Saya ingin menghindari menyalin / menempel kueri 8 kali.

Jadi sesuatu seperti:

@font-face {
  font-family: 'Klavika';
  src: url(../fonts/Klavika-Regular.otf), weight:normal;
  src: url(../fonts/Klavika-Bold.otf), weight:bold;
}
Rvervuurt
sumber
4
Ini bukan 1 font ... ini banyak font ... jadi sayangnya, saya pikir Anda harus tersenyum dan menanggungnya.
Paulie_D
Ya maaf, ini font berbeda dalam keluarga yang sama.
Rvervuurt
Beberapa file font web === bobot berbeda
Eric
2
artikel ini mungkin bisa membantu: 456bereastreet.com/archive/201012/… sebenarnya ada SO Answer di sini: stackoverflow.com/questions/10045859/… yang menggunakan artikel itu, alternatif untuk apa yang Anda inginkan karena apa yang Anda inginkan tidak mungkin.
97ldave

Jawaban:

270

Sebenarnya ada rasa khusus dari @ font-face yang akan mengizinkan apa yang Anda tanyakan.

Berikut adalah contoh menggunakan nama font-family yang sama dengan gaya dan bobot berbeda yang terkait dengan font berbeda:

@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;
}

Anda sekarang dapat menentukan font-weight:boldatau font-style:italicke elemen apa pun yang Anda suka tanpa harus menentukan font-family atau menimpa font-weightdan font-style.

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

h1 { font-weight:bold; }

em { font-style:italic; }

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

Untuk gambaran umum lengkap tentang fitur ini dan penggunaan standar, lihat artikel ini.


CONTOH PEN

maioman
sumber
1
seperti yang saya sarankan dalam komentar saya di atas ;-)
97ldave
4
Dalam kasus saya, ini hanya menggunakan @ font-face terendah. Itu akan menjadi font-weight: bold; font-style: italic; setiap kali saya mengacu pada font-family: 'DroidSerif';
Simon Arnold
1
Apakah Anda memiliki tes yang membuktikan metode ini benar-benar berfungsi? Bagaimana Anda membuktikan bahwa browser tidak hanya memalsukan bobot atau gaya tanpa membaca file font yang benar?
rojobuffalo
1
@rojobuffalo berikut adalah contoh pena, berfungsi seperti yang diharapkan.
maioman
2
@rojobuffalo membuat poin yang sangat valid. Pena tidak melakukan apa pun untuk memverifikasi validitas pernyataan bahwa ini akan berperilaku seperti yang diharapkan. Secara khusus, saya menghapus deklarasi font-face tebal dari contoh CSS dan menjalankannya lagi. Penampilannya pun identik. Apakah itu menarik dari cache? Apakah browser hanya mengutak-atik bobot font biasa yang ditampilkan?
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;
}
Mirka Nimsová
sumber
17
Harap tulis sedikit penjelasan tentang mengapa ini akan menyelesaikan masalah. Ini bisa menjadi sesuatu yang sederhana seperti kalimat.
ggderas
3
Solusi yang sama dengan yang sebelumnya. Notasi hanya lebih pendek :)
Mirka Nimsová
2
Di mana saya dapat membaca tentang notasi ini? Tidak melihatnya di MDN
longsoran1
Tampaknya tidak berhasil dan saya tidak dapat menemukan sumber daya, namun tampaknya ada benarnya.
dakab