2012-02-07 52 views
1

我試着用搜索引擎這一點,但無法找到一個答案,我知道宋體至上...如果您將font-family設置爲只有sans-serif,字體順序是什麼?

另外,我見過的人做

font-family: sans-serif, arial, 2nd font in sans-serif, 3rd font in sans-serif... 

凡看來以後無襯線,他們按照相應的順序列出該系列中的所有字體。這不是不必要的工作,因爲sans-serif是該組字體順序的一部分嗎?

+0

我認爲你是對的。 「sans-serif」將防止使用任何其他字體系列。 – 2012-02-07 03:55:48

+3

僅僅因爲你看到了一些東西......並不意味着這樣做的人有任何線索。這對網絡開發來說尤其如此。 – mrtsherman 2012-02-07 04:02:50

+0

@ mrtsherman:太頻繁了。 – animuson 2012-02-07 04:08:09

回答

4

w3

通用字體家族是一個備用的機制,保持 一些樣式表作者在最壞的情況下意圖時指定的字體可以選擇任何 的手段。爲了獲得最佳的印刷控制, 應該在樣式表中使用特定的命名字體。

字體應該在你想使用他們,那麼瀏覽器將嘗試以應用它們,在需要時它不能匹配用戶的系統上的字體在列表中前進的順序列出。

因此,首先列出備用字體是沒有意義的,因爲它們將在非通用字體系列呈現字體之前應用(例如,在您的示例中)Arial被忽略且無襯線字體頂部應用。這與僅使用font-family: sans-serif;相同。

2

「我知道宋體是第一位的。」

這當然不是在一般情況下正確的。我的意思是,你不能指望所有客戶都這樣做。

您可能正在考慮沿着Arial默認情況下某些語言環境中Windows 7的首選。但對於Linux來說這不會是真的。即使對於所有的Windows用戶來說,它也不一定是真的,這取決於他們如何配置事物。你不可能知道客戶端會使用什麼字體。如果你對客戶瞭解很多,你可以做出一些合理的猜測......但是你必須詳細說明你的客戶的期望。

但是你說得對,sans-serif是一個全面的。通常將這個列表放在列表的最後。我一開始沒有看到它。在它之後列出更多的東西是沒有意義的。

1

正如你似乎懷疑的那樣,正如其他答案所說,像sans-serif, arial這樣的列表通常是基於誤解。但情況更爲複雜。

根據CSS 2.1規範,「所有五種通用字體系列都被定義爲存在於所有CSS實現中(它們不一定映射到五種不同的實際字體)。」但是,在我看來,我的Firefox 10違反這個:它忽略名稱fantasy,因此font-family: fantasy, xxx導致使用xxx

一個更基本的問題是規範要求字體選擇是在每個字符的基礎上進行的,現代瀏覽器通常會實現這一點。因此,例如,即使是在符合實施方式中,以下通常會導致用於特殊字符的通用名稱後列出的字體,如果該字體是系統上可用的:

<style> 
p.foo { font-family: sans-serif, Arial Unicode MS; } 
p.bar { font-family: sans-serif, Lucida Sans Unicode; } 
</style> 
<p class=foo>Special: &#x2074; 
<p class=bar>Special: &#x2074; 

如果對應於所述字體通用名稱sans-serif包含上標四個字符(4)U + 2074,那麼該字體當然會用於此,並且這兩個段落沒有渲染差異。但它可能不會。該字體可能是Arial,Helvetica或其他一些字體相對較小的無襯線字體。這意味着對於特殊字符,瀏覽器將使用列表的其餘部分。

如果您使用的是安裝了Office的Windows系統,您很可能會看到兩個不同的字符作爲上標四個字符 - 除非您已將瀏覽器配置爲使sans-serif映射到包含它的字體。

相關問題