下载的字体解码失败

202
这是我在Chrome中遇到的错误,不幸的是搜索它并没有给我太多结果。字体本身显示正常。然而,我仍然收到这个错误/警告。更具体地说,这是完整的警告:
“无法解码下载的字体: http://localhost:8000/app/fonts/Lato/
我的CSS如下:
@font-face {
    font-family:"Lato";
    src: url("../fonts/Lato/");
}

html, body {
    font-family:'Lato';
}

我就是不明白。字体应用得没问题,但警告一直在那里。试图使用“无衬线字体”会使字体恢复为正常的浏览器字体,所以可能是这个原因,但我不确定,即使搜索了也没有找到答案。谢谢!
编辑
有各种字体文件,都来自同一个字体家族。我正在尝试加载它们。字体文件是.ttf格式的。我从本地文件夹加载它们,有各种字体文件,比如Lato-Black.ttf,Lato-Bold.ttf,Lato-Italic.ttf等等。

2
为什么URL末尾要加斜杠?你是想加载目录中的所有文件还是实际上是重定向到单个字体文件? - Álvaro González
@ÁlvaroG.Vicario 您好,谢谢您的时间。我编辑了问题以使其更清晰。 - Luís Ferreira
我遇到了一个与 .FON 文件相关的相同问题。 - RixTheTyrunt
23个回答

3
在我的情况下,这是由于.htaccess中错误的文件路径引起的。 请检查您的文件路径是否正确。

2

AWS Amplify出现了特定的无法解码下载字体问题,但是在应用设置/重写和重定向中将woff2添加到默认的目标地址/index.html规则可以解决任何woff2错误。

修改前:

</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>

之后

</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|woff2|ttf|map|json)$)([^.]+$)/>

1

我也遇到了同样的问题,但是我通过在所有.ttf文件的响应头中添加'Content-Type' : 'application/x-font-ttf'来解决了问题。


1
如何做到这一点? - Baim Wrong

1
在我的情况下,当下载模板时,字体文件只是空文件。可能是下载过程中出现问题。Chrome 给出了这个通用错误。我最初认为将 woff 更改为 font-woff 的解决方案可以解决问题,但这只是让 Chrome 忽略了字体。我的解决方案是逐个查找字体并下载/替换它们。

1
在我的情况下 - 使用React和Gatsby - 问题是通过仔细检查所有路径得到解决的。我正在使用React / Gatsby与Sass,并且Gatsby源文件正在寻找字体的位置与编译文件不同。一旦我将文件复制到每个路径中,这个问题就消失了。

1
对我来说,错误在于在上传字体文件之前没有将FTP设置为二进制模式。 编辑 您可以通过上传其他类型的二进制数据(如图像)进行测试。如果它们也无法显示,则可能是您的问题。

还有其他术语吗?我似乎在我的两个FTP客户端中都找不到该选项。 - OrderAndChaos
我只知道*nix命令行浏览器中的BIN和ASCII术语。我会假设许多现代FTP客户端都知道哪些文件是二进制的,哪些不是,所以也许这不是你的问题。如果您想测试您的FTP客户端是否以二进制模式发送,请使用FTP移动二进制数据,例如.jpg文件,然后尝试查看它。如果以ASCII模式发送,则不会显示。(请参见http://www.jscape.com/blog/ftp-binary-and-ascii-transfer-types-and-the-case-of-corrupt-files) - Robert Gowland
啊,我明白了,感谢你的解释。我上传的所有图片都没问题,最终我在FileZilla中找到了二进制模式,但是它并没有帮助我。我在PHP Storm中找不到二进制选项,但是正如我所说,图片都没问题,所以我猜这不是我遇到的问题。 - OrderAndChaos

1
在我的情况下,这是由于创建了一个包含字体文件添加的SVN补丁文件所致。如下:
  1. 从本地文件系统添加字体文件到子版本化的主干
  2. 主干按预期工作
  3. 创建主干更改的SVN补丁程序,以包括字体文件的添加
  4. 将补丁应用到另一个分支
  5. 字体文件被添加到子版本化的分支中(可以提交),但损坏,导致OP中的错误。
解决方案是直接从我的本地文件系统上传字体文件到分支。我认为这是因为SVN补丁文件必须将所有内容转换为ASCII格式,并不一定保留字体文件的二进制格式。但这只是一个猜测。

0
如果你正在使用express,你需要添加类似以下的代码来允许静态内容的服务: var server = express(); server.use(express.static('./public')); // 这里的public是应用的根目录,其中包含字体文件,可以在任何层级下,例如 public/fonts 或 public/dist/fonts... // 如果你正在使用connect,请搜索类似的配置。

0
如果它在服务器上(而不是本地主机),那么尝试手动上传字体,因为有时 FTP 客户端(例如 FileZilla)会损坏文件并导致问题。对于我来说,我使用 Cpanel 接口手动上传的。

0

谷歌也出问题了...

昨天,谷歌的某些问题导致了相同的问题,但只在Win7和一些Win10电脑上出现。

https://github.com/google/material-design-icons/issues/1220

无论如何,它在不到24小时内得到了迅速解决。

我建议始终备份我们依赖CDN的东西,比如这些字体。


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