字体文件不与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模式下运行时,您将检索相同的结果。
我今天在网上找了这个,因为我遇到了这个问题。 以下是对我有用的东西:
- / bundle /实际上并不是一个问题(我先试了一下)
- 我把单引号改成了双引号,字体工作 – 但不知道为什么,所以如果有人知道,请随时详细说明。