оптимизация WOFF2 из google CDN путем ограничения глифов, все еще думаю, что файл шрифта слишком велик

Я использую шрифты Google и проверяю, насколько большим будет мой файл WOFF2 на самом деле.

Поэтому для проверки я загрузил шрифт через их API http://fonts.googleapis.com/css?family=PT+Sans+Narrow&text=hello, а затем просмотрел результат.

@font-face {
  font-family: 'PT Sans Narrow';
  font-style: normal;
  font-weight: 400;
  src: local('PT Sans Narrow'), local('PTSans-Narrow'), url(http://fonts.gstatic.com/l/font?kit=UyYrYy3ltEffJV9QueSi4VubgSqbO8GPta82DSsWGmo) format('woff2');
}

Затем я физически загрузил файл http://fonts.gstatic.com/s/ptsansnarrow/v7/UyYrYy3ltEffJV9QueSi4UU-p1xzoRgkupcXIqgYFBc.woff2

Я был потрясен, увидев, что он, по-видимому, более 2 КБ.

Как это может быть? это просто глифы для "привет".

Для сравнения, я загрузил весь шрифт (все глифы, используя ту же технику), что дало мне файл 37 КБ.

Я просто наивно думаю, что пользовательские шрифты должны иметь небольшой размер файла? Или есть способ сжать это больше? С такой скоростью я почти думаю, что загрузка SVG лучше...


person tim    schedule 15.05.2015    source источник
comment
Это довольно мало, но когда я преобразовал этот шрифт и удалил весь лишний мусор, глифы для Hello заняли 812 байт.   -  person Robert McKee    schedule 15.05.2015
comment
конечно, большая часть этого мусора требует данных OpenType, без которых шрифт не пройдет проверку, прежде чем он будет считаться реальным файлом шрифта.   -  person Mike 'Pomax' Kamermans    schedule 15.05.2015
comment
@Mike'Pomax'Kamermans Не уверен, что вы считаете настоящим файлом шрифта. Я считаю его тем, который отображает текст тем шрифтом, который мне нужен. Что он делает просто отлично. Я просто удалил неиспользуемые глифы и элементы кернинга, которые не нужны для Hello.   -  person Robert McKee    schedule 15.05.2015
comment
Не уверен, что следую. Шрифты OpenType имеют авторитетную спецификацию, поэтому этот шрифт не является шрифтом opentype, если он не соответствует этой спецификации. а в веб-настройках он также должен будет пройти проверку OTS, поскольку это то, что Chrome и Firefox используют, чтобы убедиться, что загружаемые вами данные действительно являются шрифтом. Вы можете удалить из них довольно много данных (см. Мой ответ), но в зависимости от того, что вы удаляете, вы можете превратить это в уже не настоящий шрифт, а просто кучу байтов на диске. Сжатие TTX и WOFF2 поможет, но на размер файла еще есть пол.   -  person Mike 'Pomax' Kamermans    schedule 15.05.2015
comment
Извините, я не имел в виду, что вынул все необходимое для рендеринга. Я просто удалил неиспользуемые глифы и всю информацию о кернинге (поскольку к «Hello» не применялись правила кернинга). Я также не эксперт по шрифтам, поэтому мне пришлось преобразовать .woff2 в ttf, затем в svg, затем я отредактировал его, а затем снова преобразовал в woff2.   -  person Robert McKee    schedule 15.05.2015


Ответы (1)


Что ты имеешь в виду под "это просто глифы для приветствия"? Потому что это не:

введите здесь описание изображения

Если только вы не хотите углубиться в как на самом деле работает OpenType и как преобразовать его в крохотную деталь , 2 КБ имеет смысл для чего-то, что кодирует пять векторных изображений, а также все метаданные, необходимые для механизмов opentype, чтобы принять внутреннюю организацию шрифта на всех платформах.

person Mike 'Pomax' Kamermans    schedule 15.05.2015
comment
@Robert McKee Bytesniping, лол. Мне нравится выражение... Меня смущает ваш комментарий выше, где вы предполагаете, что kerning stuff не обязательно отображать hello. ИМХО, целью пользовательского шрифта является определение кернинга, чтобы отображать слова так, как задумал дизайнер шрифта, для удобочитаемости и эстетических целей. Простое отображение 5 глифов рядом с другим не делает шрифт. - person tim; 16.05.2015
comment
По сравнению с SVG я все еще не понимаю, почему 5-буквенное слово в пользовательском шрифте должно занимать 2 КБ данных, спецификации или нет. - person tim; 16.05.2015
comment
@tim Я никогда ничего не говорил о том, что кернинг не нужен? Если вы комментируете Роберту, лучше сделать это как ответ там, где он это сделал. Что касается того, почему вам нужно 2 КБ, обратите внимание на то, что это не ссылка (о чем нам говорят цифры), она показывает вам все накладные расходы, которые шрифт использует только для семи букв (около 1300 байт, из где глифов меньше 300), и это использует разновидность opentype CFF (которая обычно меньше, чем версия truetype) почти без текста для таких вещей, как имена шрифтов и глифов. С теми, которые указаны как обычные, он легко увеличился бы до 2500 или более байтов. - person Mike 'Pomax' Kamermans; 16.05.2015