С тех пор, как проблемы, вызванные использованием Cufon, я отважился использовать внешние ресурсы шрифтов, но в последнее время я искал альтернативные методы загрузки шрифтов, чтобы увидеть, есть ли лучший способ; лучшие методы имеют способ просто появиться из-под контроля.
Есть много новых методов, и варианты для каждого метода кажутся; Должен ли я использовать тикет? или google webfonts (с js или css)? следует ли продолжать использовать локальные загрузочные шрифты (например, метод fontsquirrel.com)?
Я перечислю методы, которые кажутся наиболее хорошо воспринятыми ниже, с некоторыми тестами, но действительно ли стоит переходить к webfont? Похоже, что он будет обладать более высокой нагрузкой на ресурсы (http-запросы) и иметь меньше типов файлов (меньше совместимости) и т.д. Но похоже, что файлы загружаются async и эффективно в большинстве случаев.
- Это только вопрос ситуации и необходимости? Если да, то каковы они?
- Существуют ли существенные различия между этими методами?
- Есть ли лучший способ, который я не перечислял?
- Что такое pro/con для производительности? Посмотрите? зависимости? Совместимость?
Я действительно ищу лучшие практики здесь, производительность - большая вещь, но это масштабируемость и простота использования. Не говоря уже о том, как выглядеть и чувствовать.
Google CSS
- используется только внешняя таблица стилей
- использует только наименее совместимый тип файла
- может использовать
@import
или<link>
или взять содержимое стилей (@font-face
) и поместить его прямо в свою таблицу стилей.
результаты тестов
78ms load of html 36ms load of css
Метод Google JS
- использует
webfont.js
для загрузки styleshet - использует только наименее совместимый тип файла
- добавляет элемент
:root
с классом - добавляет script в голову.
результаты тестов
171ms load of html 176ms load of js 32ms load of css
Метод Typekit
- добавляет элемент
:root
с классом. - может использовать
*.js
фрагмент или файл с внешней загрузкой*.js
- использует
data:font/opentype
вместо файла шрифта. - добавляет script в голову
- добавляет встроенный css в голову
-
добавляет внешнюю таблицу стилей в голову
вы можете легко добавлять/удалять/настраивать шрифты и целевые селектора с помощью typekit.com
результаты тестов
169ms load of html 213ms load of js 31ms load of css 3ms load of data:font/
& hellip; & Font Squirrel Method
@font-face{
font-weight:400;
font-style:normal;
font-family:open_sanslight;
src:url(../font/opensans-light-webfont.eot);
src:url(../font/opensans-light-webfont.eot?#iefix) format(embedded-opentype),
url(../font/opensans-light-webfont.woff) format(woff),
url(../font/opensans-light-webfont.ttf) format(truetype),
url(../font/opensans-light-webfont.svg#open_sanslight) format(svg)
}
& hellip; или с данными: метод font & hellip;
@font-face {
font-family: 'open_sanslight';
src: url('opensans-light-webfont-f.eot');
}
@font-face {
font-family: 'open_sanslight';
src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAF4sABMAAAAArXQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAcZLn0KkqwK44Jq866WBSpzpsNY2IyGAhoJFBbYjuxmyns5sNa4NwldcJ7eh3Uy5gQkURIlqWzONe3HcLsDX1x/+jifDXvbzgTBjopZElndil3hJkERJkmRJkVRJk3TJkEzJkmzOc4HLXOEOF7nEX/*thisisnotafullencodingjustanexample*/bZwUnK4yS3JlTx2Sr4USKEUSbHVX9fcGNBs4fqgw+GoNHU7lKr36Eqn0lCWt6pHFpWaUlc6lS6loSxRlirLlP/uuU01dVfT7L6gPxyqraluCpgj3WtqeC1V4VBDW2N4K1r1esw/IupKp9L1FwlqnuIAAAB42j3NvQ7BUBjG8R5tTz/0u2UjNTTESYQbMGmXLiISbeI6zBYjbuWtye7CeMJxtuf3LP8ne1+IXbWa7G3TMXZru4qLZkJRW1O2wzi3I+Li2Gik5yXpYkNGXj70YU98YQLGHxwwXxIWwO8SNmAdJBzAXku4gFNI9AF38QMjTwZ9vN6yJzq9OoEB6I8VQzDYK0ZguFKMwWiumIDxTDEFk6liBqaF4gDMFFvKxAfOxFUGAAABUxSL9gAA) format('woff'),
url('opensans-light-webfont-f.ttf') format('truetype'),
url('opensans-light-webfont-f.svg#open_sanslight') format('svg');
font-weight: normal;
font-style: normal;
}