第 362 篇 · 第 14 卷 前端,沒有極限 2026 年 7 月 7 日 · 台北
ls -lt ./posts --since=2013 REC · node 362 · uplink

css

自己做web fonts icons

2013 年 10 月 05 日 · 3 分鐘閱讀 · By Wang Casper

承上一篇,本篇會介紹自己做web fonts icons,讓會手癢的設計師可以自行設計web font icon。

先看看成品

g

這次的目標是做出七龍珠裡的一星球,使用的繪圖軟體是illustrator,而製作成web font是http://icomoon.io/app 這個網站。

步驟

繪製向量檔

這是illustrator的畫面,用哪套軟體倒是沒什麼關係,只要能夠轉SVG就可以了,但另外有一個重點,如果有用到線段要記得展開,轉SVG比較不會有問題。

存檔的時候,就選SVG就對了。

SVG選項請調整成SVG Tiny。

開始製作webfont

第一個步驟,就是先打開http://icomoon.io/app 的網頁

把剛剛的檔案匯入到這個網站,選import或是直接拖曵檔案到網頁裡皆可。

SVG都匯入後,就可以點網頁下方的Font,這邊就只有一顆一星球。

接下來可以為每個一icon指定一個符號、英文或是數字,在這邊可以注意到我設定的是g,都確定後就點Download吧。

下載後的壓縮檔裡面有完整的範例檔,基本上只要按照範例檔去設定就可以了。

使用自己做的Web font Icon

由他所提供的範例檔可以得知,它的使用方式有兩種,一種是設定data,而另一種是設定Class。而不論是哪一種都必須載入他所提供的@font-face。

/*@font-face 設定*/
@font-face {
  font-family: 'icomoon';
  src:url('fonts/icomoon.eot');
  src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'),
    url('fonts/icomoon.woff') format('woff'),
    url('fonts/icomoon.ttf') format('truetype'),
    url('fonts/icomoon.svg#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
}

利用Data-icon設定

[data-icon]:before {
  font-family: 'icomoon';
  content: attr(data-icon);
  speak: none;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

這一個的原理是利用CSS的屬性選取器,選則html標籤裡有data-icon屬性的元素,並利用偽元素新增content,而content的內容會對應data-icon的值。如範例我的data-icon的值為"g",就是當時設定的一星球。

利用Class設定

.icon-dragonBall {
  font-family: 'icomoon';
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
}
.icon-dragonBall:before {
  content: "\67";
}

這是他所提供的另一個方式,設定Class他就能將指定的圖形載入,這作法也是比較基本且容易的。

g

而我們也可以單獨把上面的Class拆出來用,直接輸入"g"一樣有效果。

g

相容性誤解

在上一篇的時候,我有說明到 web-font icon的相容性,在此可能要重新說明一下。上一篇所使用的 web font(ligature_symbols) 和本篇的 web font(icomoon.io) 有些不同。ligature_symbols的web font有再利用CSS3的語法(text-rendering)讓單字可以轉為icon;而本篇(icomoon)的是屬於基本款的web font,大部分的瀏覽器都有支援,造成誤會敬請見諒。