FigmaでSVGアイコンを軽量化させつつcurrentColorへ変換しながらエクスポートする
はじめに
FigmaからSVGアイコンをエクスポートするときのTipsです。
デフォルトのエクスポートでは軽量化もされず、currentColor
にも変換されません。
数や頻度が多いとヒューマンエラーの温床になりますし、ほとんどプラグインにおまかせすると人生が楽になります。
前提
アイコンデータそのものの最適化が必要です。
最適化されている基準としては下記のような項目が挙げられます。
- アウトライン化されている
- 単色のアイコンなどで可変となる色(後の
currentColor
)が#000000
の塗りつぶしのみで構成されている - ひとつのオブジェクト(レイヤー)に統合されている
最適化については以下の記事が参考になるかもしれません。
使用するFigmaプラグイン
SVG Exportを使います。
フロー
1. 書き出したいアイコンを用意する
例として下記から拝借しています。
Material Symbols & Icons - Google Fonts
このアイコンを書き出します。
2. レイヤー名を適した形式に変更する
デフォルトではface2
というレイヤー名になっています。
Figmaのデフォルトと同様、今回使うプラグインではレイヤー名がそのままファイル名になります。
アイコンぽい名前にしておきたいので、icon-face2
に変更します。
3. レイヤーを選択し、SVG Exportを起動する
SVG Exportのウインドウ内で選択したレイヤーが表示されます。
Edit presets
のボタンを選択する
4. 5. 三点リーダ(・・・)のアイコンボタンを選択する
Import presets
を選択する
6. 7. プリセットファイルを選択する
設定用JSONファイルを選択します。
下記は私がいつも使っているプリセットファイルです。
各々で設定することもできます。
{
"preset-icon": {
"name": "Icon",
"settings": {
"pretty": true,
"multipass": true,
"floatPrecision": 3,
"layerNamesAsClasses": false,
"useCurrentColorFill": false,
"useCurrentColorStroke": false,
"removeSvgElementFill": true,
"removeFill": false,
"removeFillOpacity": true,
"removeOpacity": true,
"removeStroke": false,
"removeFillRule": false,
"removeClipRule": true,
"moveDefsToTop": true,
"nonScalingStroke": false,
"blackToCurrentColor": true,
"removeXlink": true,
"plugins": {
"removeXMLNS": false,
"cleanupAttrs": true,
"cleanupIDs": true,
"inlineStyles": true,
"minifyStyles": true,
"convertStyleToAttrs": true,
"removeRasterImages": true,
"removeUselessDefs": true,
"cleanupNumericValues": true,
"cleanupListOfValues": true,
"convertColors": true,
"removeUselessStrokeAndFill": true,
"removeViewBox": true,
"removeHiddenElems": true,
"removeEmptyText": true,
"convertShapeToPath": true,
"moveElemsAttrsToGroup": false,
"moveGroupAttrsToElems": true,
"collapseGroups": true,
"convertPathData": true,
"convertEllipseToCircle": true,
"removeEmptyContainers": true,
"mergePaths": true,
"reusePaths": false,
"sortAttrs": true,
"sortDefsChildren": true,
"removeDimensions": true,
"prefixIds": false
}
}
}
}
8. 出力の設定を7のプリセット(Icon)に変更する
さきほどの一覧にもどり、Default
となっている箇所をIcon
に変更します。
黒かった線が白く表示されます。
行を選択すると、SVGの中身を確認できます。
#000000
だった箇所がcurrentColor
に変換されています。
9. アイコンをエクスポートする
Export SVG
ボタンからSVGのデータとして出力したり、コピーのアイコンボタンからはコードでコピーします。
基本的な操作は以上です。
複数のアイコンをまとめて設定、エクスポートする
たいていの場合アイコンはたくさんあるので、まとめて操作したいです。
同様にMaterial Symbols & Icons
から複数拝借しました。
1. 該当するオブジェクト(レイヤーを)選択する
フレーム内のパスを選択しても面倒なので、レイヤーでまとめて選択します。
Shift
を押しながら選択します。
SVG Exportで一覧になります。
Apply preset to all
からIcon
を選択する
2. すべてのアイコンに設定が反映されます。
3. アイコンをエクスポートする
個々でファイルをエクスポートするなりコピーするなりします。
たくさんある場合はExport all
でZIPにまとめてもよいかもしれないです。
まとめ
プリセットファイルはFigmaファイルごとにインポートする必要がありますが、クオリティを保ちながら楽ができるのでおすすめです。
今回のサンプルでは30%程度の軽量化ができました。やったぜ。
Discussion