Кілька вагових шрифтів, один @ шрифт-обличчя


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

Тепер я хотів би знати, чи можна імпортувати їх у CSS лише одним @font-faceзапитом, де я визначаю 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

Вибачте, це різні шрифти в одній родині.
Рвервурт

Кілька файлів webfont === різної ваги
Ерік

2
ця стаття може допомогти: 456bereastreet.com/archive/201012 / ... на насправді є SO Відповідь тут: stackoverflow.com/questions/10045859 / ... , який використовує цю статтю, альтернатива тому , що ви хочете , як то , що ви хочете , НЕ представляється можливим.
97льда

Відповіді:


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-weightта font-style.

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

h1 { font-weight:bold; }

em { font-style:italic; }

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

Повний огляд цієї функції та звичайного використання див. У цій статті.


ПРИКЛАД ПЕН


1
так само, як я запропонував у своєму коментарі вище ;-)
97

4
У моєму випадку для цього використовується лише найнижчий @ font-face. Це був би шрифт: жирний шрифт; шрифт: курсив; кожного разу, коли я посилаюся на сімейство шрифтів: "DroidSerif";
Саймон Арнольд

1
Чи є у вас тест, який доводить, що цей метод насправді працює? Як би ви довели, що браузер не просто підробляє вагу або стиль, не читаючи правильний файл шрифту?
rojobuffalo

1
@rojobuffalo ось приклад ручки, він працює як очікувалося.
maioman

2
@rojobuffalo робить дуже вагомим моментом. Ручка нічого не робить для перевірки обгрунтованості твердження, що це буде вести себе так, як очікувалося. Зокрема, я видалив сміливе оголошення шрифту з прикладу CSS і запустив його ще раз. Зовнішній вигляд був однаковим. Це тягнуло з кеша? Чи просто переглядач відображав вагу звичайного шрифту?

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
Те саме рішення, що і попереднє. Просто коротше позначення :)
Mirka Nimsová

2
Де я можу прочитати про ці позначення? Не бачити цього на MDN
lalanche1

Це, здається, не працює, і я не можу знайти ресурс, але там, мабуть, є якась правда.
дакаб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.