android - @font-face 不适用于 Chrome for Android

标签 android css google-chrome webfonts

我正在尝试在移动网络应用程序中使用 @font-face,但它无法在 Android 版 Chrome 上运行。

致力于以下工作:

  • iOS 上的 Safari
  • 默认安卓浏览器
  • OSX 上的 Safari
  • Windows 上的 Chrome
  • Windows 上的火狐
  • Windows 上的 IE11

这是我使用的代码:

@font-face {
    font-family: 'liat';
    src: url('../fonts/liat_3.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}

我正在使用远程调试 ( https://developers.google.com/chrome-developer-tools/docs/remote-debugging ) 对此进行调试,但似乎没有任何错误。

这是我真的不明白的部分...

如果我转到开发人员工具中的“网络”选项卡 - Chrome 似乎没有尝试下载字体(即,没有网络调用来加载字体)

将其与我在台式机(Windows 和 OSX)上的 Chrome 中看到的进行比较 - 您可以看到字体已加载:

enter image description here

此外 - 如果我转到“资源”选项卡 - 它不显示任何字体。

将其与我在桌面版 Chrome 中看到的进行比较:

enter image description here

底线 - 在桌面版 Chrome 上(以及 iOS 上的移动版 Safari)- 加载并显示网络字体。但是,在 Android 版 Chrome 上 - 网络字体甚至没有加载,更不用说显示了。

非常感谢任何帮助或建议!

最佳答案

好的 - 所以我找到了答案。也许这对很多人来说并不奇怪......

长话短说 - 网络字体仅用于某些最初设置为 display: none 的 div。

看起来大多数其他浏览器会自动下载网络字体,即使显示它们的 div 没有显示。但是,Android 版 Chrome 似乎不会下载它们。

更糟糕的是 - 如果我稍后将这些 div 的显示更改为可见的内容(例如,dislay: block) - Chrome 仍然不会 下载它们 -它们根本不会显示。

换句话说 - 字体必须包含在最初包含在渲染树中的元素中,否则它们将永远不会被下载。

为了解决这个问题 - 我在临时 div 中包含了带有 visibility:hidden 的字体 - 这迫使 Chrome 下载字体。

希望这可以帮助其他人避免遇到同样困扰我的问题。

关于android - @font-face 不适用于 Chrome for Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21841250/

相关文章:

javascript - jquery 单击在 Chrome 中的选择标签上不起作用

google-chrome - 通过 WebRTC 将视频对等录制到服务器时如何处理数据包丢失

Java ListView 类?

android - 在已安装的 sdk 21 版本上使用 appcompat 以前的版本

html - 如何使用 CSS 在 Firefox 和 Safari 中对齐文本?

CSS div float - 从上到下,从左到右

javascript - 将 Javascript 注入(inject) Chrome 扩展中新创建的选项卡

android - 如何在单击按钮时从一个 fragment 移动到另一个 fragment

android - 如何始终显示 Android Studio Preview?

javascript - 从 After Effects 导出 Logo 动画以用作加载