最近のブラウザーではlocal()
を使ってフォント・ファミリーのショートカット(的なもの)を作ることができる。CSS Fontsモジュール仕様のsrc
プロパティーの項にも思いっきり書いてあるんだけど、今まではそんなに必要なかったのであまり使われていない。5ウェイト展開なヒラギノ角ゴのiOS 7へのバンドルと、3ウェイト展開の游ファミリのWindowsへのバンドルにより必要性が少し増えた気がする。
特に游(ゴシック|明朝)はWindows 8.1とOS X 10.9でファミリ名が違う上、少し古いFirefoxでのアレとか、OS Xには細字がないとかもあるので、色々考慮するとfont-family
プロパティーではややこしいフォント指定を行う必要が出てくる。そうやって出来た長いリストのfont-family
は読みづらく、デバッグのしづらさにつながる。local()
を使ってフォント名を作り直してやることにより、多少は読みやすくデバッグできるCSSが書けると思う。
今後使うこともあるであろう、body
要素でヒラギノ角ゴか游ゴシック、h1
要素でヒラギノ角ゴか游ゴシックの細字を使うケースを例にしてみる。まずは普通に書く。
body {
font-family: "Hiragino Kaku Gothic ProN", "游ゴシック", "Yu Gothic", sans-serif;
}
h1 {
font-family: ".HiraKakuInterface-W2", "游ゴシック Light", "Yu Gothic Light", sans-serif;
font-weight: 300;
}
使いたいフォントをそれぞれのルールセットで直接指定するだけの普通の書き方。だが、フォント・ファイルそのものやブラウザーの実装がしっかりしていたら本来は必要のないはずの冗長なファミリー指定で、あんまり美しくないCSSだと思う。
@charset "UTF-8";
@font-face {
font-family: "MySansSerif";
src: local(".HiraKakuInterface-W2"), local("游ゴシック Light"), local("Yu Gothic Light");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: "MySansSerif";
src: local("Hiragino Kaku Gothic ProN"), local("游ゴシック"), local("Yu Gothic");
font-weight: normal;
font-style: normal;
}
body {
font-family: "MySansSerif", sans-serif;
}
h1 {
font-weight: 300;
}
@font-face
定義でMySansSerifというフォント・ファミリーを新しく作るとすると以上のようになる。local()
で使いたいフォントを並べて(スタックはしないので順不同)指定しておくと、body
要素のみでファミリー指定するだけで良くなる、というわけ。h1
要素ではウェイトの指定のみになりすっきり。@font-face
定義は別に管理すれば良いので、body
やh1
要素のルールセットの読みやすさは格段に上がる。Sassユーザーならパーシャルにして使い回しすることもでき、生産性を上げるのに助けになるはず。
読みやすいかどうかが@font-face
定義の文法をきちんと知っているかどうかに依存するので、一般的に読みやすいかというと……。今のところは「ただダラダラと並べるだけでなく、こういう書き方も出来ますよ」程度に覚えておくくらいで良さそう。