ASP.NET MVCアプリケーションでは、バンドルを使用してcssファイルとjsファイルを圧縮しています。問題は-最適化モードを有効にした後、フォントが読み込まれないことです。
BundleTable.EnableOptimizations = true;
これがC#コードです
public static void RegisterBundles(BundleCollection bundles) {
RegisterStyles(bundles);
BundleTable.EnableOptimizations = true;
}
private static void RegisterStyles(BundleCollection bundles) {
bundles.Add(new StyleBundle("~/BundleStyles/css").Include(
"~/Content/Styles/bootstrap/bootstrap.css",
"~/Content/Styles/reset.css",
"~/Content/Styles/gridpack/gridpack.css",
"~/Content/Styles/fontFaces.css",
"~/Content/Styles/icons.css",
"~/Content/Styles/inputs.css",
"~/Content/Styles/common.css",
"~/Content/Styles/header.css",
"~/Content/Styles/footer.css",
"~/Content/Styles/cslider/slider-animations.css",
"~/Content/Styles/cslider/slider-base.css"));
}
そして、これがフォントのcssです。
@font-face {
font-family: ProximaNova;
src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype');
font-weight: bold;
font-style: normal;
}
ページでCSSが参照されている方法を次に示します。
<link href="/BundleStyles/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/>
ただし、Chromeデバッガツールでチェックすると、フォントファイルがページにロードされず、ページが間違ったフォントで見た目が悪くなります。
何が間違っていますか?
さて、問題はフォントの場所にあると思います。バンドルされたcss仮想ロケーション/BundleStyles/css
は実際には存在しません。そして、あなたのフォルダ構造が以下のような場合
コンテンツ>フォント
コンテンツ>スタイル
これが当てはまる場合は、これを試してください
変化する /BundleStyles/css
から/Content/css
<link href="/Content/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/>
このようにフォントを参照します
src: url('Fonts/ProximaNova/ProximaNova-Bold.otf')
この場合、フォントは、「fonts」フォルダーも含むコンテンツフォルダー内にある「css」ファイルに関連してロードされます。
私が仮定したことが間違っている場合、ファイルをどのように構造化したかを教えてください
私はCssRewriteUrlTransformが行く方法かもしれないと思う:
次のように使用します:
.Include("~/Content/bootstrap-cosmo.min.css", new CssRewriteUrlTransform())
私のために働いた。
上記の素晴らしい答え。
代替手段-何らかの理由で上記が機能しない場合-@ font-face srcプロパティが 'Fonts'フォルダーを参照する方法を変更することです。 '../'-ingはバンドリングではうまく機能しないため、代わりにサイトのルートフォルダーから直接参照します。 'Fonts'フォルダがルートから1つ下にあると仮定して、これを変更します。
@font-face {
src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype');
}
これに:
@font-face {
src: url('/Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype');
}
サイトがデバッグモードでも実行されている場合、同じ結果を取得します。
私はこの問題に直面しているので、これを今日オンラインで探しました。ここに私のために働いたものがあります: