基于@Zopieux 流程图,当字体下载被禁用时,我能够使该脚本适用于 IE6-9,在我的情况下,这是针对像其他公司 Intranet 一样禁用此设置的客户端。
CSS:
@font-face {
font-family: 'TestFont';
src: url('/includes/font.php?type=eot');
src: url('/includes/font.php?type=eot#iefix') format('embedded-opentype'),
url('/includes/font.php?type=woff') format('woff'),
url('/includes/font.php?type=ttf') format('truetype'),
url('/includes/font.php?type=svg#UniversLTStd49LtUltraCn') format('svg');
font-weight: normal;
font-style: normal;
}
PHP,当请求 font-face src url 时,它会拉取这个脚本,它会检查类型、设置 cookie 并提供选择的 webfont。如果启用了字体下载并且您没有重新路由到字体文件,IE 将抛出一个@font-face 错误:
<?php
$type = $_REQUEST['type'];
$location = "Location: /includes/fonts/universltstd-lightultracn-webfont.".$type;
// create a cookie
setrawcookie("FontDownloaded", 1, time()+3600*24, '/');
header($location);
?>
JS,然后在客户端,执行类似的操作来检查 cookie,并执行 cufon-yui.js 或 typeface.js 之类的替代方案:
$(function() {
$('body').append('<span id="TestFont"/>');
$('#TestFont').html('Testing').css({
fontFamily: 'TestFont',
opacity: 0
});
// find cookie
bool = Boolean(getCookie('FontDownloaded')); // use your own cookie method
if (!bool) {
// implement @font-face fallback
Cufon.replace('.items', { fontFamily: 'NewFont' });
}
$('#TestFont').remove();
});