SVGのアイコン画像を追加したら、自動的にアイコンフォントになってくれるようにする

SVGのアイコン画像を追加したら、自動的にアイコンフォントになってくれるようにする

デザイナーの田中です。

TimeCrowdでは既存のアイコンセットの他に、ほんのすこしですが自作のアイコンも使っています。
たとえば停止ボタンのすこしふくらんだ■なんかも。

SVGのアイコン画像を追加したら、自動的にアイコンフォントになってくれるようにする

つくったアイコンはアイコンフォント(Webfont)にして、アプリの方から利用しているのですが……
アイコンフォントにするのがけっこうめんどうくさいのです。

毎回、既存のアイコンセットとまとめてIcoMoonでアイコンフォント化しているのですが、
これをローカルでアイコン画像を追加したら自動的にアイコンフォントにしてくれるようにしてみます。
オートメーション。

webpackでwebfonts-loaderを使う

…といっても最近は便利なもので、webpackで一発なのでした。
webpackは色々思うところもありますが、こういう目的だととても便利です。

いくつか類似のものはあるようですが、webfonts-loaderを使用させていただきます。

インストール

npm install webfonts-loader --save-dev

設定

GitHubにあった設定そのままではアプリからの読み込みに問題があったため、少々変えました。

webpack.config.js

{
    test: /\.font\.js/,
    use: [
      'style-loader',
      'css-loader',
      'webfonts-loader'
    ]
  }

myfont.font.js

module.exports = {
  'files': [
    'path/to/svg-dir/**/*.svg'
  ],
  'fontName': 'myfonticons',
  'classPrefix': 'icon-',
  'baseSelector': '.icon',
  'types': ['eot', 'woff', 'woff2', 'ttf', 'svg'],
  'embed': true, // 埋め込む
  'fileName': 'app.[fontname].[chunkhash].[ext]'
}

結果

これでIllustratorでつくったアイコンをSVGに出力して指定場所に置くと、
自動的に検知して勝手にアイコンフォントを生成してくれるようになりました!

アイコンフォント化するのがめんどうで心が折れることもなくなりました。

TimeCrowdに戻る