Популярный пост
Подключение шрифтов из папки.
CSS свойство font-face.
Есть разные способы подключения нестандартных шрифтов к сайту: скриптом, с помощью сервиса Google fonts или из
локальной папки сайта. Для реализации последнего из способов используют CSS-правило @font-face
.
Одинаковые шрифты подключаются с одним именем, различающуюся жирность и стиль пишут в font-weight и font-style.
Для современных (с 2017 года) браузеров нужен единственный формат: woff2.
@font-face { font-family: "OpenSans"; src: url("fonts/opensans.woff2") format("woff2"); font-weight: normal; font-style: normal; font-display: swap; } @font-face { font-family: "OpenSans"; src: url("fonts/opensansbold.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }
Если нужна поддержка браузеров с ~2011 года выпуска, то им потребуются форматы woff2 и woff. Вначале указывается путь к файлу woff2, затем к woff. Таким образом, если браузер умеет работать с более современным форматом шрифтов, то он применит его. Если нет, то возьмет формат woff.
@font-face { font-family: "OpenSans"; src: url("fonts/opensans.woff2") format("woff2"), url("fonts/opensans.woff") format("woff"); font-weight: normal; font-style: normal; font-display: swap; } @font-face { font-family: "OpenSans"; src: url("fonts/opensansbold.woff2") format("woff2"), url("fonts/opensansbold.woff") format("woff"); font-weight: 700; font-style: normal; font-display: swap; }
Форматы ttf, eot, svg нужны только очень древним браузерам. Сейчас нет нужды их использовать.
Теперь этот шрифт можно применять к нужным блокам. Для разной жирности или начертания браузер будет подтягивать нужные файлы для правильного отображения.
div { font-family: OpenSans, Arial, sans-serif; font-weight: bold; }
Обязательно указывайте запасной веб-безопасный шрифт и семейство.
font-weight - соответствие слов и чисел
100 - Thin (Hairline)
200 - Extra Light (Ultra Light)
300 - Light
400 - Normal (Regular)
500 - Medium
600 - Semi Bold (Demi Bold)
700 - Bold
800 - Extra Bold (Ultra Bold)
900 - Black (Heavy)
Свойство unicode-range
CSS свойство unicode-range задает определенный диапазон символов для шрифта, определенного в @font-face и доступного для использования на странице. Если на странице нет символов из указанного диапазона, то шрифт не загружается. Если же есть хоть один символ, то загрузится весь шрифт.
Т.е. если у вас есть несколько файлов шрифта с заданными диапазонами, то загрузятся только те файлы, которые нужны для отображения набора символов на странице.
Обратите внимание, что unicode-range не разбивает сам шрифтовой файл, он только показывает нужно ли загружать этот файл, есть ли соответствующие ему символы.
Зачем может понадобиться это свойство? Например, для мультиязычных сайтов. Чтобы не грузить пользователю шрифт, в котором есть символы для всех нужных языков, можно сделать шрифтовые файлы под каждый.
Для подключения кириллицы:
@font-face { font-display: swap; font-family: "Lato"; src: url("/fonts/lato-light/lato-light.cyrillic.woff2") format("woff2"), url("/fonts/lato-light/lato-light.cyrillic.woff") format("woff"); font-weight: 300; font-style: normal; unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; // только кириллица }
Как это работает? Браузер анализирует ваш DOM и понимает, какие символы используются на сайте и, если есть совпадение, то шрифт закачивается. В данном примере, если на сайте есть кириллица, то lato-light.cyrillic.woff2 будет загружен и применится, а шрифт lato-light.latin.woff2 даже не закачается.
Или другой пример: вот таким способом можно применить другой шрифт только к цифровым символам:
@font-face { font-family: Georgia; src: url("fonts/fontin_sans_regular.eot"); src: url("fonts/fontin_sans_regular.eot?#iefix") format("embedded-opentype"), url("fonts/fontin_sans_regular.woff2") format("woff2"), url("fonts/fontin_sans_regular.woff") format("woff"), url("fonts/fontin_sans_regular.ttf") format("truetype"), url("fonts/fontin_sans_regular.svg#drevodel_regular") format("svg"); font-weight: normal; font-style: normal; } @font-face { font-family: "drevodel_regular"; src: url("fonts/drevodel_regular.eot"); src: url("fonts/drevodel_regular.eot?#iefix") format("embedded-opentype"), url("fonts/drevodel_regular.woff2") format("woff2"), url("fonts/drevodel_regular.woff") format("woff"), url("fonts/drevodel_regular.ttf") format("truetype"), url("fonts/drevodel_regular.svg#drevodel_regular") format("svg"); font-weight: normal; font-style: normal; unicode-range: U+30-39; }
Примечание: unicode-range не работает со шрифтами подключенными через Google Fonts, необходимо локальное подключение.
Список диапазонов
- 0020 — 007F
- Basic Latin
- 2580 — 259F
- Block Elements
- 00A0 — 00FF
- Latin-1 Supplement
- 25A0 — 25FF
- Geometric Shapes
- 0100 — 017F
- Latin Extended-A
- 2600 — 26FF
- Miscellaneous Symbols
- 0180 — 024F
- Latin Extended-B
- 2700 — 27BF
- Dingbats
- 0250 — 02AF
- IPA Extensions
- 27C0 — 27EF
- Miscellaneous Mathematical Symbols-A
- 02B0 — 02FF
- Spacing Modifier Letters
- 27F0 — 27FF
- Supplemental Arrows-A
- 0300 — 036F
- Combining Diacritical Marks
- 2800 — 28FF
- Braille Patterns
- 0370 — 03FF
- Greek and Coptic
- 2900 — 297F
- Supplemental Arrows-B
- 0400 — 04FF
- Cyrillic
- 2980 — 29FF
- Miscellaneous Mathematical Symbols-B
- 0500 — 052F
- Cyrillic Supplementary
- 2A00 — 2AFF
- Supplemental Mathematical Operators
- 0530 — 058F
- Armenian
- 2B00 — 2BFF
- Miscellaneous Symbols and Arrows
- 0590 — 05FF
- Hebrew
- 2E80 — 2EFF
- CJK Radicals Supplement
- 0600 — 06FF
- Arabic
- 2F00 — 2FDF
- Kangxi Radicals
- 0700 — 074F
- Syriac
- 2FF0 — 2FFF
- Ideographic Description Characters
- 0780 — 07BF
- Thaana
- 3000 — 303F
- CJK Symbols and Punctuation
- 0900 — 097F
- Devanagari
- 3040 — 309F
- Hiragana
- 0980 — 09FF
- Bengali
- 30A0 — 30FF
- Katakana
- 0A00 — 0A7F
- Gurmukhi
- 3100 — 312F
- Bopomofo
- 0A80 — 0AFF
- Gujarati
- 3130 — 318F
- Hangul Compatibility Jamo
- 0B00 — 0B7F
- Oriya
- 3190 — 319F
- Kanbun
- 0B80 — 0BFF
- Tamil
- 31A0 — 31BF
- Bopomofo Extended
- 0C00 — 0C7F
- Telugu
- 31F0 — 31FF
- Katakana Phonetic Extensions
- 0C80 — 0CFF
- Kannada
- 3200 — 32FF
- Enclosed CJK Letters and Months
- 0D00 — 0D7F
- Malayalam
- 3300 — 33FF
- CJK Compatibility
- 0D80 — 0DFF
- Sinhala
- 3400 — 4DBF
- CJK Unified Ideographs Extension A
- 0E00 — 0E7F
- Thai
- 4DC0 — 4DFF
- Yijing Hexagram Symbols
- 0E80 — 0EFF
- Lao
- 4E00 — 9FFF
- CJK Unified Ideographs
- 0F00 — 0FFF
- Tibetan
- A000 — A48F
- Yi Syllables
- 1000 — 109F
- Myanmar
- A490 — A4CF
- Yi Radicals
- 10A0 — 10FF
- Georgian
- AC00 — D7AF
- Hangul Syllables
- 1100 — 11FF
- Hangul Jamo
- D800 — DB7F
- High Surrogates
- 1200 — 137F
- Ethiopic
- DB80 — DBFF
- High Private Use Surrogates
- 13A0 — 13FF
- Cherokee
- DC00 — DFFF
- Low Surrogates
- 1400 — 167F
- Unified Canadian Aboriginal Syllabics
- E000 — F8FF
- Private Use Area
- 1680 — 169F
- Ogham
- F900 — FAFF
- CJK Compatibility Ideographs
- 16A0 — 16FF
- Runic
- FB00 — FB4F
- Alphabetic Presentation Forms
- 1700 — 171F
- Tagalog
- FB50 — FDFF
- Arabic Presentation Forms-A
- 1720 — 173F
- Hanunoo
- FE00 — FE0F
- Variation Selectors
- 1740 — 175F
- Buhid
- FE20 — FE2F
- Combining Half Marks
- 1760 — 177F
- Tagbanwa
- FE30 — FE4F
- CJK Compatibility Forms
- 1780 — 17FF
- Khmer
- FE50 — FE6F
- Small Form Variants
- 1800 — 18AF
- Mongolian
- FE70 — FEFF
- Arabic Presentation Forms-B
- 1900 — 194F
- Limbu
- FF00 — FFEF
- Halfwidth and Fullwidth Forms
- 1950 — 197F
- Tai Le
- FFF0 — FFFF
- Specials
- 19E0 — 19FF
- Khmer Symbols
- 10000 — 1007F
- Linear B Syllabary
- 1D00 — 1D7F
- Phonetic Extensions
- 10080 — 100FF
- Linear B Ideograms
- 1E00 — 1EFF
- Latin Extended Additional
- 10100 — 1013F
- Aegean Numbers
- 1F00 — 1FFF
- Greek Extended
- 10300 — 1032F
- Old Italic
- 2000 — 206F
- General Punctuation
- 10330 — 1034F
- Gothic
- 2070 — 209F
- Superscripts and Subscripts
- 10380 — 1039F
- Ugaritic
- 20A0 — 20CF
- Currency Symbols
- 10400 — 1044F
- Deseret
- 20D0 — 20FF
- Combining Diacritical Marks for Symbols
- 10450 — 1047F
- Shavian
- 2100 — 214F
- Letterlike Symbols
- 10480 — 104AF
- Osmanya
- 2150 — 218F
- Number Forms
- 10800 — 1083F
- Cypriot Syllabary
- 2190 — 21FF
- Arrows
- 1D000 — 1D0FF
- Byzantine Musical Symbols
- 2200 — 22FF
- Mathematical Operators
- 1D100 — 1D1FF
- Musical Symbols
- 2300 — 23FF
- Miscellaneous Technical
- 1D300 — 1D35F
- Tai Xuan Jing Symbols
- 2400 — 243F
- Control Pictures
- 1D400 — 1D7FF
- Mathematical Alphanumeric Symbols
- 2440 — 245F
- Optical Character Recognition
- 20000 — 2A6DF
- CJK Unified Ideographs Extension B
- 2460 — 24FF
- Enclosed Alphanumerics
- 2F800 — 2FA1F
- CJK Compatibility Ideographs Supplement
- 2500 — 257F
- Box Drawing
- E0000 — E007F
- Tags