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.
Font Face: Привет, HTML, соответствует ли какой-либо из следующих символов тому, что находится на странице?
HTML: Да, многие из них.
Font-Face: Отлично, вот файл шрифта, который вы должны загрузить, чтобы отображать эти символы.
Важное семантическое различие, которое мы должны здесь отметить, заключается в том, что оно unicode-range
определяет, для каких символов можно использовать шрифт, а не для каких символов шрифт доступен. Другими словами, если мы объявляем unicode-range
on @font-face
и символы, которые загружены в HTML-документ, соответствуют этому диапазону, тогда шрифт будет загружен и будет использован.
Вы можете себе представить преимущества производительности, которые открывает это свойство. Например, мы можем загрузить собственный шрифт только в том случае, если он содержит определенные символы, а не всегда загружать шрифт во всех ситуациях.
Есть даже способ объединить два @font-face
набора в одном font-face
объявлении свойства, благодаря удобному трюку, который поделился Джейк Арчибальд. Идея состоит в том, что один @font-face
набор переопределяет другой, основываясь на сопоставлении unicode-range
, оптимизации производительности или просто улучшении типографики на странице.
Значения
Допустимым unicode-range
значением является любой код или диапазон символов Юникода . Вы заметите, что точкам Unicode предшествует 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
, что означает, что можно использовать до пяти знаков вопроса, несмотря на то, что юникоды могут принимать до шести символов.
@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, где есть более подробная информация. Число означает, что браузер поддерживает эту функцию в этой версии и выше.
Рабочий стол
Хром | Fire Fox | IE | Край | Сафари |
---|---|---|---|---|
36 | 44 | 11 | 17 | 10 |
Мобильный / планшет
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | 81 год | 10,0-10,2 |
Дальнейшее чтение
- Спецификация CSS Fonts Module Level 3
- Таблица Unicode: ресурс для ссылки на наборы символов и коды Unicode.
- Использование @ font-face: публикация CSS-Tricks, в которой рассказывается, как
@font-face
работают разные техники и рабочие примеры. - Как обстоят дела с объявлением свойств шрифта в @ font-face ?: сообщение CSS-Tricks, связанное с тем, как сопоставленные значения в свойствах шрифта могут использоваться для определения того, загружается ли пользовательский шрифт и используется ли браузером.