CSS3之@font-face

基礎知識

@font-face雖然是CSS3模塊恒序,但是IE4時代開始就已經支持了它,只不過跟現(xiàn)在CSS3的功能相比完全不可比谁撼。

先看看http://www.css88.com/book/css/rules/@font-face.htm

可以看出歧胁,各種瀏覽器對它的支持五花八門滋饲,所以,寫出一個全瀏覽器兼容的定義字體的代碼就很重要喊巍。

@font-face的本質就是先定義屠缭,后使用。現(xiàn)在我們先定義:

@font-face {
    font-family: 'diyfont';
    src: url('diyfont.eot'); /* IE9+ */
    src: url('diyfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
         url('diyfont.woff') format('woff'), /* chrome崭参、firefox */
         url('diyfont.ttf') format('truetype'), /* chrome呵曹、firefox、opera何暮、Safari, Android, iOS 4.2+*/
         url('diyfont.svg#fontname') format('svg'); /* iOS 4.1- */
}

這種寫法的原因是:瀏覽器會從前往后嘗試使用字體奄喂,優(yōu)先使用eot字體,如果不兼容瀏覽器海洼,就使用woff字體跨新,依然不兼容就使用ttf字體,還不兼容就使用svg字體坏逢。

這里需要介紹一下eot格式域帐、ttf格式、woff格式是整、svg格式肖揣。

.eot ,Embedded Open Type浮入,主要用于早期版本的IE龙优,是其專有格式,帶有版權保護和壓縮事秀。
.ttf 彤断,TrueType,在操作系統(tǒng)里更為常見秽晚,在web上使用的話瓦糟,是為了兼容早期僅支持TTF和OTF的瀏覽器。由于體積比較大赴蝇,還需要服務器額外壓縮菩浙。
.otf,OTF擴展名的O表示OpenType - PostScript字體句伶,采用的是PostScript曲線劲蜻,支持OpenType高級特性。
.woff 考余,Web Open Font Format先嬉,可以看作是ttf的再封裝,加入了壓縮和字體來源信息楚堤,通常比ttf小40%疫蔓。也是當前web字體的主流格式含懊。
.woff2 ,Web Open Font Format 2.0衅胀,相比woff最大的優(yōu)化應該是加強了字體的壓縮比岔乔。目前 支持的瀏覽器 只有正在互飆版本號的Chrome和Firefox。
.svg滚躯,基于SVG字體渲染的一種格式雏门,支持這種字體的瀏覽器有【Chrome4+,Safari3.1+,Opera10.0+,iOS Mobile Safari3.2+】。

圖標字體

我們看看著名的glyphicons-halflings圖標字體庫都提供了哪些文件:

Paste_Image.png

看來它提供全了掸掏。更著名的Font Awesome圖標字體茁影,提供了哪些文件呢?

Paste_Image.png

那么glyphicons-halflings如何聲明呢丧凤?

@font-face {
  font-family: 'Glyphicons Halflings';
  src: url("../fonts/glyphicons-halflings-regular.eot");
  src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),
    url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"),
    url("../fonts/glyphicons-halflings-regular.woff") format("woff"),
    url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),
    url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); }

再看看Font Awesome怎么聲明的:

@font-face {

font-family: 'FontAwesome';
src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),
    url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),
    url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),
    url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),
    url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}

找到規(guī)律了吧募闲,聲明的順序是:

1、先聲明字體家族的名稱息裸。
2蝇更、單獨聲明一個資源沪编,聲明eot呼盆。
3、再聲明一個資源蚁廓,依次聲明eot?#iefix访圃、woff2、woff相嵌、otf腿时、ttf、svg#xxx饭宾。順序一定不要錯批糟。資源的格式是url('...') format('...')。

現(xiàn)在看铆,我們研究一下怎么使用這兩個字體徽鼎。其實字體的開發(fā)方會給你提供一個CSS文件,完全不用你自己考慮如何使用字體弹惦。大致如下:

.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.glyphicon-asterisk:before {
  content: "\002a";
}
......

當你想使用一個圖標文字的時候否淤,只需要用一個span標簽,加上兩個類棠隐,就可以使用了石抡。

<span class="glyphicon glyphicon-asterisk"></span>

文字字體

現(xiàn)在我只想用一個文字字體,并不想用圖標字體助泽,怎么辦啰扛?

首先嚎京,我們要去找字體,比如從Google Web FontsDafont.com尋找自己需要的字體∫猓現(xiàn)在我從Dafont.com下載了一個“Lost in Wild”字體挖藏,這個字體長相很囂張。我們試一試厢漩。

我把壓縮包下載到本機服務器的www目錄膜眠,解壓,里面有otf和ttf兩種文件溜嗜,分別為60KB和155KB宵膨。我先在HTML文件寫一段CSS規(guī)則:

