Webfont(字体真棒)不能正常工作离线



当我的应用程序离线时,我一直在获得webfonts (font awesome to specific)正确显示。

所以我在清单中有我的字体

fonts/fontawesome-webfont.ttf?v4.1.0

当应用程序首次在线加载时,ttf文件加载并存储在appache中并正确显示。

然而,一旦你断开网络,应用程序就会离线运行,除了基于字体的图标(它们显示为方框,就像字体没有加载一样)之外,所有工作都很好

我已经看了chrome的appcache (chrome://appcache-internals)和文件在那里

Explicit,   https://mysite.com/fonts/fontawesome-webfont.ttf?v4.1.0 141 kB

我可以访问文件,头看起来是正确的

HTTP/1.1 200 OK
Content-Type: font/ttf
Last-Modified: Fri, 23 May 2014 07:40:31 GMT
Accept-Ranges: bytes
ETag: "cbe2e465a76cf1:0"
Server: Microsoft-IIS/8.5
X-Powered-By: ASP.NET
Date: Thu, 05 Jun 2014 08:05:57 GMT
Content-Length: 141564

chrome中有一些可疑的东西

Application Cache Error event: Manifest fetch failed (6) https://mysite.com/appcache.manifest 

但我认为这仅仅是因为应用程序离线,无法获得更新的清单

第二个是

Resource interpreted as Font but transferred with MIME type text/html: "https://mysite.com/fonts/fontawesome-webfont.ttf?v=4.1.0"

这是我能看到的唯一可能的原因。

任何见解将是惊人的,提前感谢!

为了让这个功能在我的项目中工作,我必须向appache添加以下内容:

CACHE:
#path to fa css
public/styles/fonts/FontAwesome.otf
public/styles/fonts/fontawesome-webfont.eot
public/styles/fonts/fontawesome-webfont.svg
public/styles/fonts/fontawesome-webfont.ttf
public/styles/fonts/fontawesome-webfont.woff
NETWORK:
*
FALLBACK:
/public/styles/fonts/fontawesome-webfont.woff public/styles/fonts/fontawesome-webfont.woff
/public/styles/fonts/fontawesome-webfont.eot public/styles/fonts/fontawesome-webfont.eot
/public/styles/fonts/fontawesome-webfont.svg public/styles/fonts/fontawesome-webfont.svg
/public/styles/fonts/fontawesome-webfont.ttf public/styles/fonts/fontawesome-webfont.ttf
/public/styles/fonts/FontAwesome.otf public/styles/fonts/FontAwesome.otf

网络仍在请求图标,即使它们已被缓存。为图标添加回退捕获请求并提供缓存版本。

作为一种绕过离线缓存的方法,您可以在加载字体awesome css库后直接添加自定义样式。

<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
     
<style>
/*Temporary Fix for Font Awesome ApplicatonManifest offline Cache */
@font-face {
     font-family: 'FontAwesome';
     src: url('../fonts/fontawesome-webfont.eot');
     src: url('../fonts/fontawesome-webfont.eot') format('embedded-opentype'),       url('../fonts/fontawesome-webfont.woff2') format('woff2'), url('../fonts/fontawesome-webfont.woff') format('woff'), url('../fonts/fontawesome-webfont.ttf') format('truetype'), url('../fonts/fontawesome-webfont.svg') format('svg');
       font-weight: normal;
       font-style: normal;
}
</style>

我经历过这种情况,但在oconn的回答中显示了正确的appcache配置-我只能通过删除css文件中文件名后的版本来实现此工作:

@font-face {
  font-family: 'FontAwesome';
  src: url('../fonts/fontawesome-webfont.eot?v=4.6.3'); ...

在五个左右的地方添加到url中,将其更改为-

@font-face {
  font-family: 'FontAwesome';
  src: url('../fonts/fontawesome-webfont.eot'); ...

这个问题现在在Phonegap项目的font-awesome常见问题解答的故障排除部分(虽然我没有使用Phonegap) -这个问题在github issue 3632中被引用。

最新更新