字体在IIS 8.0中不起作用


118

我从Font Squirrel生成的程序中有一个字体,但我无法使它在IIS中工作,它在localhost中工作。我在我的MIME类型中添加了application / font-woff 文章,但它仍然不起作用。

Context
--Fonts
----font location
--css files

的CSS

@font-face {
    font-family: 'wallStreetFont';
    src: url('Fonts/subway-webfont.eot');
    src: url('Fonts/subway-webfont.eot?#iefix') format('embedded-opentype'),
         url('Fonts/subway-webfont.woff2') format('woff2'),
         url('Fonts/subway-webfont.woff') format('woff'),
         url('Fonts/subway-webfont.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}

编辑当前MIME

我正在使用默认的IIS 8 MIME 字体/ x-woff


你怎么打电话?您是否尝试过Font Squirrel zip中的示例输出?
Aibrean 2014年

如果您使用的是IIS 8,则无需在Web配置中为WOFF添加mime类型。实际上,如果重复,则很可能会出错。
科林·培根

@Aibrean是,示例输出有效
joetinger

@ColinBacon我张贴后看到了。因此,我目前拥有font / x-woff,这是从IIS 8.0继承的。但是仍然无法获得正确的字体
joetinger 2014年

Answers:


259

很高兴看到WOFF2被包含在Font Squirrel字体中!虽然IIS 8不需要添加mime类型,WOFF但它需要一个WOFF2。W3C 建议

application/font-woff2

有关更多信息,WOFF2请参见此处

要在IIS中添加mime类型,请Web.Config进行如下修改:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- ... -->
  <system.webServer>
    <!-- ... -->
    <staticContent>
      <!-- ... -->
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
    </staticContent>
    <!-- ... -->
  </system.webServer>

2
我添加了woff2但还是一无所有
joetinger 2014年

4
如果您使用自己的开发工具。尝试获取字体文件时是否收到404?因此,请检查路径是否正确,并且您有权在浏览器中浏览到该路径。
科林·培根

是的,它确实, http://192.168.72.196:85/bundles/Fonts/subway-webfont.woff2我不确定他们从哪里获取bundles文件夹。任何想法?
joetinger 2014年

4
我假设您正在使用ASP.NET捆绑和缩小。如果您在捆绑包配置中进行设置BundleTable.EnableOptimizations = true。您的本地主机应与生产服务器上的行为相同。
Colin Bacon 2014年

1
感谢您提供的所有帮助。这是woff2和和404错误的组合,最终导致我的包中拼写错误。谢谢!
乔廷格

79

为了使woff和woff2字体在IIS中正常工作,您应该将以下MIME类型添加到Web.Config文件中。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>  
  <system.webServer>    
    <staticContent>
        <remove fileExtension=".woff" />
        <remove fileExtension=".woff2" />
        <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
        <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
    </staticContent>

如果您仍然在Google Chrome浏览器上遇到404错误,则应在重新加载页面之前清除浏览器缓存。


2
规范现在建议woff的mimeType为application / font-woff
史蒂文

2
我只有一个.woff2 404问题,这对我有用。我只用关于woff2线
Francisc0

26

请注意,还可以在IIS管理器中配置MIME类型。只需选择网站,然后双击主窗格中IIS下的MIME类型图标。

在此处输入图片说明

然后,您应该看到所有现有MIME类型的列表,并能够使用右窗格中的Add ...链接添加新的MIME类型。


2
为什么不使用web.config ?!
Mojtaba Pourmirzaei

7
@MojtabaPourmirzaei因为不是每个人都是系统管理员。这就是IIS具有UI的全部原因。
Alph.Dev'17年

如果要在IIS中部署非.NET网站,则需要以这种方式(例如,Angular应用程序)进行操作。
乔恩·克鲁格

0

今天,在部署Web解决方案Metro4 UI图标并将CDN切换为“编译”选项时遇到了这个问题。

我的项目是使用WebSharper平台开发的,但是该解决方案始终独立于这些实现细节。

长话短说,我已经发现,我不得不添加的文件扩展名,例如,对于.ttf,里面的security部分下system.webServerWeb.config

<security>
    <requestFiltering>
        <fileExtensions>
            <add fileExtension=".ttf" allowed="true" />
        </fileExtensions>
    </requestFiltering>
</security>

在IIS的GUI设置下也可以使用相同的配置选项

IIS GUI

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.