3

这是我以随机顺序尝试的东西的列表:

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 进行 gzip 压缩,用 .php 替换 .otf 扩展名也不起作用。

4

1 回答 1

4

使用.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 中,Web 字体受到相同的域限制(字体文件必须与使用它们的页面位于同一域中),除非使用 HTTP 访问控制来放松此限制。

Header set Access-Control-Allow-Origin *
于 2010-01-11T13:54:25.123 回答