Как я могу использовать только латинское подмножество с файлами Google Fonts WOFF2?

Я хотел добавить шрифт с Google Fonts, и я заметил странное поведение.

Я хочу добавить шрифт только с латинским подмножеством, я не хочу, чтобы латинский-ext, кириллический или кириллический-ext подмножество, чтобы облегчить код. Я понимаю, что поведение по умолчанию, поэтому я сделал вот так:

<link rel="stylesheet" href="#" onclick="location.href='http://fonts.googleapis.com/css?family=Philosopher'; return false;">

В Firefox (и других браузерах, которые не поддерживают WOFF2), я получаю правильный вывод:

@font-face {
    font-family: 'Philosopher';
    font-style: normal;
    font-weight: 400;
    src: local('Philosopher'), url(http://fonts.gstatic.com/s/philosopher/v7/OttjxgcoEsufOGSINYBGLbrIa-7acMAeDBVuclsi6Gc.woff) format('woff');
}

Но в Chrome я получаю следующее:

/* cyrillic */
@font-face {
    font-family: 'Philosopher';
    font-style: normal;
    font-weight: 400;
    src: local('Philosopher'), url(http://fonts.gstatic.com/s/philosopher/v7/OttjxgcoEsufOGSINYBGLV4sYYdJg5dU2qzJEVSuta0.woff2) format('woff2');
    unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin */
@font-face {
    font-family: 'Philosopher';
    font-style: normal;
    font-weight: 400;
    src: local('Philosopher'), url(http://fonts.gstatic.com/s/philosopher/v7/OttjxgcoEsufOGSINYBGLZQV2lvL5Ba9FjAYK6Lx0Qk.woff2) format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}

Я думал, возможно, латинское подмножество больше не является поведением по умолчанию, поэтому я добавил в свой <link> параметр subset GET:

<link rel="stylesheet" href="#" onclick="location.href='http://fonts.googleapis.com/css?family=Philosopher&subset=latin'; return false;">

Но это не изменило выход. Когда я перехожу с &subset=cyrillic, он изменяется в Firefox, но выход Chrome тот же.

Есть ли способ вывода только латинского подмножества?

Или просто, что диапазон WOFF2 и unicode не будет загружен, если на странице нет необходимости? И в этом последнем случае выигрыш от удаления кириллического вызова - всего 8 строк кода в файле css, что означает ~ 300 байт, и это просто ничего не стоит?

Ответ 1

Хитрость заключается в этой оптимизации:

unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;

При этом браузер знает, нужно ли загружать шрифт, в зависимости от символов, которые он только что загрузил в html. Chrome в настоящий момент является единственным, у которого полная поддержка этого.

MDN перечисляет Firefox 36+ как полностью игнорирующий эту спецификацию, поэтому Google Fonts должен служить ему минимальной спецификацией шрифта. То же самое происходит с Safari.

В любом случае, это было интересное 30-минутное путешествие в Интернете, которое, я надеюсь, поможет другим путешественникам в Интернете. Это должно придать весу тому, почему вы можете использовать Google Fonts в качестве CDN для размещения шрифтов для оптимальной производительности, а не для обслуживания его самостоятельно.