CSS定义的字体未找到。

27

可能是重复问题:
@font-face在客户端网站上不起作用?

我在ASP.Net MVC web应用程序中有以下字体文件夹结构:

-[根目录]

|-- Public

||--fonts

|||--NuvoWeb-Medi.eot

|||--NuvoWeb-Medi.woff

在我的CSS文件中,我有以下的字体声明:

@font-face 
{
    font-family: NuvoWeb;
    src: url(/Public/fonts/NuvoWeb-Medi.eot);
}
@font-face 
{
    font-family: NuvoWeb;
    src: url(/Public/fonts/NuvoWeb-Medi.woff) format('woff');
}

然而,当我运行这个应用程序时,Firebug会返回以下错误:

"NetworkError: 404 Not Found - http://localhost:60194/Public/fonts/NuvoWeb-Medi.woff"

请指导我需要做哪些改变才能让它正常工作。


1
你尝试访问过这个URL吗?也许没有文件? - Grzegorz Łuszczek
就像我说的那样,我有这些文件在指定的文件夹结构中;当我在Windows资源管理器中打开文件夹时,它们肯定在那里。如果我点击链接,我会得到这个响应:HTTP错误404.3 - 未找到。由于扩展配置,无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载该文件,请添加MIME映射。 - Shawn de Wet
所以文件在文件夹中,但服务器没有提供服务?这是服务器的问题,而不是CSS,我说得对吗? - Grzegorz Łuszczek
请查看此链接:https://dev59.com/LE3Sa4cB1Zd3GeqPu2v1 - Jack
你可以查看关于字体无法正确渲染的线程。http://stackoverflow.com/questions/32692151/fonts-are-not-rendered-correctly-in-release-mode-but-is-working-on-debug-mode-i?answertab=votes#tab-top - decodingpanda
3个回答

68

在这里找到了解决方案...

问题是IIS不知道如何提供这些新文件,除非我们告诉它如何。可以在web.config的<system.webServer>部分中轻松完成此操作,方法是添加以下代码片段:

<staticContent>
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
    <mimeMap fileExtension=".m4v" mimeType="video/m4v" />
    <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
    <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
    <mimeMap fileExtension=".webm" mimeType="video/webm" />
    <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
    <mimeMap fileExtension=".spx" mimeType="audio/ogg" />
    <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
    <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" />
    <remove fileExtension=".eot" />
    <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
    <mimeMap fileExtension=".otf" mimeType="font/otf" />
    <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
</staticContent>

请注意,其中一些扩展名可能已经在IIS中处理过了(例如对我来说,.svg就没问题)。您需要从此部分中删除这些映射,或者像.eot一样包含其他<remove>行。


1
由于某种原因,将这些内容添加到托管在Rackspace Cloud中的站点的web.config中会破坏所有CSS,就好像CSS文件不再被识别一样。有任何线索为什么会发生这种情况吗? - Eric K
这真是让人兴奋的一天。因为某种原因,我尝试为OTF文件添加FileHandler规则。 - Johnny_D
2
感谢您的有用帮助! - A.Dara

7

web.config中注册MIME类型,如下所示:

<system.webServer>
    <staticContent>
      <remove fileExtension=".eot" />
      <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
    </staticContent>
</system.webServer>

这解决了问题。

如果你能听到我,请告诉我如何通过FTP更新web.config。我对IIS服务器很陌生。或者请告诉我:“我能做到吗?还是需要向我的Web托管支持提出请求?” - user3270303

2

公共文件夹(这里是css)---> 字体文件夹(这里是字体 -NuvoWeb-Medi.eot)

@font-face 
{
    font-family: 'NuvoWeb';
    src: url(fonts/NuvoWeb-Medi.eot);
}

您错过了引号,字体应为'NuvoWeb'。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接