2013-01-08 12 views
21

css @ font-faceについて質問があります。私はこのウェブサイト(http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax)から次のコードを使用しています。CSSフォントの顔 "?#iefix"

@font-face { 
font-family: 'MyFontFamily'; 
src: url('myfont-webfont.eot?#iefix') format('embedded-opentype'), 
    url('myfont-webfont.woff') format('woff'), 
    url('myfont-webfont.ttf') format('truetype'), 
    url('myfont-webfont.svg#svgFontName') format('svg'); 
} 

はなぜライン "url('myfont-webfont.eot?#iefix')は" 終わり "#iefix" がありますか?

答えて

50

IE8以降では、フォントの宣言が解釈されるためです。 url('myfont-webfont.eot')の標準では、これらのバージョンのIEでは404サーバーエラーが発生します。 ?#iefixを追加すると、サーバーの問題が修正されます。 (これは、IEの条件付きスタイルシートがあります同じ理由です。)

(ストレートソースから)Fontspringによると:

のInternet Explorer < 9 src属性のためのパーサのバグを持っています。 srcに複数のフォント形式を含めると、IEはそのフォントをロードできず、404エラーを報告します。その理由は、IEがファイルとして、開始括弧と最後の閉じ括弧の間のすべてをロードしようとしているからです。その誤った動作に対処するには、EOTを最初に宣言して単一の疑問符を追加するだけです。疑問符はIEの文字列の残りの部分を考えることにクエリ文字列とEOTファイルだけを読み込みます。他のブラウザは仕様に従い、srcカスケードとフォーマットヒントに基づいて必要なフォーマットを選択します。

したがって、必要な部分は?です。私は#iefixが、ブラウザによって解釈されないプログラマのための単なる意味の線であると想像しています。

あなたが望むなら、ここにいくつかの情報があります:https://github.com/stubbornella/csslint/wiki/Bulletproof-font-face

+1

ありがとうございました。これはいくつかのものをクリアするのに役立ちました。 – 12japerk

+2

'?iefix'を'? 'の後に使用すると、クエリー文字列を終了し、[URLフラグメント](http://en.wikipedia.org/wiki/Fragment_identifier)を開始します。私はそれが意図されているかどうかはわかりませんが、残りの 'url'が[browser/server querystring limitation]にぶつかる問題を避けることができます(http://stackoverflow.com/questions/812925/what-is-クエリ文字列の最大可能文字列)を指定します。 – patridge

+1

興味深い。アップボート! – aendrew

関連する問題