Font properties

font-family:

フォントファミリはデザインは共通でも書体(italic, bold等)の異なるフォントの集合体で、5つの一般フォントファミリに分類されています。それぞれの一般フォントファミリに特定のフォントファミリを指定できるUAもあるようです。

一般フォントファミリ名フォントファミリ名表示テスト
serife.g. Times, Times New Roman, 平成明朝 (髭飾り) 日本語 Test
sans-serife.g. Helvetica, Arial, MS Pゴシック (飾りなし) 日本語 Test
cursivee.g. Comic Sans MS, Snell Roundhand (筆記体風) 日本語 Test
fantasye.g. Cottonwood, Studz, DFPPOP体 (装飾文字)日本語 Test
monospacee.g. Courier, Courier New, Osaka−等幅 (等幅)日本語 Test

Initia: UA specificというのは、初期値がWWWブラウザを含めたUser Agent次第ということです。フォントファミリ以外の指定をすればそれらも考慮され、前に書いたものから優先的に条件をクリアしたフォントが利用されます。例外的に","で区切る点に注意して下さい。空白類文字を含むフォントファミリ名は引用符で括った方が良いのですが、一般フォントファミリ名はキーワードなので括ってはいけません。

font-family: 'MS UI Gothic', Osaka, sans-serif
font-family: serif, Times, sans-serif /* 間違いではないが、? */
× font-family: "serif" /* キーワードは引用不可 */

WinIE4以降は日本語に欧文フォント(サンプル)を指定しても可能な部分だけそのフォントで表示し、MacIE4以降(HTMLのlang属性を指定すれば可)やWinNC4(ダイナミックフォントを使うか、UTF-8で符号化すれば可)は日本語ページの欧文フォント指定を無視するので気付きにくいですが、環境によっては全角部分が文字化けします。Generic font familyを全角文字に使うのもしばらくは避けて下さい。それと、日本語のフォントファミリ名は要注意です。

キーワードを引用符で括っても認識してしまうブラウザもありますが、引用符で括ってもよいのはCSSの制御下にない文字列(URI, フォントファミリ名)のみです。キーワードを引用符で括った場合、仕様上は不正な値として無視されます。

CSS2: 英語と日本語の混在するような文章に関しても記述がある。次のような指定をすれば、英語は専用のフォント、日本語は明朝体を利用させることが出来る。日本語フォントにはラテン文字も含まれているので、指定の順番が重要。CSS1では、フォントに要素内のある文字が含まれていなければ次の候補、次の候補がない場合はUA標準という処理(CSS1でも、参考情報として同様の記述がある)。

<BIG style="font-family: 'Comic Sans MS', Chicago, Impact, 'MS P明朝', '平成明朝', serif">ABCDEFG 日本語</BIG>→ABCDEFG 日本語

font-style:

normal, italic, obliqueの3種類があります。IE3はnormal不可。obliqueはIE4以降, Netscape6でサポート。obliqueはオブリーク体(フォントファミリの通常体を傾けた書体)が存在しなければ通常体を傾けるだけでも良く、italicはイタリック体が存在しなければオブリーク体で代用可とされています。obliqueはitalicと同じに扱われることが多いようです。

<I style="font-style: normal">normal</I>→normal
<SPAN style="font-style: italic;font-family: sans-serif">Test</SPAN>→Test
<SPAN style="font-style: oblique;font-family: sans-serif">Test</SPAN>→Test

font-variant:

normal, small-capsの2種類が指定可能です。small-capsにすると、MacIE5やNetscape6では小文字が特徴の異なる小さな大文字で表示されます。それでも良いことにはなっているのですが、MacIE5, WinIE6以外のIEは大文字になるだけです。

<SPAN style="font-variant: small-caps">Small-Caps</SPAN>→Small-Caps

font-weight:

通常とみなされている濃さに400(normal)を割り当てます。bold(=700), bolder, lighter, 100, 200, ... 900のように指定することもできますが、実際に使えるのは少ない(フォントによって異なる)です。bolder, lighterは親要素からの継承値よりも一段階濃く、薄くする指定です。

フォントはComic Sans MSで、左が親要素normal、右は親要素boldです。NC4はISO-8859-1で符号化しました。

IE3IE4NC4
IE3 親要素normalIE3 親要素bold IE4 親要素normalIE4 親要素bold NC4 親要素normalNC4 親要素bold

font-size:

初期値はmediumです。キーワード(CSS1では1.5倍、CSS2では大きすぎたという理由で1.2倍間隔が推奨されている), 親要素からの継承値に対する相対的な指定, 長さと指定の方法は色々あります。負の値は不正です。

IE3は解釈が滅茶苦茶で、em, exを使うと対応していないので読めなくなります。%の処理もいい加減で、見出しに指定するとデフォルトのサイズを基準に計算してしまいます。

NC4は、pt, cmなどで絶対的なサイズを指定しても、「フォントを大きくする」「フォントを小さくする」でサイズが変わるのですが、pxだけは変わりません。line-heightも同時に指定する時は、pxと他の単位の組み合わせは避けて下さい。NC4も相対的な指定に関しては信頼性が高くありません。

※Mac OS 8/9の日本語フォントOsakaなら、 ビットマップデータの用意されている9, 10, 12, 14, 18(px)の方が、アウトラインデータから描画される他のサイズより、小さいサイズでは奇麗に見えるといったように、フォントサイズの指定はかなり難しいです。長文のフォントサイズは、「読者に任せる」ことをお勧めします。MacIE5は和文フォントの場合は自動的に品質の良いサイズに丸めるので、デフォルトのフォントサイズは16pxなのですが、実際には14pxが使用されます。[ 詳細 ]

キーワードによる指定をテスト ( デフォルトの場合 )

xx-smallx-smallsmallmediumlargex-largexx-large
Win IE4/57.5pt10pt12pt13.5pt18pt24pt36pt
Win NC46pt8pt10pt12pt18pt27pt40pt
Win N68.5px10px13px16px18px24px32px
Mac IE49pt10pt12pt14pt18pt24pt36pt
Mac NC46pt8pt10pt12pt18pt27pt40pt

[ デバイス解像度が72dpiなら、MacNC4のxx-smallは6ドットですので、判読は困難です。 MacIE5, WinIE6は、互換モードではCSS1、仕様準拠モードではCSS2の倍率を前提にしているようです。参考 ]

キーワードによる指定
xx-smallx-smallsmallmediumlargex-largexx-large
テスト
serif
sans-serif
monospace
テスト
serif
sans-serif
テストテストテストテストテスト
<DIV style="font-size: 10pt">
<SPAN style="font-size: 120%">テスト</SPAN> <!-- 12pt -->
<BIG style="font-size: 1.4em">テスト</BIG> <!-- 14pt -->
<BIG style="font-size: larger">テスト</BIG> <!-- UA依存 -->
</DIV>
<DIV style="font-size: small">
<BIG style="font-size: larger">テスト</BIG> <!-- medium -->
<SPAN style="font-size: medium">テスト</SPAN> <!-- medium -->
<BIG>テスト</BIG> <!-- UA依存(larger, 1.17emなど) -->
</DIV>
<DIV style="font-size: 95%">
<SPAN>相対<SPAN>的な</SPAN>指定</SPAN>
</DIV>

親要素のフォントサイズがsmallなら、largerを指定するとフォントサイズはmediumになります。親要素が長さで指定されている場合、UAの処理に依存します。

最後の例では、相対的な指定をする場合に共通することですが、計算後の値を継承します。95%を引き継いでどんどん小さくなっていくのではなく、DIVでサイズは親要素の95%に確定し、その値が引き継がれるので同じ大きさになります。

font:

フォントに関する指定を一括して行えます。font-size, font-family以外は省略可能で、省略した属性は初期値にリセットされます。

以下の式で、[]はグループ化です。||は、そのうち少なくとも1つが任意の順番で現れなければならないこと、?は0回もしくは1回の出現を現します。それ以外は、文字通りに出現しなければならなりません。つまり、<'font-style'>, <'font-variant'>, <'font-weight'>の中から順不同で少なくとも一つは出現しなければならないのですが、グループ自体オプションなので省略可能です。<'font-style'>というのは、font-style属性に指定可能な値という意味です。

[ <'font-style'> || <'font-variant'> || <'font-weight'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'>
<DIV lang="en" style="font: italic bold 12pt/18pt 'Times New Roman', serif">
<DIV lang="en" style="font: 10pt Verdana, sans-serif">
</DIV>
</DIV>
<DIV lang="en" style="font: italic bold 12pt/18pt 'Times New Roman', serif">
<DIV lang="en" style="font: normal normal normal 10pt/normal Verdana, sans-serif">
</DIV>
</DIV>
<DIV lang="en" style="font: italic bold 12pt/18pt 'Times New Roman', serif">
<DIV lang="en" style="font-size: 10pt;font-family: Verdana, sans-serif">
</DIV>
</DIV>

NC4はline-heightを、IE3, MacIE4以降は全くリセットしません。また、IEは不正な値の扱いが不正なので注意して下さい。

これらの属性は継承するので、デフォルトのスタイルをBODYに設定しても良いのですが、特定のUAでは文書の体裁が失われます。