前端解決中文字體加載慢的問(wèn)題

CSS3中,使用@font-face即可加載自定義字體了。

推薦的跨瀏覽器 @font-face CSS 寫(xiě)法:
/*聲明 WebFont*/
@font-face {
  font-family: 'fontName';   /*字體名稱*/
          src: url('../fonts/font.eot') format('embedded-opentype'), /* IE6-IE8 */
               url('../fonts/font.woff') format('woff'),
               url('../fonts/font.ttf') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
               url('../fonts/font.svg') format('svg'); /* iOS 4.1- */
  font-weight: normal;
  font-style: normal;
}
/*使用選擇器指定字體*/
.test {
    font-family: 'fontName';
}

正常使用@font-face加載自定義字體時(shí),可能整個(gè)字體包大小有好幾M,打開(kāi)網(wǎng)頁(yè)時(shí),可能會(huì)需要很長(zhǎng)的時(shí)間來(lái)下載字體。用戶體驗(yàn)很不好。

那么如何解決這一問(wèn)題呢?

你可以找設(shè)計(jì)小姐姐/小哥哥幫忙把字體包中用不到的字拿掉,只留頁(yè)面需要的字,這樣字體文件大小就會(huì)小很多(但是這種方法適應(yīng)性太差,如果發(fā)生文字更換,字體文件也會(huì)頻繁需要修改。)

其實(shí)我們前端也有神器可以解決此問(wèn)題, font-spider是一個(gè)中文字體壓縮器,讓網(wǎng)頁(yè)自由引入中文字體成為可能。

font-spider的工作原理是這樣的: 中文字體文件之所以很大,是因?yàn)橛⒄Z(yǔ)只有26個(gè)字母,而中文的漢字有好多好多個(gè),所以文件相對(duì)來(lái)說(shuō)就會(huì)大很多。font-spider就是從你的css文件的@font-face入手,去查找字體,然后遍歷你的html文件,通過(guò)分析本地 CSS 與 HTML 文件獲取 WebFont 中沒(méi)有使用的字符,并將這些字符數(shù)據(jù)從字體中刪除以實(shí)現(xiàn)壓縮,同時(shí)生成跨瀏覽器使用的格式。

如何使用font-spider

1.首先你的電腦需要安裝node.js
2.安裝好了node.js,然后執(zhí)行:
npm install font-spider -g

3.在css中使用webfont,在css中就按照以下格式聲明@font-face(注意 src 定義的 .ttf 文件必須存在,其余的格式將由工具自動(dòng)生成)

/*聲明 WebFont*/
@font-face {
  font-family: 'pinghei';
  src: url('../font/pinghei.eot');
  src:
    url('../font/pinghei.eot?#font-spider') format('embedded-opentype'),
    url('../font/pinghei.woff') format('woff'),
    url('../font/pinghei.ttf') format('truetype'),
    url('../font/pinghei.svg') format('svg');
  font-weight: normal;
  font-style: normal;
}

/*使用選擇器指定字體*/
.home h1, .demo > .test {
    font-family: 'pinghei';
}

4.運(yùn)行 font-spider 命令

cd /Users/xxx/Desktop/MyRepository/project  /*進(jìn)入項(xiàng)目?jī)?nèi)*/
/*執(zhí)行命令,*.html是對(duì)所有html文件執(zhí)行該命令,你也可以寫(xiě)具體name的html*/
font-spider  *.html

命令執(zhí)行完后,字體文件下多出來(lái)以下文件(.font-spider文件夾下是原始的ttf文件)


image.png
注意:

字蛛不支持動(dòng)態(tài)生成的文字,他只能找到html中存在的文字。

不過(guò)此問(wèn)題在新出的font-spider-plus(字蛛+)得到了解決。

除了兼容font-spider(字蛛)支持的特性:

  1. 壓縮字體:智能刪除沒(méi)有被使用的字形數(shù)據(jù),大幅度減少字體體積
  2. 生成字體:支持 woff2、woff、eot、svg 字體格式生成

font-spider-plus(字蛛+)還具有以下特性:

  1. 支持線上動(dòng)態(tài)渲染的頁(yè)面
  2. 支持線上GBK編碼的文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容