2010-01-09 134 views
4

更新:看起來我陷入了並非實際上是問題原因的關聯中。問題實際上是如何部署CSS文件的一個無關緊要的問題。詳情請參閱下面的答案。@media中嵌入的@ font-face在Firefox 3.5和IE8中不起作用

我的@ font-臉的WebKit(Safari和Chrome)和Opera運作良好,但不能在Firefox 3.5或IE 8

每建議由谷歌和其他人,我爲所有的靜態資產,包括CSS,從我的主站點的一個單獨的域。 如果我服務於同一個域中的所有東西,它在所有瀏覽器中都可以正常工作(注意:這意味着關於CSS語法的答案是無用的,我已經完成了所有這些工作,並且工作得很好,這只是關於跨域問題)。

如果我所服務的從我的靜態資產域CSS和字體文件,並有靜態資產的服務器設置相應access-control header(訪問控制允許來源),應該工作,它的工作原理無處不在,除了FF 3.5,其與IE瀏覽器。

我需要做些什麼來完成這項工作?

回答

2

到目前爲止,我已經發現,在希望它可以幫助別人的最佳答案:

據我所知道的,問題的關鍵是能否CSS文件(不是字體文件)被加載跨域。如果我從我的靜態資產域加載了帶有@ font-face聲明的CSS文件,則無論採用什麼訪問控制標題,我都不會使字體在FF或IE中工作。如果我從與頁面相同的域加載CSS文件,或者只是將我的@ font-face聲明移動到頁頭中的樣式塊中,那麼它可以在所有瀏覽器中運行(我甚至可以加載跨域的字體文件只要我有訪問控制標題集)。

總結:AFAICT,FF 3.5和IE 8將拒絕承認跨域加載的CSS文件中的@ font-face聲明,無論如何。

我很想糾正這個問題,如果有人知道更好,可以指出我可能做錯了什麼。

確實,我錯了。事實證明,我們用來部署從專用域服務的資產的CSS壓縮器使用「@media screen {...}」來包裝整個CSS塊。我仔細比較了@ font-face規則,以確保壓縮器不會混淆它們,但從未檢查CSS文件的開頭和結尾以便捕獲該封裝。當我轉向服務同一領域時,這種包裝並未發生。

事實證明,IE和Firefox並不尊重@media中包含的@ font-face聲明:Safari,Chrome和Opera。

感嘆。

-2

此鏈接對我幫助很大:http://snook.ca/archives/html_and_css/becoming-a-font-embedding-master

不幸的是,我與文字從我最想嘗試的字體的質量非常失望。我無法確定某些字體是否不可反鋸齒,但結果不令人滿意,我仍然使用圖像替換。

+0

請參閱上面我編輯的說明。正如我最初所說,如果我將所有內容放在同一個域中,它在所有瀏覽器中都能夠令我完全滿意。這意味着沒有具體解決跨域問題的答案在這裏是無關緊要的。您鏈接到的文章沒有提及跨域問題。對不起,我希望確保相關答案保持在最高。 – 2010-01-09 01:04:49

+0

如果結果令人滿意,我希望看到該頁面。您介意發佈樣本嗎? – mark123 2010-01-09 01:38:24

+0

我很樂意在網站上發佈一個鏈接(一個星期內),但直到那時才能發佈。如果你對事物的設計方面感興趣,我想這就是你想要的。我還想發佈一個簡單的跨域問題簡化演示,但現在還沒有時間。 – 2010-01-09 02:22:31

-1

我建議看看this IEBlog post,它描述了你如何在IE上進行字體嵌入。不,這不符合CSS3的方式,不,你沒有任何其他方式在IE中使用@ font-face來完成它。

可能值得注意的是,微軟向W3C提交了EOT方法以實現標準化,W3C在該行動中採用了expressed interest

+0

請參閱上面我編輯的說明。正如我最初所說,如果我將所有內容放在同一個域中,它在所有瀏覽器中都能夠令我完全滿意。這意味着沒有具體解決跨域問題的答案在這裏是無關緊要的。您鏈接到的文章沒有提及跨域問題。對不起,我希望確保相關答案保持在最高。 – 2010-01-09 01:05:50

相關問題