Dans mon application ASP.NET MVC, j'utilise Bundles pour compresser les fichiers css et js. Le problème est que les polices ne se chargent pas après l’activation du mode d’optimisation.
BundleTable.EnableOptimizations = true;
Voici le code 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"));
}
Et voici le css pour les polices.
@font-face {
font-family: ProximaNova;
src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype');
font-weight: bold;
font-style: normal;
}
Voici comment CSS est référencé dans la page.
<link href="/BundleStyles/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/>
Cependant, lorsque j'ai vérifié avec l'outil Chrome Debugger, les fichiers de police ne se chargent pas dans la page et ma page a l'air mal avec de mauvaises polices.
Qu'est-ce que je fais mal?
Eh bien, je pense que le problème réside dans l'emplacement de votre police. Je suppose que l'emplacement virtuel css intégré /BundleStyles/css
n'existe pas réellement. et si la structure de vos dossiers est comme ci-dessous
Contenu> Police
Contenu> style
Si cela est vrai, alors essayez ceci
remplacez /BundleStyles/css
par /Content/css
<link href="/Content/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/>
et référencez votre police comme ça
src: url('Fonts/ProximaNova/ProximaNova-Bold.otf')
dans ce cas, votre police sera chargée par rapport au fichier "css" qui se trouve dans le dossier de contenu qui contient également le dossier "polices"
Si ce que j'ai supposé est incorrect, veuillez nous montrer comment vous avez structuré vos fichiers.
Je pense que CssRewriteUrlTransform pourrait être le chemin à parcourir:
https://msdn.Microsoft.com/en-us/library/system.web.optimization.cssrewrittrtransform(v=vs.110).aspx
Utilisé comme tel:
.Include("~/Content/bootstrap-cosmo.min.css", new CssRewriteUrlTransform())
Travaillé pour moi.
Grande réponse ci-dessus.
Une alternative - si pour une raison quelconque, l’opération ci-dessus ne fonctionnait pas pour vous - serait de changer la manière dont la propriété @ font-face src fait référence au dossier 'Fonts'. '../' - ing ne fonctionne pas très bien pour un regroupement; faites donc directement référence à partir du dossier racine du site. En supposant que le dossier 'Fonts' se situe à la racine, changez ceci:
@font-face {
src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype');
}
Pour ça:
@font-face {
src: url('/Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype');
}
Vous obtiendrez les mêmes résultats lorsque le site sera également exécuté en mode débogage.
Je suis allé chercher cela en ligne aujourd'hui parce que je suis confronté à ce problème. Voici ce qui a fonctionné pour moi: