2016-01-12 84 views
7

我使用Materialize來設計我的一些網頁。我注意到,Roboto字體在Firefox(v43.0.3)中無法正確顯示,但在Chrome中看起來很好。兩個瀏覽器都從我的服務器上下載woff2字體文件,這似乎表明this question應該是現代瀏覽器的最佳選擇。在Firefox中實現Roboto字體的顯示問題

Chrome的渲染: enter image description here

Firefox顯示: enter image description here

(我知道這些低分辨率screencaps不是最好的再現,差別在實際的瀏覽器更爲明顯)

在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

對此有什麼好運?根據https://github.com/Dogfalo/materialize/issues/2660,我有同樣的問題 – Brandon

+0

@Brandon,它似乎可能會在下一個Materialize版本(0.97.6)中得到糾正。在進一步調查之前,我會等待這個釋放。 – user3351605

+0

只是一個更新:版本0.97.6似乎沒有解決這個問題。 – user3351605

回答

6

我終於有一些可用的時間尋找到這多一點,似乎有些在materialize庫中的字體文件是有缺陷的。只需將dist/font/roboto目錄中的字體文件替換爲roboto-fontface-bower提供的相同文件即可完全解決此問題。只需從任何版本分支v0.3.0或更好。

希望這可以幫助那些因此而感到沮喪的人。

+0

非常感謝 – CodeZilla

2

對我來說,它看起來像woff2文件有錯誤的偏移到內部字體表或Firefox解析偏移量時讀取錯誤的偏移量。

錯誤消息中提到的GSUB表不能成爲渲染問題的主要原因,因爲它只定義字形替換(如連字組合和分解,替代字形爲相同的字符代碼等)。該表不包含標準字形的任何渲染信息,因此如果只有該表無法加載,則不應影響標準文本的渲染。有關GSUB表的詳細信息可在Microsoft's OTF specification中找到。

另外,在看這個網站時,我收到其他錯誤消息: http://gwt-material-demo.herokuapp.com/

火狐告訴我,有什麼不對的OS/2表(包含Windows字體的度量)。這是字體文件的完全不同的部分,它再次表明字體結構或讀取字體結構時出現錯誤。

因此,有兩件事情可以做:

  1. 不要使用woff2文件。

  2. 通知Roboto和Firefox開發者關於這個問題,並希望他們能找到這個錯誤的原因並修復它。

+0

我從使用Woff2切換到Woff,現在在Firefox中使用Webpack和文件加載器工作正常。 '@ font-face { font-family:「Roboto-Regular」; ('./ assets/fonts/Roboto-Regular.woff')格式('wot'), url('./ assets/fonts/Roboto-Regular.eot')格式('eot'), /* Chrome 6+,Firefox 3.6+,IE 9+,Safari 5.1+ */ url('./ assets/fonts/Roboto-Regular.ttf')格式('truetype');/* Chrome 4+,Firefox 3.5,Opera 10+,Safari 3-5 */ }' – TetraDev