unicode-range
Властивість в CSS використовується @font-face
для визначення символів, які підтримуються шрифтом особи.
@font-face ( font-family: 'MyWebFont'; /* Define the custom font name */ src: url('myfont.woff2') format('woff2'), url('myfont.woff') format('woff'); /* Define where the font can be downloaded */ unicode-range: U+00-FF; /* Define the available characters */ )
Іншими словами, @font-face
буде посилатися на властивість і визначати, чи слід йому завантажувати та використовувати шрифт, залежно від того, відповідають символи або діапазон символів тим, що містяться в документі HTML.
Шрифт Face: Hey HTML, чи відповідає будь-який із наведених символів тому, що є на сторінці?
HTML: Так, купа з них це робить.
Font-Face: Чудово, ось файл шрифтів, який потрібно завантажити для відображення цих символів.
Важливим семантичним розрізненням, яке тут слід назвати, є те, що unicode-range
визначає, для яких символів може використовуватися шрифт, а не які символи доступні для використання шрифтом. Іншими словами, якщо ми оголосимо, що unicode-range
on, @font-face
а символи, завантажені в документ HTML, збігаються з цим діапазоном, тоді шрифт завантажиться і буде застосовано.
Ви можете собі уявити переваги продуктивності, які відкриваються з цією властивістю. Наприклад, ми можемо завантажити спеціальний шрифт лише у тому випадку, якщо він вміщує певні символи, а не завжди завантажує шрифт у всіх ситуаціях.
Існує навіть спосіб поєднати два @font-face
набори в одній font-face
декларації про властивості, завдяки зручному трюку, яким поділився Джейк Арчібальд. Ідея полягає в тому, що один @font-face
набір замінює інший на основі відповідності unicode-range
, оптимізації продуктивності або просто покращення типографіки на сторінці.
Цінності
Будь-який код символу або діапазон Unicode є прийнятним unicode-range
значенням. Ви помітите, що перед точками юнікоду передують U+
і до шести символів, що складають код символу. Точки або діапазони, які не відповідають цьому формату, вважаються недійсними і призведе до ігнорування властивості.
- Один символ (наприклад
U+26
) - Діапазон символів (наприклад
U+0025-00FF
) - Діапазон підстановок (наприклад
U+4??
)
Діапазон Уайлдкард - складний варіант. Кожен ?
представляє підстановочний знак, де будь-яке значення буде збігатися. Можна подумати, що це означає, що ви можете узагальнити все це приблизно таким чином:
@font-face ( font-family: 'MyWebFont'; src: url('myfont.woff2') format('woff2'), url('myfont.woff') format('woff'); unicode-range: U+??????; /* This does not work! */ )
Однак це не спрацює. Причина полягає в тому, що підведення ?
символів із символом означає код символу, який веде до символу 0
, тобто, що може використовувати до п’яти символів знака, незважаючи на те, що Unicodes приймають до шести символів.
@font-face ( font-family: 'MyWebFont'; src: url('myfont.woff2') format('woff2'), url('myfont.woff') format('woff'); unicode-range: U+?????; /* This works and is equivalent to U+0????? */ )
Є маса опцій Unicode. Базова латиниця ( 0020-007F
) - це, мабуть, найпоширеніший діапазон для англійських веб-сайтів, але unicode-table.com надає вичерпний перелік усіх доступних діапазонів із кодами для певних символів.
Підтримка браузера
Дані про підтримку веб-переглядача подані компанією Caniuse, яка містить більше деталей. Цифра вказує на те, що браузер підтримує цю функцію на цій версії та вище.
Робочий стіл
Chrome | Firefox | IE | Край | Сафарі |
---|---|---|---|---|
36 | 44 | 11 | 17 | 10 |
Мобільний / планшетний
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | 81 | 10,0-10,2 |
Подальше читання
- Специфікація модуля шрифтів CSS рівня 3
- Таблиця Unicode: ресурс для посилання на набори та коди символів Unicode.
- Використання @ font-face: Пост CSS-Tricks, який розповідає про те, як
@font-face
працює з різними техніками та прикладами роботи. - Яка справа з оголошенням властивостей шрифту на @ font-face?: Пост CSS-Tricks, який пов’язаний з тим, наскільки збігаються значення у властивостях шрифту можуть визначати, чи користувальницький шрифт завантажується та використовується браузером.