字体文件不与ASP.NET Bundle一起加载

在我的ASP.NET MVC应用程序中,我使用Bundles来压缩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"/> 

但是,当我用Chromedebugging器工具检查,字体文件不加载到页面,我的网页看起来不好,错误的字体。

我究竟做错了什么?

那么,我认为问题是你的字体位置。 我假设捆绑的CSS虚拟位置/BundleStyles/css实际上不存在。 如果你的文件夹结构如下

内容>字体

内容>风格

如果这是真的,那么试试这个

/BundleStyles/css更改为/Content/css

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

并像这样引用你的字体

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

在这种情况下,您的字体将相对于位于内容文件夹中的“css”文件加载,该文件夹中还包含“fonts”文件夹

如果我认为是不正确的,请告诉我们你是如何构build你的文件

我认为CssRewriteUrlTransform可能是要走的路:

https://msdn.microsoft.com/en-us/library/system.web.optimization.cssrewriteurltransform(v=vs.110).aspx

像这样使用:

 .Include("~/Content/bootstrap-cosmo.min.css", new CssRewriteUrlTransform()) 

为我工作。

上面的好回答。

另一种方法 – 如果由于某种原因,上述不适合你 – 将改变@ font-face src属性引用“字体”文件夹的方式。 '../'-ing不能很好地捆绑,直接从站点根文件夹中引用。 假设'Fonts'文件夹是从根目录下的一个,改变这个:

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

对此:

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

当站点在debugging模式下运行时,您将检索相同的结果。

我今天在网上找了这个,因为我遇到了这个问题。 以下是对我有用的东西:

  1. / bundle /实际上并不是一个问题(我先试了一下)
  2. 我把单引号改成了双引号,字体工作 – 但不知道为什么,所以如果有人知道,请随时详细说明。