Wenn Sie Zugriff auf den Remote-Server haben, können Sie ein lokales Skript fügen Sie die richtigen Header zu setzen, wie header('Access-Control-Allow-Origin: *');
und dann dump die Font-Datei. Zum Beispiel in PHP, wie folgt aus:
(Datei fnt.php im selben Ordner der Schriften)
<?php
define('FONT_FOLDER','');
$MIMES=array(
'.eot'=>'application/vnd.ms-fontobject',
'.ttf'=>'font/ttf',
'.otf'=>'font/otf',
'.woff'=>'font/x-woff',
'.svg'=>'image/svg+xml',
);
$IKnowMime=MimeByExtension(GetExt($s));
$f=preg_replace('/[^a-zA-Z.0-9-_]/','',$_REQUEST['f']);
/*
header("Cache-Control: private, max-age=10800, pre-check=10800");
header("Pragma: private");
header("Expires: " . date(DATE_RFC822,strtotime(" 2 day")));
*/
header('Content-type: '.$IKnowMime);
header("Content-Transfer-Encoding: binary");
header('Content-Length: '.filesize(FONT_FOLDER.$f));
header('Content-Disposition: attachment; filename="'.$f.'";');
header('Access-Control-Allow-Origin: *');
readfile(FONT_FOLDER.$f);
function GetExt($File) {
$File=explode('.',$File);
if(count($File)==1) return '';
return '.'.$File[count($File)-1];
}
function MimeByExtension($ex) {
global $MIMES;
$ex=strtolower($ex);
if(isset($MIMES[$ex])) return $MIMES[$ex];
else return FALSE;
}
?>
Dann können Sie die Schriften wie folgt verwenden:
<style type="text/css">
@font-face {
font-family: 'default-font';
src: url('http://www.website.com/fonts/ultra/fnt.php?f=arial.eot');
src: url('http://www.website.com/fonts/ultra/fnt.php?f=arial.eot#iefix') format('embedded-opentype'),
url('http://www.website.com/fonts/ultra/fnt.php?f=arial.woff') format('woff'),
url('http://www.website.com/fonts/ultra/fnt.php?f=arial.ttf') format('truetype'),
url('http://www.website.com/fonts/ultra/fnt.php?f=arial.svg#arial') format('svg');
}
</style>
Angabe der PHP-Datei anstelle der Schriftartdatei und Übergeben der Schriftartdatei als Argument ?f=fontfile.woff
. Wenn Sie möchten, dass der Parameter FONT_FOLDER auf den richtigen Ordner zeigt. Der preg_replace, wenn aus Sicherheitsgründen der Zugriff außerhalb des Font-Ordners verhindert wird.
Sie können auch eine Form der Authentifizierung unterstützen, um sicherzustellen, dass nur Sie diese Schriftarten verwenden.
Sie können auch einige Access-Control-Allow-Origins außer '*' verwenden, um genau festzulegen, wer auf Ihre Schriftartdateien zugreifen darf.
Access-Control-Allow-Origin: http://www.fromthisserverican.com
wird der Zugriff vom Server www.fromthisserverican.com ermöglichen, was bedeutet, dass alle Seiten auf www.fromthisserverican.com können die Schriftarten verwenden, während Seiten auf anderen Servern möglicherweise nicht.
super. Danke! –
Befolgen Sie diese Anweisungen, wenn Sie dieselbe Lösung für nginx implementieren möchten: http://serverfault.com/questions/162429/how-do-i-add-access-control-allow-origin-in-nginx –
" Sie können @ font-face in Firefox nicht mit einer Schriftart verwenden, die auf einer anderen Domain gehostet wird ". Warum funktionieren Schriftarten, die von Google Fonts bedient werden, unter firefox? Bedeutet das, dass es eine andere Arbeit gibt, als den Server neu zu konfigurieren? – artfulrobot