GruntでWebFont作成を自動化

WebFont作成をGrunt.jsで自動化
WebFontを作成するサービスなどには、いろいろあり便利ですが、ちょっとした修正を入れる度にWebFont化するのは面倒くさいです。そこで、grunt-webfontという便利なプラグインがあったので自動化してみました。
ここでは、macにインストールしていきます。
下準備
- homebrew
- node
- grunt
ここらへんをインストールしておいて下さい。
インストール
grunt-webfontのreadmeに沿ってインストールしていきます。 まずはhomebrewでfontforgeとttfautohintをインストールするのですが、 readmeにnodeエンジンを使用するならfontfogeは必須でないとあるので、 ここではttfautohintのみをインストールします。
$brew install ttfautohint
cairo: Unsatisfied dependency: XQurtz
Homebrew does not package XQuartz. Installers may be found at: https://xquartz.macosforge.org
Error: An unsatisfied requirement failed this build.
ただしここでエラーが発生。 エラーメッセージをみると、XQuartz入れろと言われている。 https://xquartz.macosforge.org から落としてきてインストールして再実行するとttfautohintがインストール出来ると思います。
次に本体となるgrunt-webfontパッケージをインストールします。(自分のプロジェクトで実行)
$npm install grunt-webfont --save-dev
これでインストールは完了です。
タスク設定
次にGruntfile.jsにタスクを書いて実行してみましょう。 以下、今回設定した内容。
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'), // package.jsonの読み込み
// Web Font
webfont: {
icons: {
src: 'acms-fonts/*.svg', // svgファイル
dest: 'themes/system/fonts', // 書き出し先
destCss: 'themes/system/less', // スタイルの書き出し先
options: {
font: 'acms-fonts', // ベース名 (ファイル名など)
engine: 'node', // エンジン
hashes: true, // ファイル名にランダム文字列を追加
stylesheet: 'less', // スタイルシートの形式
htmlDemo: true, // htmlを生成するか
templateOptions: {
baseClass: 'acms-icon', // ベースクラス
classPrefix: 'acms-icon-' // クラス名プレフィックス
},
// クラス名のリネーム
rename: function(name) {
return name.replace(new RegExp('^.*CS5_'), '');
}
}
}
},
// 監視
watch: {
files: ['acms-fonts/*.svg'],
tasks: ['webfont']
}
});
// プラグインのロード
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-webfont');
// デフォルトタスクの設定
grunt.registerTask('default', ['watch']);
};
オプション
基本的にはsrcとdestを設定すれば動きますが便利なオプションがあるので 今回設定したオプションをいくつかメモを残しておきます。
engine
フォント生成のエンジンを設定できます。fontforge or node 今回はfontforgeをインストールしなかったのでnodeを選択(デフォルト:fontforge )
hashes
この設定がONだとファイル名にランダムな文字列をつけて生成してくれるので、 キャッシュがされないように出来ます。(デフォルト:TRUE )
stylesheet
スタイルシートのタイプを選択。css, sass, scss, lessなどが選択できるみたいです。(デフォルト:css)
htmlDemo
生成したフォントの一覧をHTMLで出力してくれます。確認に便利。(デフォルト:TRUE )
rename
基本的にはファイル名からフォントのクラスを生成するのですが、 このオプションを使う事により、クラス名を変更できます。今回は余分な文字列を削除するのに使用。
という事でgrunt-webfontのメモでした。