字體族
字體族使用font-family 屬性聲明的。適用于所有元素。
當我們想要對文檔中的字體進行設(shè)置時,就可以通過font-family這個屬性。通過這個屬性,我們可以指定字體。比如:
p {
font-family:Georgia;
}
設(shè)置之后,用戶代理會使用Georgia字體顯示文檔中所有的p元素。如果用戶代理沒有找到Georgia字體,那么就會忽略該字體使用默認字體。
因此,為了防止用戶代理中無我們設(shè)置的字體類型從而使用默認樣式,建議始終在font-family規(guī)則中指定通用字體族。這樣相當于提供一種后備機制,在用戶代理找不到匹配的字體時,選擇一個字體代替。
p {
font-family: Arial, sans-serif;
}
我們可以設(shè)置多款字體,各個字體之間使用逗號間隔。對于逗號間隔的多個字體族,用戶代理會按照所列的順序查找字體。直到找到用戶代理支持的或者是最后任意一款通用字體族中的字體。
如果一個字體名稱中存在空格,如New York,或在字體名稱中有符號,如#,$, 則在使用時要把該字體名稱放在引號里。
p {
font-family: Wedgie, 'Karrank%' sans-serif;
}
如果沒有引號,那么用戶代理可能會忽略Karrank%字體。但是注意把帶有引號的字體名稱放在引號里不是強制要求,只是推薦做法。但是如果字體族的名稱和font-family中的關(guān)鍵字同名,則必須要加引號
p {
font-family:Author, "cursive", cursive;
}
正如上面,名為"cursive"的字體,他的名字一定要加上引號,這樣才能和關(guān)鍵字cursive區(qū)分開。
如果把通用字體族的名稱,如serif 放在引號中,用戶代理就會假設(shè)你設(shè)置的是一款字體的名稱,而不是指通用字體族。
@font-face規(guī)則
CSS中支持我們使用自定義的字體,并通過@font-face這一規(guī)則實現(xiàn)。
@font-face是惰性加載字型的。這表明,僅當需要使用指定的字型渲染文本時,才會加載,否則不加載。
定義字體的全部參數(shù)都寫在@font-face{ }結(jié)構(gòu)中,這些參數(shù)稱為描述符,其格式和平常的樣式規(guī)則一樣,為:descriptor: value;的形式。
有兩個必須的參數(shù):font-family和 src
此處的font-family和上面的就有些不同了,此處的是字體族描述符,上面的則是字體族屬性。簡單理解,此處的font-family用于定義自定義的字體的名稱,上面的font-family則是用于引用,為文本應(yīng)用字型。
-
src為定義的字型提供一個或多個源。對于有多個源,各個源之間使用逗號間隔。對于具有以逗號間隔的多個源來說,一旦用戶代理無法從第一個源下載,就會嘗試從下一個源進行下載。字型的源可以指向任何URI,不過有個限制:字型必須和樣式表同源。因此,不能把src指向別人的網(wǎng)站,下載別人的字體。
- format() 如果想告訴用戶代理所使用的字體是什么格式的,可以使用可選的format()
@font-family { font-family: "Switaa"; src:url("Switaa.otf") format("opentype"); }這樣做的好處是可以讓用戶代理跳過不支持的字體格式,加快加載速度。format()還可以為不帶有常規(guī)擴展名的字體文件指定格式,以防用戶代理不識別。
@font-family { font-family: 'Switee'; src:url("Switee.otf") format('opentype'), url("Switee.true") format('truetype'); }- local() 使用local()可以指定安裝到用戶設(shè)備中的字體族名稱。(可以是多個)
@font-face { font-family:"Switee"; src:local("Switee"), local("SwiteeADF"); }
除了必選的font-family和src描述符外,還有幾個可選的描述符。
| 描述符 | 默認值 | 說明 |
|---|---|---|
| font-weight | normal | 區(qū)分不同的字重 |
| font-style | normal | 區(qū)分常規(guī)、斜體和傾斜字體 |
| font-stretch | normal | 區(qū)分不同的字符寬度 |
| font-variant | normal | 區(qū)分眾多字型變體 |
| font-feature-settings | normal | 直接訪問OpenType的低層特性 |
| unicode-range | U+0-10FFFF | 定義直接字體中可用的字符范圍 |
字重 font-weight
取值:normal bold bolder lighter 100 200 300 400 500 600 700 800 900
一般來說,字重越大,字體越黑,越粗。
字重的工作方式:
字重分為九級。100是最細的,900是最粗的。
但是,CSS規(guī)范只是說,每個數(shù)字對應(yīng)的權(quán)重至少和前面的數(shù)字具有相同的字重。因此,100、200、300、400可能對應(yīng)于同樣細的字體;500,600對應(yīng)于同樣粗的字體;700、800、900則對應(yīng)同樣較粗的字體。只要后面的數(shù)字關(guān)鍵字對應(yīng)的粗細不必前面的數(shù)字關(guān)鍵字細就行。
400 對應(yīng)normal , 700對應(yīng)于bold.
如果給定字體族中字重的等級少于9級,用戶代理會以以下方式填補空缺:
- 如果500未分配,與400對應(yīng)的字重一樣。
- 如果300未分配,則查找相較于400細的那個變體,如果沒有,則字重和400一樣。200和100也是這樣處理的。
- 如果600未分配,將其對應(yīng)于較500黑的那個變體。如果沒有,則字重與500一樣,700,800和900也是這樣處理的。
字號font-size
字號的取值可以是絕對值、百分數(shù)、em、長度單位。
絕對值為:xx-small , x-small , small , medium , large , x-large , xx-large.
字形font-style
normal 、italic(斜體)、oblique(傾斜體)
自動調(diào)整字號font-size-adjust
有兩個因素影響字體是否清晰:字號和x高度。
x高度除以字號得到的結(jié)果稱為高寬比值。字號越大,寬高比值越小,字體越模糊;反之,字體越清晰。而font-size-adjust用于改變字體族間的寬高比值。
計算公式:
設(shè)定的font-size值 * (font-size-adjust值 / 字體的寬高比值 ) = 調(diào)整后的font-size