За замовчуванням системний шрифт певної операційної системи може підвищити продуктивність, оскільки браузер не повинен завантажувати будь-які шрифтові файли, він використовує вже наявний. Однак це стосується будь-якого шрифта, що захищає веб-сторінки. Краса «системних» шрифтів полягає в тому, що вони відповідають тому, що використовує поточна ОС, тому може бути зручним виглядом.
Що це за системні шрифти? На момент написання цієї статті вона розбивається наступним чином:
ОС | Версія | Системний шрифт |
---|---|---|
Mac OS X | Ель-Капітан | Сан Франциско |
Mac OS X | Йосемітський | Helvetica Neue |
Mac OS X | Маверікс | Люсіда Гранде |
Windows | Vista | Інтерфейс користувача Segoe |
Windows | XP | Тахома |
Windows | 3.1 до мене | Microsoft Sans Serif |
Android | Бутерброд з морозивом (4.0) + | Робото |
Android | Кекс (1,5) до стільникового (3,2,6) | Droid Sans |
Ubuntu | Всі версії | Ubuntu |
Переходьте до фрагмента, вже!
Причина передмови полягає в тому, що вона показує, наскільки глибоко вам може знадобитися повернутися до підтримки системних шрифтів. Крім того, це допомагає показати, що з новими версіями системи з’являються нові шрифти і, отже, можливість необхідності оновлення стеку шрифтів.
Спосіб 1: Системні шрифти на рівні елементів
Chrome і Safari нещодавно поставили “system-ui”, що є загальним сімейством шрифтів, яке можна використовувати замість “-apple-system” та “BlinkMacSystemFont” у наступних прикладах. Порада капелюху для JJ для отримання інформації.Одним із методів застосування системних шрифтів є прямий виклик їх для елемента за допомогою font-family
властивості.
GitHub використовує цей метод на своєму сайті, застосовуючи системні шрифти до body
елемента:
/* System Fonts as used by GitHub */ body ( font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; )
Як Medium, так і адміністратор WordPress застосовують подібний підхід, з невеликими варіаціями, зокрема, підтримка Oxygen Sans (створена для операційної системи GNU + Linux) та Cantarell (створена для операційної системи GNOME). Цей фрагмент також видаляє підтримку для певних типів смайлів та символів:
/* System Fonts as used by Medium and WordPress */ body ( font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; )
Примітка: Цей метод слід використовувати лише у font-family
властивості, а не в font
скороченні. Booking.com опублікував детальний опис попереджень, які він генерує, оскільки основний шрифт, здається, є префіксом постачальника.
Спосіб 2: Стеки системних шрифтів
Обмеження першого методу полягає в тому, що вам доводиться викликати повний стек шрифтів кожного разу, коли він використовується для елемента, і це може стати громіздким і роздути ваш код, залежно від того, де і як він використовується.
Джонатан Ніл пропонує альтернативний метод, коли системні шрифти оголошуються з використанням @font-face
.
Перевага тут полягає в тому, що ви можете оголосити шрифти один раз, і тоді це стає тим, що ви можете у font-family
властивості, а не довгим списком шрифтів кожен раз.
/* Define the "system" font family */ @font-face ( font-family: system; font-style: normal; font-weight: 300; src: local(".SFNSText-Light"), local(".HelveticaNeueDeskInterface-Light"), local(".LucidaGrandeUI"), local("Ubuntu Light"), local("Segoe UI Light"), local("Roboto-Light"), local("DroidSans"), local("Tahoma"); ) /* Now, let's apply it on an element */ body ( font-family: "system"; )
Зверніть увагу, що повний приклад Джонатана ілюструє можливість визначати варіації system
сімейства шрифтів, яка була визначена у наведеному вище фрагменті, щоб врахувати курсив, жирний шрифт та додаткові ваги.
Пов’язані
- Специфічні для ОС шрифти в CSS - що включає метод JavaScript для тестування шрифту, що використовується.
- Системні шрифти у SVG
- Впровадження системних шрифтів на Booking.com - Отриманий урок - Booking.com ділиться тим, як вони навчилися за допомогою системного стеку шрифтів у
font
стенограмі, і не працює належним чином.