使用字蛛教程以及遇到的bug


前言:

前段時間剛完成一個外項目,歇了幾天,老大讓我看看公司的官網,優化一下,發現移動端的字體下載特別慢,才發現引用了字體包,一個字體包就達到了11M,想着既然有了圖片壓縮,那么應該有字體壓縮,所以百度,弄了起來,廢了不少勁,遇到不少坑,記錄下來。

WebFont可以讓網頁使用特殊字體,就不用針對特殊字體用圖片來代替了,通過 CSS3的新屬性@font-face 語句引入字體資源,然后使用 CSS 選擇器指定 font-family運用字體的文本。

一 了解字蛛

字蛛 正如官網所說:是一個中文字體壓縮器,(http://font-spider.org/)
它的原理就是將頁面引用特殊字體的字體抽出來,然后訪問字體包對應的字體,進而合成一個字體包,這樣就不用引入3000多個字體了,實現了按需引入的功能

官方話:字蛛通過分析本地 CSS 與 HTML 文件獲取 WebFont 中沒有使用的字符,並將這些字符數據從字體中刪除以實現壓縮,同時生成跨瀏覽器使用的格式。

雖然官網有詳細的教程,自己還是再記錄下,哈哈哈。

二 安裝

font-spider是一個node包,依賴於node,所以應先下載node,下載過程略~(前端再不懂node,真不好意思說是前端了)
之后:

npm install font-spider -g

查看版本號

font-spider —version

如果出現版本號,則代表安裝成功。

三 使用

在 CSS 中使用 WebFont:

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

四 運行

在當前路徑下,或者要壓縮字體的html文件下,實行終端:

font-spider xxx.html

五 坑

  • 1 font-spider主要依據ttf格式的文件來進行分析壓縮的,所以font-face的路徑必須存在ttf格式的,其他格式不行。設計師的字體大部分都是網上下載的,可以找設計師要字體包的名字,然后通過這個網站字客網去找對應的ttf,下載~

  • 2 引入路徑要使用相對路徑,
    否則會報 Web Font was not found

  • 3 font-spider 僅適用於固定文本,如果文字內容為動態可變的,新增的文字將無法顯示為特殊字體。解決辦法是刪除壓縮后的,將備份出來的還原,重新壓縮。

    font-spider xxx.html 如果不添加options,會默認備份原文件。
    font-spider會將頁面依賴的字體將會自動壓縮好,原 .ttf 字體會備份;

    如需再次壓縮,還原.ttf字體文件,修改html文字之后,再次運行font-spider即可。

  • 4 如下:
    img

    這個報錯就是Quarto A沒有對應字體包,我查過這個字體是類似於base64那樣形式的字體,所以不存在引入文件。
    所以如果不想壓縮某個字體包的話,就先注釋其font-face。

  • 5 一旦壓縮一次后,再壓縮別的是沒用的。

    比如說,我在一個文件夾里壓縮了字體,然后生成了新的字體包,我又在另一個文件夾里壓縮字體,這兩個文件夾的字體共用一個字體包和font-face,所以再次壓縮的就是上一個壓縮字體包進行壓縮的,所以導致頁面中有的字體沒有轉化過來。

    解決辦法:一個命令行壓縮所有

     font-spider file1/*.html file2/*.html file3/*.html
    

    這樣即可,*.html代表通配符,分析所有html格式的文件,多個文件就直接在后面加上。

    我最大的坑就是這個,沒仔細看官方文檔,認為只能一次性,浪費了好多時間,wtf。

總結

字蛛是一個很好用的字體壓縮包,將十幾M的字體包變成了多少k的字體包,減少了容量,提高了性能,優化了用戶體驗,推薦!

我把筆記放到GitHub里了,如需要可以去看看,有什么不對的地方,歡迎指正,大家一起進步加油。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM