Font Awesome 5 の SVG を使う

Font Awesome は通常、CSS ファイルから専用のフォントファイルを読み込み、CSS クラスを利用してアイコンを利用する。

このサイトでも RSS フィードのアイコンや GitHub のアイコンなどを利用したくなったのだが、Font Awesome のアセットをまるごと読み込むと重たいので、インラインに、SVG で埋め込めないか調べてみた。

Font Awesome 公式の GitHub リポジトリを見ると、svgs/ ディレクトリ配下に全てのアイコンの SVG ファイルがあるので、ココからお好みのアイコンのファイルをダウンロードする。

SVG を HTML ファイル内にインラインに埋め込むなら、ファイルの中身をコピペするだけ。その際は CSS で fill プロパティを使うとアイコンの色を変更できる。もしくは svg 要素などを直接編集して fill 属性を書き加えてやれば、指定の色に変更できる。

SVG ファイルを img 要素で読み込んだ場合は、CSS での色変更は不可能。予め SVG ファイル内で書き換えておくか、deSVG などのライブラリを使って SVG をインライン展開するスクリプトを組み合わせてやる必要がある。

SVG ファイルを CSS の background-image で読み込んだ場合も色変更不可能。opacity との併用で若干薄く見せたりは可能。

SVG ファイルを CSS の mask-image で読み込む方法もある。コレを使うと background-color で色が変更できるようになる。Chrome では現状 -webkit-mask-image というベンダプレフィックスが必要になり、対応状況がイマイチなので、あんまり使いたくない。

このサイトの場合は background-image で読み込んで opacity で調整するに留めた。気になるようなら fill 属性を SVG に直接指定することにする。