我正在使用Materialize为我的某些网页设置样式。我注意到Roboto字体在Firefox(v43.0.3)中无法正确呈现,但在Chrome中看起来很好。两个浏览器都从我的服务器下载woff2字体文件,this question似乎表明它应该是现代浏览器的最佳选择。
(我意识到这些低分辨率的屏幕显示不是最好的再现,在实际的浏览器中差异更明显。)
在Firefox控制台中,我收到一串类似于以下内容的错误消息:
downloadable font: GSUB: too large substitute: 65535 (font-family: "Roboto" style:normal weight:normal stretch:normal src index:1)
downloadable font: Layout: Failed to parse lookup subtable 0 (font-family: "Roboto" style:normal weight:normal stretch:normal src index:1)
downloadable font: Layout: Failed to parse lookup subtable 0 (font-family: "Roboto" style:normal weight:normal stretch:normal src index:1)
Chrome没有投诉。
由于我对字体渲染的复杂性一点都不熟悉,所以我希望那些在该领域有一定知识的人可能会根据Firefox的错误消息知道问题是什么。
答案 0 :(得分:6)
我终于有了一些时间来研究这个问题,看来materialize存储库中的某些字体文件存在缺陷。只需将dist/font/roboto
目录中的字体文件替换为roboto-fontface-bower处可用的相同文件,我就能完全解决此问题。只需从任何版本分支v0.3.0
或更好。
希望这可以帮助那些因此而感到沮丧的人。
答案 1 :(得分:2)
对我而言,看起来woff2文件对内部字体表有错误的偏移,或者Firefox在解析偏移时读取错误的偏移量。
错误消息中提到的GSUB
表不能成为渲染问题的主要原因,因为它只定义了字形替换(如连字组合和分解,相同字符代码的替代字形等)。该表不包含标准字形的任何呈现信息,因此如果仅加载该表,则不应影响标准文本的呈现。有关GSUB表的详细信息,请参阅Microsoft's OTF specification。
此外,我在查看此网站时收到另一条错误消息: http://gwt-material-demo.herokuapp.com/
Firefox告诉我OS/2
表(包含Windows字体指标)有问题。这是字体文件的一个完全不同的部分,它再次表明字体结构有问题或者读取字体结构。
所以你可以做两件事:
请勿使用woff2
文件。
通知Roboto和Firefox开发人员有关此问题,并希望他们能找到导致此错误的原因并进行修复。