【问题标题】:font-face on android 4.0.x doesn't workandroid 4.0.x 上的字体不起作用
【发布时间】:2014-02-13 17:59:47
【问题描述】:

我正在使用 JQM 构建一个移动应用程序,我需要使用 font-face 声明自己的字体。

我将字体 css 文件 fonts.css 作为第一个加载的 css 文件包含在我的 index.html 中,并像这样声明 font-faces

@font-face {
    font-family:"MyFont";
    font-weight:normal;
    font-style:normal;
    src:url("fonts/MyFont.woff");
    src:url("fonts/MyFont.eot?") format("eot"),
        url("fonts/MyFont.woff") format("woff"),
        url("fonts/MyFont.ttf") format("truetype"),
        url("fonts/MyFont.svg#MyFont") format("svg");
}

我的两台测试设备是带有 Android 4.2.1Google Nexus 7 和带有 Android 4.0.4Motorola Razr

在 Google Nexus 上,它既适用于移动版 Chrome,也适用于 PhoneGap。但在摩托罗拉 Razr 上,它仅适用于移动 Chrome。现有的 Android 浏览器和 Phonegap 都不使用 MyFont

是否有任何解决方法可以让我的字体在 Android 4.0.x 上运行?

【问题讨论】:

  • 我也有类似的问题。我有一个带有 CM10 的三星 Galaxy SII Skyrocket。在 4.0.x 上,操作系统浏览器正常显示 @font-face。但是,今天发布了 4.2.1,当我更新它时,@font-face 不再加载。
  • 带有 Android 4.2.1 Jelly Beans 的三星 Galaxy Nexus 上的股票浏览器和 phonegap(使用 web 视图)存在同样的问题。请注意,Chrome 应用程序不存在问题。这很烦人,因为默认的 Android 字体不包含一些字形和显示空白!

标签: android css font-face


【解决方案1】:

有趣。我有相反的经历。

我有一个运行 4.2.1 (CM 10.1) 的 Galaxy Nexus,在升级之前加载字体绝对正常,但自更新以来 CSS 开始变得非常奇怪(仅在本机 WebKit 中,而不是 Chrome,它仍然有效)。

我意识到这不是字体问题,而是 CSS 的特殊性被搞砸了(使用引导程序作为基础,然后用我自己的 CSS 替换)。如果包含引导程序,即使内联样式也不会显示,如果删除引导程序,一切都会正常工作。很奇怪。

至于你对我的问题的反面,有几个想法:

  • 为什么第一个 src 带有 .woff?我已经看到它带有 .eot 用于 IE 向后兼容模式,但是使用 .woff 的浏览器应该能够从第二个 src 使用它。也许尝试删除第一个 src? (这应该不是问题,因为 WebKit 应该用第二个 src 覆盖)

  • 如何加载字体文件?从本地存储?从网络服务器?我知道使用 Firefox 如果具有字体文件的服务器与具有该类型的文件不同,它不会在没有 Allow Origin 标头的情况下加载。

  • 您是否需要在其他非 webkit 浏览器中加载相同的字体定义?如果没有,请考虑删除除 .woff 之外的所有文件。

  • 您确定是字体问题吗?尝试将字体声明设置为非默认系统字体(例如“衬线”)。查看是否正在应用字体声明,还是您的字体很好,但 css 不知何故没有将字体应用于类型? (就像我上周的情况一样)

如果没有其他信息,这有点难以知道。您的@font-face 声明,除了第一个 src 是 .woff 的怪异之外,似乎它应该可以正常工作。我的猜测是问题出在其他地方,而不是那个代码片段。

编辑:

我找到了我的问题 --- 在 Android 4.2.1 上,CSS 选项 text-rendering: 的行为与 Chrome 和以前的 Android 版本完全不同。如果您正在使用此选项,请查看更改或删除它是否可以为您解决问题。这是我唯一能想到的,我认为 Android 4.0 与 Android 4.2 webkit 在渲染字体方面的不同之处。

【讨论】:

  • Why the first src with a .woff? 我将 fonts.css 从其他人构建的网站复制到移动应用目录。但你是对的,使用 eot 文件作为第一个 src 会更好。 How are you loading the font files? 用于测试字体文件存储在网络服务器上,应用程序通过网络浏览器使用。使用 phonegap 构建,字体存储在设备上 /assets/styles/fonts/ 下 - 我只需要在该应用程序上加载字体。 - 我将 style.css 中的字体系列更改为“Verdana”,字体正在更改。 - 没有使用文本渲染。
  • 不仅text-rendering需要关闭,-webkit-font-smoothing也需要关闭
  • text-rendering 在头撞了五个小时后,为我措辞了。谢谢
  • text-rendering: auto 也解决了我的问题。感谢您发布此编辑。很多时间都浪费在试图解决这个问题上。
  • 我正在使用网站而不是 phonegap 应用程序进行测试以追踪问题,即使在停用 text-rendering-webkit-font-smoothing 之后我仍然面临问题(Galaxy Nexus,Android 4.2.1 Jelly Beans使用股票浏览器)。
猜你喜欢
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 2014-04-20
  • 1970-01-01
相关资源
最近更新 更多