Как использовать шрифт gziped с помощью .htaccess?(без модификатора gzip или deflate)
Вопрос
Вот список вещей, которые я попробовал в случайном порядке:
AddHandler application/x-httpd-php .otf
AddType
default_mimetype
auto_prepend_file = "otf.php"
zlib.output_compression = On
output_handler = ob_gzhandler
header("Content-type: application/octet-stream");
Несмотря на то, что все PHP-файлы сервера загружаются с использованием zlib, замена расширения .otf на .php также не сработала.
Решение
С .htaccess вы могли бы поступить следующим образом, предполагая, что файл шрифта fontfile.otf.gz
, браузер запрашивает это как fontfile.otf
RewriteEngine On
#Check for browser's Accept-Encoding, remove it for force return gzipped one
RewriteCond "%{HTTP:Accept-Encoding}" "gzip.*deflate|deflate.*gzip"
#check file name is endswith otf
RewriteCond %{REQUEST_FILENAME} "\.(otf)$"
#check existance of .gz file name
RewriteCond %{REQUEST_FILENAME}.gz -s
#rewrite it to .otf.gz
RewriteRule ^.*$ %{REQUEST_URI}.gz [L]
#update some response header
<FilesMatch "\.otf\.gz$">
AddEncoding gzip .gz
ForceType "text/plain"
</FilesMatch>
И если файл шрифта и веб-сайт являются междоменными, вам нужно поместить Access-Control-Allow-Origin
, firefox не загрузится междоменные объекты шрифтов.
В Gecko на веб-шрифты распространяются те же доменные ограничения (файлы шрифтов должны находиться в том же домене, что и страница, на которой они используются ), если только для снятия этого ограничения не используются элементы управления доступом HTTP .
Header set Access-Control-Allow-Origin *