2013-09-25 3 views
37

В моем приложении ASP.NET MVC я использую Bundles для сжатия css и js-файлов. Проблема в том, что после включения режима оптимизации шрифты не загружаются.Файлы шрифтов не загружаются в пакеты ASP.NET

BundleTable.EnableOptimizations = true; 

Здесь С код

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 Debugger инструмент, файлы шрифтов не загружаются на страницу, и моя страница выглядит плохо с неверными шрифтами.

Что я делаю неправильно?

+0

Вопрос только с fontFaces.css или любыми другими файлами css также не загружается –

+0

только с шрифтом. страница выглядит так, как есть, но не шрифты. другие css-файлы успешно сжимаются. без включения режима оптимизации шрифты также загружаются. – Zafar

+0

Я подозреваю, что что-то происходит при сжатии fontFaces.css, если возникла проблема в синтаксисе css, это по крайней мере дало бы ошибку, пока браузер попытался получить. прямо сейчас вы можете перемещать только часть шрифта в виде шрифта и видеть, работают ли что-то, что позволяет оптимизировать. –

ответ

33

Ну, я думаю, проблема связана с вашим расположением шрифтов. Я предполагаю, что связанное виртуальное местоположение css /BundleStyles/css фактически не существует. и если ваша структура папок, как показано ниже

Материалы> Шрифт

Содержимое> стиль

Если это так, то попробуйте этот

изменения /BundleStyles/css к /Content/css

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

и обратитесь к ENCE шрифт как этот

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

в этом случае ваш шрифт будет загружен по отношению к файлу «CSS», которая расположена в папке содержимого, который содержит также «шрифты» папку

Если то, что я предположил, неверно, пожалуйста, покажите нам, как вы структурировали свои файлы.

+3

При развертывании в IIS вы, вероятно, найдете это полезным, http://codingstill.com/2013/01/set-mime-types-for-web-fonts-in-iis/ – SimonGates

+1

У меня возникла проблема с вашим ответом: он не будет работать в режиме отладки, потому что шрифты будут указаны ниже папки стиля, так вот как я его решил: У меня есть папка Content/css и папка Content/fonts. Я установил виртуальный путь пакета в «~/Content/css/styles», таким образом мне не пришлось удалять «../» из ссылки на шрифт, потому что папка шрифтов останется на один уровень выше файла «styles» , Это говорит о том, что он отлично работает в режиме отладки, потому что глубина путей остается неизменной. – Boanerge

+4

У меня была такая же проблема, чтобы получить доступ к шрифтам удивительные шрифты, для ** других решений ** попробуйте эти ссылки, которые касаются виртуального пути 'StyleBundle' **: [Ссылка 1] (http://www.mvccentral.net/story/details/articles/kahanu/stylebundle-403-error-resolved), [Ссылка 2] (http://forums.asp.net/t/1774324.aspx?MVC4+css+bundling+and+image+references), [Ссылка 3] (http://ericpanorel.net/2013/10/25/font-awesome-4-0-mvc-bundling-and-minification/), [Ссылка 4] (http://jameschambers.com/ 2014/08/add-some-font-awesome-to-mvc-and-bootstrap /), надеюсь, что это кому-то поможет. – stom

7

Отличный ответ выше.

Альтернатива - если по какой-то причине вышеизложенное не сработало для вас - было бы изменение того, как свойство src @ font-face ссылается на папку «Fonts». '../' -ing не работает очень хорошо для привязки этой ссылки непосредственно из корневой папки сайта. Assumung папка «Шрифты» это один вниз от корня, изменить:

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

к этому:

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

Вы будете получать те же результаты, когда сайт побежал в режиме отладки тоже.

+1

Он не работает, если ваше приложение развернуто как виртуальное приложение. – Laserson

+0

Работало для меня; благодаря! – contactmatt

1

Я пошел искать онлайн сегодня, потому что я сталкиваюсь с этой проблемой.Вот что работает для меня:

  1. /пучок/был на самом деле не проблема (я попробовал это первый)
  2. Я изменил одиночные кавычки в двойные кавычки & шрифты работали - но не знаю, почему, так что если кто-то знает, пожалуйста, не стесняйтесь уточнять.
Смежные вопросы