2013-09-25 14 views
37

Nella mia applicazione ASP.NET MVC, sto utilizzando Bundles per comprimere i file css e js. Il problema è che i caratteri non vengono caricati dopo aver attivato la modalità di ottimizzazione.I file dei font non vengono caricati con i bundle ASP.NET

BundleTable.EnableOptimizations = true; 

Ecco il codice 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")); 
} 

Ed ecco il css per i font.

@font-face { 
     font-family: ProximaNova; 
     src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype'); 
     font-weight: bold; 
     font-style: normal; 
    } 

Ecco come si fa riferimento ai CSS nella pagina.

<link href="/BundleStyles/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/> 

Tuttavia, quando ho controllato con Chrome strumento Debugger, i file di font non sono di caricamento per la pagina e la mia pagina sembra male con i caratteri sbagliati.

Cosa sto sbagliando?

+0

Il problema solo con fontFaces.css o altri file css non sta caricando anche –

+0

solo con font-face. la pagina sembra così com'è, ma non i caratteri. altri file CSS sono stati compressi con successo. senza abilitare la modalità di ottimizzazione, vengono caricati anche i font. – Zafar

+0

Sospetto che stia succedendo qualcosa mentre comprimo fontFaces.css, se c'è stato un problema nella sintassi css, si sarebbe verificato un errore mentre il browser cercava di recuperare. in questo momento puoi spostare solo la parte di codice @ font-face e vedere se le cose funzionano abilitando l'ottimizzazione. –

risposta

33

Bene, penso che il problema sia con la posizione del carattere. Presumo che la posizione virtuale css in bundle /BundleStyles/css in realtà non esiste. e se la struttura delle cartelle, come di seguito

Contenuti> Font

Contenuti> stile

Se questo è vero, allora provate questo

cambiamento /BundleStyles/css al /Content/css

<link href="/Content/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/> 

e fare riferimento ENCE il tipo di carattere come questo

src: url('Fonts/ProximaNova/ProximaNova-Bold.otf') 

in questo caso il tipo di carattere verrà caricato relativo al file "css" che si trova all'interno della cartella del contenuto che contiene anche i "caratteri" cartella

Se quello che ho assunto non è corretto per favore mostraci come hai strutturato i tuoi file

+3

Quando si esegue la distribuzione su IIS, probabilmente questo utile è, http://codingstill.com/2013/01/set-mime-types-for-web-fonts-in-iis/ – SimonGates

+1

Ho riscontrato un problema con la risposta: non funzionerà in modalità debug perché i font saranno referenziati sotto la cartella degli stili, quindi ecco come ho risolto: Ho una cartella Content/css e una cartella Content/fonts. Ho impostato il percorso virtuale del bundle su "~/Content/css/styles", in questo modo non ho dovuto rimuovere "../" dal riferimento del font perché la cartella dei font rimarrà un livello sopra il file "styles" . Detto questo, continua a funzionare correttamente in modalità di debug perché la profondità dei percorsi rimane la stessa. – Boanerge

+4

ho avuto lo stesso problema per accedere a font font fantastici, per ** altre soluzioni ** prova questi link che si occupano di 'StyleBundle' ** virtualpath **: [Link 1] (http://www.mvccentral.net/story/dettagli/articoli/kahanu/stylebundle-403-error-risolto), [Link 2] (http://forums.asp.net/t/1774324.aspx?MVC4+css+bundling+and+image+references), [Link 3] (http://ericpanorel.net/2013/10/25/font-awesome-4-0-mvc-bundling-and-minification/), [Link 4] (http://jameschambers.com/ 2014/08/add-some-font-awesome-to-mvc-and-bootstrap /), spero che questo aiuti qualcuno. – stom

7

Ottima risposta sopra.

Un'alternativa - se per qualche motivo non ha funzionato per voi - sarebbe cambiare il modo in cui la proprietà src di @ font-face fa riferimento alla cartella "Fonts". '../' -ing non funziona molto bene per il raggruppamento in modo da fare riferimento direttamente dalla cartella principale del sito. Assumung cartella 'font' è uno giù dalla radice, cambiare questo:

@font-face { 
    src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype'); 
} 

A tal:

@font-face { 
    src: url('/Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype'); 
} 

potrete recuperare gli stessi risultati quando il sito è gestito in modalità debug troppo.

+1

Non funziona se l'applicazione è distribuita come applicazione virtuale – Laserson

+0

Ha funzionato per me; Grazie! – contactmatt

1

Oggi sono andato online per questo perché mi sto imbattendo in questo problema.Ecco cosa ha funzionato per me:

  1. Il/bundle/non era in realtà un problema (ho provato questa prima)
  2. ho cambiato apici per le virgolette doppie & i caratteri hanno lavorato - ma nessuna idea perché, quindi, se qualcuno sa per favore sentiti libero di elaborare.