Загружают ли браузеры ненужные файлы в операторах @ font-face? - PullRequest
3 голосов
/ 05 января 2012

Я хотел бы выбрать шрифты на веб-странице, используя логику в следующем виде: «если у вас есть этот системный шрифт A, используйте его, в противном случае загрузите и используйте шрифт B».

Я могу сделать это вCSS примерно так:

@font-face {
  font-family: B;
  src: url('B.ttf');
}

p {
  font-family: A, B;
}

Мой вопрос таков: если в системе установлен шрифт A (т. Е. Шрифт B фактически не требуется для рендеринга документа), загружается ли B.ttf или нет - и меняется ли онмежду браузерами?

1 Ответ

7 голосов
/ 05 января 2012

Файл B.ttf может запрашиваться , даже если в системе доступен шрифт A, а браузеру не требуется для возврата к шрифту B.

Перефразировано из спецификации модуля «Шрифты CSS3», §4.7 Рекомендации по загрузке шрифтов , с соответствующим фрагментом кода:

В случаях, когда шрифт может быть загружен в случаях резервирования символов, пользовательские агенты могут загружать шрифт, если он указан в списке шрифтов, но фактически не используется для данного текстового прогона.

@font-face {
  font-family: GeometricModern;
  src: url(font.ttf);
}

h2 {
  /* font may be downloaded for pages with h2 elements,
     even if Futura is available locally */
  font-family: Futura, GeometricModern, sans-serif;
}

Поскольку это не является обязательным требованием (то есть «может», а не «must "), поставщик выбирает, загружает ли их браузер веб-шрифт для резервного использования, даже если это не требуется.Насколько я знаю, Firefox загрузит B.ttf, и похоже, что Safari и Google Chrome не будут (я еще даже не тестировал в Opera и IE).

Итак, это выглядит такповедение в разных браузерах различно, но в таком сценарии нет ничего плохого или правильного.

...