Встановлення ваги шрифту та жирної сімейства шрифтів у CSS, що правильніше?


9

В основному є два способи зробити шрифт жирним у CSS: через font-familyатрибут та через font-weightатрибут.

Скажімо, я використовую, наприклад, шрифт Raleway і завантажую Light, Regular, Semibold та Bold варіант через css. Я міг перетворити простий заголовок жирним шрифтом, встановивши його на h1{font-family: 'Raleway Bold'}або h1{font-weight: 700}.

Що з них є більш правильним, чи це те саме?


У мене є сумніви, що або написання "font-weight" в css є правильним, якщо у вас є всі варіанти в сім'ї шрифтів. наприклад: Шрифт Raleway має всі варіанти від легкого до надмірно жирного. Тож яким способом доцільно використовувати всі шрифти з сімейства, щоб ми не могли втратити символ шрифту.
pooja


@poojaa, я взяв на себе сміття редагувати ваше питання, щоб зробити форматування більш чітким і вивести актуальне питання більше на перший план. Якщо ви відчуваєте, що я змінив значення, ви завжди можете редагувати його самостійно.
PieBie

Відповіді:


6

Скажімо, ми завантажили такий варіант жирного шрифту, як:

@font-face {
  font-family: 'Raleway Bold';
  font-style: normal;
  font-weight: 700;
  src: url(path/to/font/raleway-bold.woff2) format('woff2');
}

Я б заперечував за те, щоб використовувати font-familyі font-weightваш, і специфікаційний стиль. Наприклад:

h1 {
  font-weight: 700;
  font-family: 'Raleway Bold', Helvetica, Arial, sans;
}

Обидва в основному роблять те саме: скажіть, що ваш заголовок1 є жирним. Це не подвоїть зухвалість чи що-небудь, воно просто повторює, що потрібно бути жирним.

Причина цього досить проста: якщо файл вашого шрифту не завантажений (перевантаження сервера, обмеження клієнтів, вуду), ваш відвідувач все одно побачить жирний шрифт (у цьому випадку штучна жирна Helvetica) і може таким чином розрізнити назву а текст тексту, який би не був, якби ви тільки вказали font-family.

Дивіться на цьому зображенні верхній набір - Raleway та Raleway Italic, але завантажений належним чином Raleway Italic:

<link href='https://fonts.googleapis.com/css?family=Raleway:500,500italic' rel='stylesheet' type='text/css'>

Дно лише завантажує Raleway. В результаті нижній набір має курсив Raleway та FAUX Raleway. Зверніть увагу на відмінності в нижньому регістрі "a" та "k", наприклад, між справжнім курсивом та штучним курсивом. Добре розроблений шрифт матиме відмінності між звичайними, жирними шрифтами та курсивом, які ви не отримаєте, якщо не завантажите їх.

введіть тут опис зображення


Використання одного прізвища та лише встановлення ваги все одно надасть вам правильну вагу, якщо файли шрифтів не завантажуються. Єдиною причиною використання обох було б з міркувань сумісності.
Кай

1
Ви розгублені. Ваш приклад шрифту Google не лише позначає курсив Raleway як просто font-family: 'Raleway'(суперечить вашому сміливому прикладу вище), але, крім того, незалежно від того, щоб називати всю сім’ю Ralewayабо кожен варіант окремо з різними іменами сімейства шрифтів, абсолютно не стосується застосування штучного чи ні . Навіть ваш власний приклад доводить, що це неправильний метод, як це надано font-family: 'Raleway Bold', Helvetica, Arial, sans;, Helvetica Boldі Arial Boldокремо, оскільки це лише невірний спосіб каскадування варіантів шрифту.
rgthree

1

Хоча обидва способи дадуть вам правильний вихід, більш правильним способом було б використання одного сімейства шрифтів для групування всіх різних варіантів ваг і стилів. Це те саме, що ви використовуєте системні шрифти (від 'Arial' вниз до 'sans-serif') і, насправді, якщо ви використовуєте шрифти Google для завантаження Raleway, ви використовували б єдиний сімейний маршрут.

Окреслимо кілька причин, чому це правильний метод.

Це зменшує складність CSS і, в кінцевому рахунку, розмір файлу

Наявність одного сімейства шрифтів означає, що ви можете визначити цілий елемент, що містить сімейство шрифтів, і лише певні елементи різної ваги / стилів. Візьміть, наприклад, таке:

html {
  font-family: Raleway;
}
.bold {
  font-weight: 700;
}
.italic {
  font-style: italic;
}
.footer {
  font-family: Arial;
}

<p>I'm raleway font, <span class="bold">and I'm raleway bold</span></p>
<div class="bold italic">I'm Raleway Bold Italic!</div>
<div class= footer>I'm <span class="bold">Arial Bold,</span> w/ the same class!</div>

Зауважте, наскільки це приємно і добре. Нам не потрібно було вказувати "RalewayBold" як сімейство шрифтів для .bold, а також "RalewayItalic" для нашого .italic. Infact, нам навіть не потрібно вказувати жирний і курсивний варіант, оскільки наші класи будуть просто працювати. Крім того, якщо .bold знаходиться в нашому .footer, він буде жирним Arial, а не Raleway, тому що він просто успадковує Arial від нижнього контейнера футера.

