フォローアップのために、@ font-faceジェネレーターの詳細オプションを使用してフォントをサブセット化したので、必要な文字のみをロードしました。
オプションの1つは、フォントをBase64エンコードすることでした(これにより、CSSファイルにフォントを埋め込むことができました)。メモリが機能する場合、Base64は.woff
および.ttf
フォントをエンコードします。
私はできる限り多くのブラウザーのできるだけ多くのユーザーをサポートしたいが、余分な、おそらく冗長なデータを使用して最新のブラウザーのユーザーを遅くする価値はないと判断したので、Modernizr(yep / nope.jsを使用)を使用して強化された防弾フォントの文法CSS
に従って、すべてのフォント形式への参照を含む個別のファイルを非同期にロードします。
.woff
フォントをBase64でエンコードし、残りのフォント宣言をプライマリCSS
ファイルに含めるか、Base64でエンコード.woff
したものだけをプライマリCSS
に含めてから、をCSS
介して非同期にロードしたファイルに他の形式を含めますModernizr.load
。
見た目よりも読み込み時間を優先したいので、FOUCは大きな懸念事項ではありませんでしたが、ほとんどのブラウザーは、(Base64でエンコードされたフォントCSS
が読み込まれた後)非同期で読み込まれたときに、フォントに「リンク」されていることに注意します。
プラスの面では、フォントがロードされてキャッシュに保存されると(サーバーに設定された長い有効期限ヘッダー)、「点滅」がなくなり、フォントの拡張セットをロードして、他の言語を話すユーザーが(そして含まれているGoogle翻訳ウィジェット)には、スタイル化されたテキストが表示されます。
これは自分のサイトだったので、実験はできましたが、主に「誇示」するためにやっていました。クライアントサイトのほうが保守的です。
私が実装したもう1つの手法は.svg
、@ font-faceジェネレーターが生成するように個別のファイルにフォントを置くのではなく、すべてのフォントを1つのファイルに入れ、それぞれを独自のIDで識別することでした。