@font-face {
font-family: 'Lost and Wild';
src: url('/lost_in_wild/Lost in Wild.otf') format('opentype'),
    url('/lost_in_wild/Lost in Wild.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}

.font-lostandwild {
  font-family: 'Lost and Wild';
}

然后構建一個簡單的HTML文件,主要內容是:

<p class="font-lostandwild">Too young, too simple, sometimes naive!</p>

打開頁面我們看看效果:

Lost and Wild字體使用效果

雖然看起來很亂炸宵,但是我們用起來是成功了辟躏。不過請注意,http://www.css88.com/book/css/rules/@font-face.htm 這里已經明確顯示土全,IE6-8是不支持otf/ttf字體的捎琐,所以如果要兼容到IE8,你找的字體庫里面必須要含有.eot文件裹匙,如果沒有瑞凑,要么找轉換工具做一個.eot文件,要么就放棄這個字體庫概页。

轉換工具:

1籽御、ttf2eot,這是一個node.js實現(xiàn)的庫惰匙,使用起來很簡單技掏。

2、微軟的WEFT 3.2项鬼,是一個程序哑梳,微軟出的程序的易用性不用懷疑。

最后绘盟,你可能會問鸠真,為啥沒有提中文網絡字體?中文字體由于體積大奥此,一般都在5MB以上弧哎,所以不適合作為網絡字體使用。有些網站“強行”使用上了中文網絡字體稚虎,用戶體驗很差撤嫩,因為你剛打開網頁的時候,5MB的字體文件還沒后臺下載下來蠢终,所以你看到的字體都是默認字體序攘,等了10秒之后茴她,后臺把字體下載下來,然后網頁會“一抖”程奠,其實是瀏覽器重新渲染一遍字體丈牢,然后你才能看到正確的字體。所以瞄沙,如果你找到了一款2M以內的中文字體网沾,就可以嘗試用用品姓,否則沒必要為了字體加大網頁體積押逼,你還有一種方法是把字寫到圖里面祭阀,貼一張圖即可。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末垫桂,一起剝皮案震驚了整個濱河市师幕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诬滩,老刑警劉巖霹粥,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疼鸟,居然都是意外死亡后控,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門愚臀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忆蚀,“玉大人矾利,你說我怎么就攤上這事姑裂。” “怎么了男旗?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵舶斧,是天一觀的道長。 經常有香客問我察皇,道長茴厉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任什荣,我火速辦了婚禮矾缓,結果婚禮上,老公的妹妹穿的比我還像新娘稻爬。我一直安慰自己嗜闻,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布桅锄。 她就那樣靜靜地躺著琉雳,像睡著了一般样眠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翠肘,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天檐束,我揣著相機與錄音,去河邊找鬼束倍。 笑死被丧,一個胖子當著我的面吹牛,可吹牛的內容都是我干的绪妹。 我是一名探鬼主播晚碾,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喂急!你這毒婦竟也來了格嘁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤廊移,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狡孔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懂诗,經...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年苗膝,在試婚紗的時候發(fā)現(xiàn)自己被綠了殃恒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡辱揭,死狀恐怖离唐,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情问窃,我是刑警寧澤亥鬓,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站域庇,受9級特大地震影響嵌戈,放射性物質發(fā)生泄漏。R本人自食惡果不足惜听皿,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一熟呛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尉姨,春花似錦庵朝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欣孤。三九已至,卻和暖如春昔逗,著一層夾襖步出監(jiān)牢的瞬間降传,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工勾怒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留婆排,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓笔链,卻偏偏與公主長得像段只,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鉴扫,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容

  • 標簽(空格分隔): CSS3 @font-face的是一個CSS規(guī)則赞枕,允許在網站上使用特定的字體,即使她在訪問者的...
    ahcj_11閱讀 959評論 0 1
  • font-face是css3中允許使用自定義字體的一個模塊坪创,他主要是把自己定義的Web字體嵌入到你的網頁中炕婶。到了今...
    Rin陽閱讀 14,740評論 0 13
  • 摘要:本篇文章包括(1)介紹@font-face(2)如何在網頁中使用@font-face插入特殊字體(3)中文在...
    Masukio閱讀 16,470評論 0 17
  • @font-face是CSS3新特性中的一個模塊,今天就來介紹下它莱预。它主要是把自定義的Web字體嵌入到你的網頁中柠掂。...
    荷小音閱讀 944評論 0 2
  • 一、概念 參考網頁字體Serif和Sans-serif的區(qū)別及瀏覽器字體的設置CSS Font知識整理總結 1.F...
    合肥黑閱讀 6,296評論 0 12