Це так, як це робить браузер.

Сказане по суті полягає в тому, як внутрішня таблиця стилів браузера визначає шрифти, використовуючи мінімальні стилі та притаманний каскадний характер CSS.

Це так, як робить це та робить галузь.

Найбільші веб-властивості, програми та видавці роблять це так. Google, Facebook, NYT, ESPN тощо, визначають і використовують шрифти таким чином.

Мало того, але користувальницькі інтерфейси перед CSS або навіть Інтернетом задають окремі сімейства шрифтів та вибирають варіанти, що базуються на різних специфікаціях ваги та стилю. Завантажте Microsoft Word, KeyNote, Google Docs, навіть старий WordPerfect кінця 1990-х і відкрийте розкривний шрифт; Ви побачите вказане прізвище шрифту "Arial"; не "Arial", а потім "Arial Bold", а потім "Arial Italic" тощо.

Просто завантажте з Google Fonts.

Якщо ви завантажуєте Raleway з безкоштовного сховища веб-шрифтів у Google Fonts, ви побачите, що Raleway визначено одним прізвищем:

https://fonts.googleapis.com/css?family=Raleway:200,400italic,500,500italic 700,700italic

@font-face {
  font-family: 'Raleway';
  font-style: normal;
  font-weight: 400;
  src: url(https://...Raleway-Regular.woff2) format('woff2');
}
@font-face {
  font-family: 'Raleway';
  font-style: normal;
  font-weight: 700;
  src: url(https://...Raleway-Bold.woff2) format('woff2');
}
@font-face {
  font-family: 'Raleway';
  font-style: italic;
  font-weight: 500;
  src: url(https://...Raleway-MediumItalic.woff2) format('woff2');
}
@font-face {
  font-family: 'italic';
  font-style: normal;
  font-weight: 700;
  src: url(https://...Raleway-BoldItalic.woff2) format('woff2');
}

Чи цей метод не ігнорує зміни між стилями шрифту для штучних?
Райан

@Ryan Зовсім не. Насправді назва сімейства шрифтів (або правильно поєднати сім'ю, як Ralewayіз варіантами ваги / стилю, або неправильно визначати окремі варіанти Raleway Boldта Raleway Italicяк окремі сімейства шрифтів) не має жодного стосунку до застосування штучних варіацій чи ні. Насправді, правильне поєднання сімейства під тим самим іменем допомагає веб-переглядачу вибрати більш близький варіант, щоб застосувати фальшивий стиль, в той час як неправильне іменування кожної варіації окремо зберігає браузер у темряві наявних шрифтів, щоб застосувати варіанти, якщо потрібний шрифт не завантажений.
rgthree

(1) Просто завантажте з шрифтів Google : для веб-сайтів впевнено, але є багато інших випадків, коли html / css використовується, коли підключення до Інтернету не гарантоване, і вам доведеться завантажувати шрифти локально, (2) Це зменшує складність CSS , в кінцевому рахунку, розмір файлу : так ви будете поголити 1 кб на сайті або в додатку, що складає десятки МБ, клієнт буде вражений тим, як швидко завантажується ваше додаток, (3) це спосіб браузера / галузі : браузери за замовчуванням для штучного вимислу, і все одно "галузь" не завжди є правильною, і не дотримується кращих практик (просто подивіться на flexbox)
PieBie

браузери за замовчуванням для штучного що? Ви явно не знаєте, про що говорите. Коли ви вказуєте font-family:Arial; font-weight:bold;(що, знову ж таки, це правильний спосіб зробити це, незалежно від того, чи це Arial чи Raleway), чи вважаєте ви, що браузер наносить на звичайне обличчя шрифту Arial штучний жирний шрифт? Неправильно. Веб-браузер завантажує обличчя шрифту ArialBold, як система визначає, і лише якщо немає точного шрифту , він застосує фальшивий стиль до найкращого відповідного шрифту на основі прізвища шрифту, тому вони повинні бути однаковими! Не можу сказати "Зробіть це для Arial, але не для Raleway".
rgthree

0

Ось у чому справа, якщо ви ставите запитання про Raleway, веб-шрифт, запрограмований на css, обидва способиJ працюють однаково добре. У цьому випадку використовуйте шрифт, тому що це "правильний" спосіб дії, який буде найлегше змінити і контролювати без великих змін у коді.

Тепер у вас виникають проблеми, коли ви вставляєте шрифт самостійно, шрифт, який не обов'язково планується для css, і ваги можуть не відповідати цифрам.

Через це дуже поширена помилка вбудованих шрифтів, надзвичайно поширена в не англійських шрифтах, полягає в тому, що css "жирним шрифтом" або "освітлює" шрифт автоматично, а результат дуже поганий.

Тому я рекомендую, якщо ви використовуєте веб-шрифт, як шрифти для google-шрифтів, продовжуйте використовувати цифри на вагу шрифту, але коли ви вставляєте шрифт самостійно, залишайтеся на безпечному боці та використовуйте сімейство шрифтів для кожної ваги окремо .

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