【问题标题】:Local Fonts Breaking with Chrome & FireFox Update本地字体因 Chrome 和 FireFox 更新而中断
【发布时间】:2014-10-22 02:25:16
【问题描述】:

早上好!

我和我的团队昨天大部分时间都在试图弄清楚为什么当我昨天早上启动服务器时,我正在处理的网站上的所有字体都显示 Times New Roman。该站点是使用 Eclipse Workspace 用 JSF 编写的,所以我们起初认为这是 Workspace 的问题,因为该站点对我的一位同事正确显示。

在花费数小时重建和调试工作区后,我们得出结论,要么是代码,要么是浏览器。我花了大约一个小时查看代码,但找不到任何会导致我们出现问题的问题,所以我们得出结论是浏览器。就在那时,我的一位同事建议网站正常显示的人更新到最新版本的 Chrome - 这导致字体损坏。

最新版本是:38.0.2125.104。

嵌入字体的代码如下所示(JSF 资源标签只是从库中呈现一个 HREF):

@font-face { font-family: 'aleoreregular';

src: url(#{resource['lib:library/ui/fonts/aleo/aleo_regular_macroman/Aleo-Regular-webfont.eot']});
src: url(#{resource['lib:library/ui/fonts/aleo/aleo_regular_macroman/Aleo-Regular-webfont.woff']}) format('woff'),
     url(#{resource['lib:library/ui/fonts/aleo/aleo_regular_macroman/Aleo-Regular-webfont.ttf']}) format('truetype'),
     url(#{resource['lib:library/ui/fonts/aleo/aleo_regular_macroman/Aleo-Regular-webfont.svg']}) format('svg');
font-weight: normal;
font-style: normal;

}

或者,在没有 JSF 的 CSS 中看起来像这样: @font-face {

font-family: 'sinkin_sans600_semibold';
src: url('../fonts/sinkin-sans/sinkinsans_600semibold_macroman/SinkinSans-600SemiBold-webfont.eot');
src: url('../fonts/sinkin-sans/sinkinsans_600semibold_macroman/SinkinSans-600SemiBold-webfont.eot?#iefix') format('embedded-opentype'),
     url('../fonts/sinkin-sans/sinkinsans_600semibold_macroman/SinkinSans-600SemiBold-webfont.woff') format('woff'),
     url('../fonts/sinkin-sans/sinkinsans_600semibold_macroman/SinkinSans-600SemiBold-webfont.ttf') format('truetype'),
     url('../fonts/sinkin-sans/sinkinsans_600semibold_macroman/SinkinSans-600SemiBold-webfont.svg#sinkin_sans600_semibold') format('svg');
font-weight: normal;
font-style: normal;

}

在 Firefox 的控制台上,我收到此错误: “可下载字体:FTTM:未对齐的表格(字体系列:....)”

任何建议将不胜感激。

【问题讨论】:

    标签: css google-chrome jsf fonts


    【解决方案1】:

    没有明确的答案,但有些事情可以尝试/检查......

    我发现新的 Chrome 版本和字体没有问题。

    您将获得时间字体(实际上是“衬线”),因为如果没有设置字体,那是浏览器的默认设置。

    我认为您的网络字体是从本地服务器而不是互联网加载的,因此您可以检查这些字体文件是否存在并且没有损坏。即使它们来自某个地方的网络,下一步也是一样的......

    在 Chrome 中,打开开发工具,您应该能够在“网络”面板中看到是否正在请求和提供字体文件。

    为了获得良好的通话效果,当您单击网络通话时,Chrome 会在“预览”选项卡中显示提供的字体。如果您在那里什么都看不到,请检查响应标头。您将需要 Content-Type 类似 font/woff2application/x-font-woff 或类似的东西。

    您还可以从网络面板查看文件是否从缓存中提供。问题可能不是 Chrome 版本更改本身,而是升级清除了缓存或资产自然成为缓存过期,现在正在尝试获取有问题的版本。

    您是否可以压缩字体文件,例如现在,您以前不在的地方(反之亦然)?

    【讨论】:

    • 调查网络面板会为请求的字体生成 200 OK 响应。预览版是 Times New Roman。这是请求标头:
    • GET /website/javax.faces.resource/project/ui/fonts/sinkin-sans/sinkinsans_300light_macroman/SinkinSans-300Light-webfont.woff.xhtml?ln=fdlic HTTP/1.1 主机:本地主机: 8080 Connection: keep-alive Pragma: no-cache Cache-Control: no-cache User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.27 Safari/537.36 Accept : / Referer:localhost:8080/website/javax.faces.resource/project/ui/css/… Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8 这里是响应头:
    • 内容类型:application/font-woff 日期:2014 年 10 月 21 日星期二 14:49:00 GMT ETag:W/"42745-1413897323059" 到期时间:2014 年 10 月 21 日星期二 14:49: 00 GMT Last-Modified:Tue, 21 Oct 2014 13:15:23 GMT Server:Apache-Coyote/1.1 Transfer-Encoding:chunked
    • 在我看来一切正常。猜猜我的下一步是在本地尝试字体文件(或者至少在 apache 下没有提供的地方)来确定是文件还是服务器应该受到指责。从网络面板,您可以在另一个选项卡中打开文件,它应该会下载。然后您可以检查下载的文件是否与您服务器上的文件相同。
    【解决方案2】:

    我们的一个人发现了!有一个服务器配置过滤器损坏了字体文件,他们能够修改 pom.xml 文件以使其再次正常工作。

    【讨论】:

      猜你喜欢
      • 2018-12-03
      • 2013-02-17
      • 2014-05-16
      • 2016-06-14
      • 1970-01-01
      • 2013-11-07
      • 2015-12-31
      • 2016-07-18
      • 2016-08-15
      相关资源
      最近更新 更多