Category : XHTML/CSS

previous entry 数で合理的にデザインする - サイズ編 | 数で合理的にデザインする - カラー編 next entry

font-size指定

Date2007-03-10 Trackback0 Comment0 CategoryXHTML/CSS Tags,

数で合理的にデザインする - サイズ編 で少し書いたfont-sizeについての補足です。

どのくらいの文字サイズで見られているかは,ブラウザとその設定によってまちまちです。でも,せめてデフォルトの状態では意図したレイアウト,フォントサイズで見てもらいたい,という願いもないわけではありません。font-sizeの指定をどうするか,ちょっと考えてみました。

font-sizeは%で

font-sizepx,pt,inなどで絶対指定すると,Win IEで文字サイズの変更が出来なくなるのをご存じの方も多いでしょう。文字サイズを固定してしまうのはアクセシビリティ上少々問題があります。font-sizeem,ex,%で相対指定(基準になるものとの比率で指定)するのがよいとされています。

Win IE6には,font-sizeem,exで指定した場合のバグがあるようです。

それでぼくは,問題の少ない%を使って指定するようにしています。

  • font-sizeの値は継承されるので,祖先要素をたどっていって最初に出てくる指定が継承されていることになります。
  • %で指定した場合は「親要素のフォントサイズ」を基準として計算されます。
  • 最初の基準はブラウザに設定した標準文字サイズになります。たいがいのブラウザはデフォルトで16pxになっています。

90%と指定した要素の祖先要素に90%の指定があり,そのさらに祖先要素に90%があれば0.9 × 0.9 × 0.9 = 0.729,最初の基準の0.729倍になるわけです。

ブラウザによって同じサイズにならないことがある

ブラウザによって微妙にフォントサイズが違ってくることがあります。確かめるために font-size のページを作ってみました。

<span style="font-size: 100%;">あいう亜以宇abcABC012 :100%</span><br />

これを1%きざみに50~200%まで並べただけのものです。代表的ないくつかのブラウザで表示させてみました。文字サイズが1pxずつ変わっていく様子が分かります。%で指定しても表示する際はpxの整数値に計算し直されているようです。その変わり目の数値がブラウザによって違うことも分かります。

capture:Mac Firefoxでの表示100%と99%のところが境目になっています。93%,87%でサイズが小さくなります。

capture:Win Operaでの表示Mac Firefoxと同じです。99%,93%,87%でサイズが小さくなります。

capture:Mac Operaでの表示これも上の2つと同じです。

capture:IE6での表示上の3つとはサイズが小さくなるところが違います。96%,90%で変わります。

capture:IE7での表示IE6と同じです。

capture:Win Firefoxでの表示IE6,7では96%だったところが97%になっています。

capture:Safariでの表示IE6,7と同じです。

たとえばfont-size: 86%;とした場合,16px × 0.86 = 13.76px となりますが,このときの端数の処理がブラウザによって違うようなのです。

  • Mac Firefox2,Win Opera9,Mac Opera9は端数を切り捨てて13px。
  • Win IE6,7,Win Firefox2,Safari2四捨五入して14px。

Win Firefox2も四捨五入のようですが,Win IE,Safariとずれた箇所が出ます。このずれの原因は特定できないのですが。 97%96.5%(四捨五入して97%になる最小値)として計算してみるとWin Firefox2の結果に一致しました。

ブラウザごとの差異が出ない%での指定値

これらの結果から,表示させたい文字サイズ(px)とブラウザごとの差異が出ない%での指定値を対応表にまとめてみました。

表示文字サイズとセイフティな%指定値
文字サイズ(px) セイフティな指定値(%)
32px 200~203
30px 188~190
28px 175~178
26px 163~165
24px 150~153
22px 138~140
20px 125~128
19px 119~121
18px 113~115
17px 107~109
16px 100~103
15px 94~96
14px 88~90
13px 82~84
12px 75~78
11px 69~71 *
10px 63~65 *

* IE6, 7では,文字コードをUTF-8以外の日本語コードShift_JISEUC-JPにするか,font-familyで最初に日本語フォントを指定しないと,日本語フォントが指定どおりの大きさになりません。(この例の場合12pxになりました)

%による指定値は整数となるようにしましたが,88.5%というふうな指定も可能です。表内にないサイズやさらに詳しい値を計算したい方は以下を参考にしてください。

  • 切り捨てても四捨五入しても同じ値になるのは小数点以下の端数が.0以上.5未満の場合です。
  • 指定したい文字サイズ ÷ 標準文字サイズ = min
    ( 指定したい文字サイズ + 0.5 ) ÷ 標準文字サイズ = max
  • min以上max未満の値を指定すればよいことになります。

body要素でfont-size: 90%;として14pxにし,メニュー部分はさらに小さい13pxにしたいときは,「0.9 × 新しい指定値」の値が0.82~0.84の間になるようにしてください。0.92(92%)や0.93(93%)なら大丈夫です。

これはあくまで,ブラウザの標準文字サイズが16pxに設定されていて,表示文字サイズが標準(中)の場合の話です。これらの設定が変更されたブラウザでは期待通りのフォントサイズにならないことは承知しておいてください。

関連

Trackback (0)

Trackback URL :
http://blog.d-spica.com/MT/mt-tb.cgi/29

Comments (0)

Add Comment

Search

RSS feed

あわせて読みたい

あわせて読みたいブログパーツ

Contact me

  • My status Skype : webmugi

Technorati

Validation

  • Valid XHTML 1.0 Strict
  • Valid CSS!

Top