special

This webpage has been robot translated, sorry for typos if any. To view the original content of the page, simply replace the translation subdomain with www in the address bar or use this link.

Gzip-сжатие шрифтов EOT, TTF, WOFF и WOFF2 и других

Gzip-сжатие шрифтов EOT, TTF, WOFF и WOFF2 и других

Компьютерный шрифт — это файл, содержащий в себе описание набора буквенных, цифровых, служебных и псевдографических символов, используемый для отображения этих символов (в частности текста) программой или операционной системой.

При разработке интернет-проектов используются подключаемые шрифты. Однако после тестирования скорости загрузки одного из сайтов инструментом PageSpeed Insights выдалось сообщение о том, что к файлу с шрифтами *.WOFF2 не применяется Gzip-сжатие, хотя оно давно включено и настроено.

Как сжимать подключаеммые шрифты с помощью Gzip мы расскажем дальше в нашей статье.

На сегодняшний день в интернете используются четыре формата контейнеров шрифтов: EOT, TTF, WOFF и WOFF2. Но к большому сожалению, как обычно это бывает, несмотря на возможность выбора, не существует единого формата, который работал бы во всех браузерах:

  • EOT доступен только в Internet Explorer.
  • TTF поддерживается в этом браузере только частично.
  • WOFF распространен шире остальных, однако его нельзя использовать в некоторых старых браузерах.
  • Над поддержкой WOFF 2.0 работают в настоящее время.

Существует ещё один формат контейнера шрифтов — SVG. Но он никогда не поддерживался в Internet Explorer и Firefox. И сейчас перестает использоваться в браузере Chrome.

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

Продолжим о сжатии. Так как у меня в качестве фронтэнда на сервере работает Nginx, а бэкэнда Apache, то мне достаточно было включить Gzip только в Nginx. Включается он очень просто. Нужно в конфигурационном файле добавить строчку:

gzip on;

Теперь перечислим фарматы файлов которые нам нужно будет сжимать через Gzip:

gzip_types
application/atom+xml
application/javascript
text/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
font/ttf
application/x-font-ttf
application/vnd.ms-fontobject
application/font-woff
application/font-woff2
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vnd.wap.wml
text/vtt
text/x-component
text/x-cross-domain-policy;

В Ubuntu Server этот файл лежит здесь: /etc/nginx/nginx.conf

Чтобы изменения вступили в силу, перезапустите Nginx: nginx -s reload

О более подробных настройках Gzip-сжатия в Nginx можете ознакомиться на официальном сайте Nginx.

В этом же файле обязательно проверьте значения параметра gzip_types. Прежде всего именно там чаще всего бывает не указано application/font-woff2, а потому этот файл шрифтов и не обрабатывался Gzip-сжатием. Заодно проверьте и наличие остальных форматов шрифтов:

application/x-font-ttf
application/vnd.ms-fontobject
application/font-woff
application/font-woff2

Это еще не все. Теперь откройте /etc/nginx/mime.types и проверьте перечислены ли эти типы в данном файле. Ниже я просто приведу содержание всего этого файла:

types {
#
# Data interchange
#
application/atom+xml atom;
application/json json map topojson;
application/ld+json jsonld;
application/rss+xml rss;
application/vnd.geo+json geojson;
application/xml rdf xml;
#
# JavaScript
#
application/javascript js;
#
# Manifest files
#
application/manifest+json webmanifest;
application/x-web-app-manifest+json webapp;
text/cache-manifest appcache;
#
# Media files
#
audio/midi mid midi kar;
audio/mp4 aac f4a f4b m4a;
audio/mpeg mp3;
audio/ogg oga ogg opus;
audio/x-realaudio ra;
audio/x-wav wav;
image/bmp bmp;
image/gif gif;
image/jpeg jpeg jpg;
image/png png;
image/svg+xml svg svgz;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/webp webp;
image/x-jng jng;
video/3gpp 3gp 3gpp;
video/mp4 f4p f4v m4v mp4;
video/mpeg mpeg mpg;
video/ogg ogv;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-mng mng;
video/x-ms-asf asf asx;
video/x-ms-wmv wmv;
video/x-msvideo avi;
image/x-icon cur ico;
#
# Microsoft Office
#
application/msword doc;
application/vnd.ms-excel xls;
application/vnd.ms-powerpoint ppt;
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
#
# Web fonts
#
application/font-woff woff;
application/font-woff2 woff2;
application/vnd.ms-fontobject eot;
application/x-font-ttf ttc ttf;
font/ttf ttf;
font/opentype otf;
#
# Other
#
application/java-archive ear jar war;
application/mac-binhex40 hqx;
application/octet-stream bin deb dll dmg exe img iso msi msm msp safariextz;
application/pdf pdf;
application/postscript ai eps ps;
application/rtf rtf;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/vnd.wap.wmlc wmlc;
application/x-7z-compressed 7z;
application/x-bb-appworld bbaw;
application/x-bittorrent torrent;
application/x-chrome-extension crx;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-opera-extension oex;
application/x-perl pl pm;
application/x-pilot pdb prc;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert crt der pem;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xslt+xml xsl;
application/zip zip;
text/css css;
text/html htm html shtml;
text/mathml mml;
text/plain txt;
text/vcard vcard vcf;
text/vnd.rim.location.xloc xloc;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/vtt vtt;
text/x-component htc;
}

После этого перезапустите Nginx: nginx -s reload.

Via matovsky.com & wiki


Created/Updated: 25.05.2018

';>