この記事は、フォントをWebサーバーにアップロードし@font-faceでCSSで指定するときにフォントの格納場所を指定したい、相対パスで指定したいという人に参考になる記事です。
@font-faceの相対パス指定は結構ハマる
@font-faceで相対パス指定するぞーって思って、しているつもりが全然有効にならずに結構ハマりました。
そもそも相対パスの基準はどこ?
相対パスというのは、@font-faceを記述しているCSSからの相対位置になります。
もし、子テーマのstyle.cssに@font-faceを追記しているのであれば、子テーマのテーマフォルダの直下にstyle.cssがあれば、そこが基準になる。
相対パス指定の例
もし、子テーマの直下にfontsディレクトリを作成しフォント群をuploadしているのであれば、次のような相対パスになる。
@font-face {
font-family: 'フォント名';
src: url('相対パス指定');
font-weight: normal;
font-style: normal;
}
相対パスがCSS基準であることを理解すればそれほど難しくない。
なぜ相対パス指定でトラブルの?
問題となるのが、テーマの設定などにあるカスタムCSSという箇所に@font-faceを記述した場合にそのCSSが何処にあるのか実は解っていなかった時である。
相対パスの基準が分からなければ指定そのものができないので、自分の場合はそれでハマってしまった。
テーマのCSSカスタマイズの格納場所を確認する方法は?
検証ツールなどで、記述したCSSを表示させて、絶対パスでどこに格納されているのか確認すると、相対パスを決めることができる。
Step1:検証ツールを立ち上げる
Chromeの場合は、右クリック⇒検証(I)か F12を押して検証ツールを起動します。
Step2:@font-face以外のCSSカスタマイズを探す
@font-faceを記述したCSSに含まれるその他のCSSカスタマイズを探します。
Step3:@font-faceのCSSファイルの場所を確認
そのCSSがどのファイルに記述されているのか検証ツールで確認します。
これでCSSカスタマイズのファイルの格納場所がわかったので、その位置を相対位置の基準として@font-faceを指定すればOKです。
有料テーマの特殊な事例
子テーマでCSSカスタマイズしているのにそのカスタマイズの内容が親テーマの場所にCSSとして格納されているケースもありました。
そのようなケースだと最終的に格納されている場所を探さないと相対パス指定がうまくいきません。
子テーマの直下にfontsディレクトリを掘って、そこにフォントファイルを置いています。@font-faceを記述したCSSは親テーマのどこかにあって、そこを基準に子テーマのfontsディレクトリを指定しないと認識しませんでした。
@font-face {
font-family: 'フォント名';
src: url('../../themes/子テーマ/fonts/フォントファイル.eot?iwrsx2');
font-weight: normal;
font-style: normal;
}
まとめ
今どきはwebフォントが全盛なのであまりサーバーにフォントファイルをアップロードする場面は少ないかもしれませんが、iconフォントなどを追加で利用したい場合などは結構使う場面があると思います。icomoonでiconフォントに変換してアップロードすることは結構あると思います。
そんな時に相対パス指定がうまくいかない時に思い出してみてください。