{{CSS}}字體font屬性詳解

1.字體系列font-family
CSS定義了5種通用字體系列:
1.Serif字體
2.Sans-serif字體
3.Monospace字體
4.Cursive字體
5.Fantasy字體
當然還有各種特定字體系列,如Times,Verdana,Helvetica,Arial

最佳實踐:
1.在所有的font-family規則中都提供一個通用字體系列,這樣就提供了一條後路,在用戶代理無法提供與規則匹配的特定字體時,可以選擇一個候選字體。
2.當一個字體名中有一個或多個空格(如New Century Schoolbook),或者字體名中包含#,%或$之類的符號時,必須要在font-family聲明中加引號,在這種情況下整個字體名應用用引號括起,這樣用戶代理才能搞清楚字體名到底是什麼。
還有一種必須加引號的的是與所接受關鍵字匹配的字體名。如有一種名爲"cursive"的字體,就必須加引號。顯然,字體名中如果只包含一個詞,而且這個詞與font-family的任何關鍵字都不衝突,就不需要加引號,通用字體系列名(serif,monospace等)在指示具體的通用系列時就不能加引號。如果將一個通用名引號引起,用戶代理就會認爲你需要一個與此同名的特定字體,如'serif',而不是一個通用字體系列。

2.字體加粗font-weight
font-weight:normal|bold|bolder|lighter|100|200|300|...|900|inherit
初始值:normal
應用於:所有元素
繼承性:有
計算值:數字值或某個數字值加上某個相對數

3.字體大小font-size
font-size:xx-small|x-small|small|medium|large|x-large|xx-large|smaller|larger|<length>|<percentage>|inherit
初始值:medium
應用於:所有元素
繼承性:有
百分數:根據父元素的字體大小來計算
計算值:絕對長度

4.字體風格(font-style)和字體變形(font-variant)
1)有風格的字體font-style:normal|italic|oblique
font-style很簡單,就3種值,唯一有點複雜的就是italic文本和oblique文本之間的差別。基本上說,斜體(italic)是一種單獨的字體風格,對每個字母的結構有一些小改動,來反映變化的外觀。對serif字體尤其如此,除了文本字符“有些斜”以外,serifs可以修改爲一種斜體字體。與此不同,傾斜(oblique)文本則是正常豎直廣西的一個傾斜版,標爲Italic,Cursive,Kursiv的文本總是映射到italic關鍵字,而oblique總是對應到標爲Oblique,Slanted,Incline的字體。
2)字體變形font-variant:small-caps|normal|inherit

5.font屬性
font:[[<font-style>|<font-variant>|<font-weight>]?<font-size>[/<line-height>]?<font-family>]|captio|icon|menu|...|inherit
初始值:根據單個屬性
應用於:所有元素
繼承性:有
百分數:對於<font-size>要相對於父元素來計算;對於<line-height>則相對於元素的<font-size>來計算
計算值:見單個屬性(font-style等)

注:
1)font的前三個值允許採用任意的順序。
2)font的後兩個值font-size,font-family不僅要以此順序(font-size在前,font-family在後)作爲聲明中的最後兩個,而且font聲明中必須有這兩個值。如果少了其中某個屬性,那個整個規則就都是無效的,很可能被用戶代理完全忽略。如
h1 {font:noraml normal italic 30px sans-serif;} /* OK */
h1 {font:30px sans-serif;} /* OK */
h1 {font:sans-serif;} /* Invalid 缺少font-size */
h1 {font:lighter 14px;} /* Invalid 缺少font-family */
3)爲font設置line-height,儘管line-height是一個文本屬性而不是字體屬性。增加這個line-height值完全是可選的,就像font前3個屬性。但若包含了一個line-height,要記住font-size總是在line-height之前,絕對不能在line-height後面,而且這兩個屬性要有/分隔。
4)最後再強調一下(好羅嗦啊):font中font-size和font-family值是必須的,而且順序不可變。不過其他值都是可選的。

6.字體匹配過程詳解
CSS允許匹配字體系列,加粗,變形。所有這些都是通過字體匹配來完成的,這是一個相當複雜的過程。
1.用戶代理創建(或訪問)一個字體屬性數據庫,這個數據庫列出了用戶代理能訪問的所有字體的各種屬性。
2.用戶代理取得應用了字體屬性的元素,並構建一個字體屬性列表,其中列出顯示該元素的必要字體屬性。基於這個列表,用戶代理先對顯示元素使用的字體系列做第一個選擇。如果完全匹配,那麼用戶代理就可以使用這個字體。否則,需要多做一些工作。
a.字體首先根據font-style屬性進行匹配,關鍵字italic可以與所有標有italic,oblique的字體匹配,若沒有這樣的字體,則匹配失敗;
b.再根據font-variant屬性匹配。未標"small-caps"的字體都認爲是normal,與small-caps匹配的字體可以標爲"small-caps"的字體,也可以是允許合成small-caps風格的字體或者用大寫字母替換小寫字母的字體。
c.然後根據font-weight匹配,由於CSS中處理font-weight的特殊方式,這個匹配不會失敗。
d.之後再針對font-size匹配,必須在某個可忍受的範圍內匹配,不過這種忍受程度要由用戶代理定義。
3.如果在第2步中未匹配任何字體,用戶代理就會在這個字體系列中查代下一個候選的字體,如果找到了,就對該字體重複第2步。
4.假設找到一個通用匹配,但其中不包括顯示給定元素所需的一切——例,這種字體沒能版權符號——用戶代理就回到第3步,再搜索另一個候選字體,然後再通過第2步來驗證這種字體是否匹配。
5.最後,如果沒有找到匹配,而且所有候選字體已經都試過了,用戶代理就會爲給定的通用字體系列選擇默認字體,盡其所能正確地顯示這個元素。

發佈了0 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章