2013-07-28 98 views
0

我的問題沒有任何代碼。所以請不要問我。 這是一個相當豐富的問題​​。字體家族規則及其解釋

我們都知道的CSS字體家庭的規則。防爆

h1{font-family:"Times New Roman", Times, serif;} 

現在我明白了申報FONT-FAMILY的原因是櫃面的瀏覽器無法找到它會切換到第二個第一字體。但是在什麼情況下會發生這種情況。字體的失敗與最終用戶機器上安裝的字體有關嗎?或者某些瀏覽器不支持特定的字體?

+0

大多數情況是,如果第一個字體沒有安裝在系統上,則使用第二種字體。還有一些規則,但... –

+0

是的。這是我的問題。在什麼情況下會發生這種情況。第一部分已經在SO – AnaMaria

+0

[本頁](http://www.w3.org/TR/CSS2/fonts.html)上得到了回答,例如「將典型的字體選擇屬性映射到一個不是簡單的問題特定的字體。「並解釋了一些瀏覽器必須面對的問題,我可以從該頁面複製一些材料,並將其粘貼到答案中,如果你喜歡... –

回答

2

正如你所說,答案是YES,如果某些字體或其他字體無法加載,則上述聲明將用作回退。讓我解釋一下如何。

讓我們稍微修改您的聲明。假設我們有一個Web字體和兩個系統字體,這樣的聲明是這樣

h1 { 
    font-family: 'Open Sans', Arial, Helvetica; 
} 

在這裏,我們從Google Web Fonts獲取的Open Sans字體。所以在這裏,假設谷歌服務器停機或說用戶的瀏覽器太舊,瞭解font-faceWeb Fonts,當我的網頁是由特定用戶的要求,Open Sans字體將無法呈現,因爲它沒有下載,因爲服務器關閉,在這種情況下,CSS將使用Arial,現在如果用戶系統沒有Arial字體,則會應用Helvetica

如果用戶沒有字體,比網站將呈現用戶設置瀏覽器默認字體。

+0

哪一個?你的例子沒有默認字體之一 –

+1

@MrLister我沒有明白你的意思 –

+0

好的,但是如果用戶沒有安裝Arial字體,瀏覽器不會嘗試從網上獲取這個信息嗎? – AnaMaria

1

最明顯的情況是,缺少前字體的系統。在不太可能的情況下,Times New Roman缺失,Times會被嘗試,實際上它可能也會丟失,因此將使用瀏覽器的默認襯線字體serif

但是整個畫面比較複雜。部分Font Matching Algorithm在CSS字體模塊級別3 LC(在這方面比CSS 2.1規範更真實,更接近瀏覽器真實性)描述瞭如何選擇字體。

例如,考慮這樣的規則:

p { font-family: Arial Unicode MS, Arial; font-style: italic } 

在這種情況下,將Arial字體被使用,因爲Arial字體的Unicode MS沒有斜體字。或者至少這本書應該發生什麼,以及現代瀏覽器會發生什麼。

這是可能的文本中包含一個字符,不存在於主要字體。然後嘗試其他字體,以便找到具有該字符的字體。對於給定的,h1{font-family:"Times New Roman", Times, serif;}的情況下,這意味着在Times New Roman字體不可用(或次,但如果存在的話,它可能具有更有限的字符集),用於serif任何特殊或「洋」字。