Section 8 : フォントを変える

 ひとつの文書にさまざまなフォントの文字があると,統一感などはどうであれ,華やかである。CSS でもフォントの指定はできるが,そのフォントがはたして相手側のシステムに存在するのかという問題がつねにつきまとうことになる。

フォントの種類:font-family 属性

 フォントの種類を指定するのは font-family-属性である。

font-family: (フォントファミリ),(フォントファミリ), ... ;

font-family 属性は複数の値をとることができ,それらは半角カンマで区切られる。また,あらゆる要素について適用される。

 (フォントファミリ)は,フォントファミリ名,もしくは後述する一般的なフォントファミリである。ここで,フォントファミリとは,同様のデザインを持つフォントの集まりであり,たとえば,“Times”というフォントファミリには,正体,ボールド体,イタリック体などがあるが,いずれも“Times”のフォントファミリに属している。

 たとえば,“Roman”というフォントにする場合は,次のようになる。

font-family: Roman;

 ただし,フォントファミリ名が空白を含む場合,引用しなければならない。

font-family: "Times New Roman";

 HTML 要素を示すタグの STYLE 属性の値とする場合,二重引用符を使うと属性値が終わってしまうから,かわりに単一引用符で引用する

<SPAN STYLE="font-family: 'Times New Roman';">

 フォントを指定しても,相手側のシステムにそのフォントがないかもしれない。また,指定したフォントにない文字が文中に含まれていて,それをほかのフォントから“借りて”こなければならないかもしれない。そのようなときに,font-family 属性に複数の値を与えて解決を試みることができる。

 このとき,簡単には,はじめに書かれたフォントが優先して使われる。

 たとえば,“Helvetica”というフォントを使いたいのだが,相手側システムにない場合はかわりに“Arial”にしてもよい,という場合はこのようになる。

font-family: Helvetica, Arial;

 また,“Times New Roman”で書きたいのだが,ところどころに“Symbol”というフォントでないと存在しない文字があるという場合はこのようにする。

font-family: "Times New Roman", Symbol;

 このように書いたとしても,まだ“フォントがない”という状況になるかもしれない。“どうしてもない”場合はブラウザの標準フォントが使われるが,“どうしてもない”前に“だいたいこんなフォントです”と言っておけば最低限のデザインは伝えられる可能性がある。

 IE3  font-family 属性の指定のしかたは CSS の規格と異なっており,属性値全部を引用しなければならない。

一般的なフォントファミリ

 フォントを分類するというのは難しいのだが,CSS では便宜的に 5 つの大まかな分類をし,それを一般的なフォントファミリとしている。

serif
セリフ体。“Times”,“Times New Roman”,“Minion Web”に代表される。“明朝体”もこれに入る。
sans-serif
サンセリフ体。“Helvetica”,“Arial”,“Vernada”,“Gill Sans”などに代表される。“ゴシック体”はこれに含まれる。
cursive
草書体。スクリプト体はこれに含まれる。“Zapf-Chancery”に代表される。
fantasy
ひじょうに装飾的なフォント。“Western”に代表される。
monospace
等幅フォント。“Courier”,“Courier New”に代表される。日本語の等幅フォントはこれに含めてよい。

 フォントを指定するときは,カンマで並べた最後にこの 5 つの中から指定しておこう。そうすれば,相手側のシステムへの配慮にもなるし,書き手の意思もある程度は伝わることになる。

 フォントを変える例を見てみよう。もし,例に示したフォントがあなたのシステムにない場合,最後の“一般的なフォントファミリ”がどのようにはたらくかも確認しておこう。

<P STYLE="font-family: 'Times New Roman', serif;">The value of "font-family" is "Times New Roman" or "serif" here.</P>
<P STYLE="font-family: 'MS ゴシック', Gothic, sans-serif;">この段落は“ゴシック体”が指定されています。</P>
<P STYLE="font-family: Zapf-Chancery, cursive;">Cursive font: "Sosho-tai."</P>
<P STYLE="font-family: 'Courier New', Courier, monospace;">The font-family of this paragraph is "Courier", i.e. monospace font.</P>

The value of "font-family" is "Times New Roman" or "serif" here.

この段落は“ゴシック体”が指定されています。

Cursive font: "Sosho-tai."

The font-family of this paragraph is "Courier", i.e. monospace font.

 日本語フォントの場合は,“一般的なフォント名”では事足りない場合が多い。文字化けやひどいときには表示すらされないこともあるので,システムなどに応じて可能性のあるフォント名をカンマで並べて丁寧に指定するようにしたい。たとえば,

font-family: "MS Pゴシック", Osaka, "MS ゴシック", Gothic, sans-serif;

 あまり一般的でないフォントを使うときはさらに注意が必要である。

 “指定されたフォントファミリ中にない文字は,属性値並びの次のフォントファミリが試みられ,ついに属性値並びから見つからなければブラウザ既定のフォントファミリになる”ことから,正しい CSS の実装では,欧文フォントのみを指定しても 2 バイト文字はブラウザ既定のフォントになるはずである。しかし,IE3 および IE4 では,欧文フォントのみの指定は 2 バイト文字が化けることがあるので,2 バイト文字が出てくる場合には日本語フォントを指定するほうが安全であろう。