请在Firefox for Android版本28上看到此页面的渲染(http://www.jungledragon.org/apps/jd3/all/recent)。问题立即可见:所有那些丑陋的块应该是来自图标字体'FontAwesome'的图标。
这是他们不呈现的唯一浏览器。问题出在我的设置中,因为如果我从Firefox for Android访问FontAwesome网站,那里的图标就可以了。另一个有用的线索是“JungleDragon”标志呈现得很好。这是来自Google的网络字体。
我一直试图排除这种失败的可能原因。特此尝试:
我曾经在我的Amazon S3帐户上托管FontAwesome的副本,并在那里设置CORS策略以允许跨源请求。为了确保这不是一个正在发挥作用的因素,我现在在同一个域上托管该字体。没有区别。
接下来,我从相对路径更改为字体到绝对路径。这也没什么区别。
该网站托管在Apache上,我在其中添加了以下内容类型:
AddType application/vnd.ms-fontobject .eot
AddType application/x-font-opentype .otf
AddType image/svg+xml .svg
AddType application/x-font-ttf .ttf
AddType font/woff .woff
最后一行曾经不同,但我更改了它,以便它与Google字体的内容类型完全匹配,后者确实呈现。这也没什么区别。
在所有尝试中,我每次都完全清除缓存,因此也没有问题。
请注意,字体在其他Android浏览器(Chrome,Dolphin)以及我知道的所有桌面浏览器(包括Firefox)上都可以正常呈现。
这是我的字体声明:
@font-face {
font-family: 'FontAwesome';
src: url('http://www.jungledragon.org/apps/jd3/type/FontAwesome.eot');
src: url('http://www.jungledragon.org/apps/jd3/type/FontAwesome.eot?#iefix') format('embedded-opentype'), url('http://www.jungledragon.org/apps/jd3/type/FontAwesome.woff') format('woff'), url('http://www.jungledragon.org/apps/jd3/type/FontAwesome.ttf') format('truetype'), url('http://www.jungledragon.org/apps/jd3/type/FontAwesome.svg#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
这是加载FontAwesome的默认方式。我改变了许多变化(例如首先加载SVG),但都无济于事。
我现在完全失去了为什么我不能在Firefox for Android上渲染这种字体。
答案 0 :(得分:0)
使用远程调试,我可以访问Firefox的设备Web控制台。事实证明Firefox正在抱怨CORS。这很奇怪,因为字体与页面托管在同一个域中。尽管如此,通过从PHP强制执行CORS标头,我能够解决问题。