IE7のフォント絡みでこんな話があった
Twitter経由でこんなCSSのフォントサイズに関するバグを教えて頂きました。(バグと呼ぶのか、仕様と呼ぶのかは分かりませんが)発端はfloralさんのこの発言。
IE7で検証した?http://redline.hippy.jp/lab/css/bodyfontsize625.php
以前このブログで書いたこの記事。
>>RedLine Magazine : bodyにfont-size:62.5%を指定すると・・・
内容はbodyに対してfont-size: 62.5%を予め指定しておくと、フォントサイズをemで指定する際、12ピクセル相当なら1.2em、16ピクセルにしたいなら1.6emという風にemを使ったフォントサイズ指定が分かりやすくなるよというものでした。
そしてその記事に対して前述の通り、floralさんのポストからIE7だとなにやらバグがあるということが判明しました。そしてfloralさんがいろいろとヒントを残してくださいました。
floralさんからのヒント
floralさん、モバイルからの投稿にも関わらず、こちらもしつこく「バグですか?」とか「emで指定する方の特定のサイズっすかー?」とか悠長に質問攻めにして、ほんとすみませんでした。ほんでもって結局どういう現象が起こるのか分からないままだったので、調べてみました。
ヒントを手がかりにググりまくる。・・・分からない。自分でサンプルソースを書いて検証しようとエディタで書きかけたまさにその時、究極の助っ人現る。
hamashun先生だー!
hamashun.com のShunさんが今から書こうとしてたソースをサクっと送ってくれました。さすが!仕事が速い!さっそくShunさんのくれたソースをFxとIE7でプレビューしてみる。するとこんな変化が。
フォントサイズを62.5%で初期化した後、sans-serifを指定していると指定していない場合よりもちょっと大きな文字サイズになりました。要素に1.4emやら140%やら、何かサイズを再指定して上書きするとsans-serifがあってもなくてもサイズは同等になるようです。
キャプチャだと分かりにくいかもしれないので、実際に指定を変更したファイル、置いておきます。(技術協力:hamashun.com 適当にソース書き換えてねと言われたものの、ほとんど書き換えてません。サーセン><) IE7でタブを2つ並べてタブをパッパッって切り替えてみてください。「うおっ!ほんとだ!なんかデカさが違う!」っていうのが分かりやすいと思います。
>>62.5%とsans-serif、両方指定
>>62.5%だけを指定(sans-serifを削除)
IE7入れてない方は下記のキャプチャ図で見比べてみてください。左右どちらもIE7でのプレビューなんですが、有と無ではこんな風にサイズが変わりました。sans-serif有の場合だと、少し大きくなってしまうようです。
本当にトリガーはsans-serifだけなんだろうか
と思って他のフォントファミリーもいろいろ試してみましたが、大きな変化は何もありませんでした。(フォントが変わってデカさがちょっと違うっていうのは別にして)やっぱりsans-serifが特別な感じです。
sans-serifの前に他のフォントファミリーを指定していたら
上の例ではフォントファミリーにsans-serifしか指定していないんですが、日本語サイトの場合、sans-serifを指定する前に他のフォントを指定するケース、多いですよね(多分)。というわけでsans-serifの前に他のフォントの指定があったらどうなるのかやってみたところ、問題なくというか普通に意図どおりのサイズになりました。(デカくならずマメみたいなサイズのまま)
但し当然、そのsans-serifの前に指定したフォントが閲覧する人のパソコンに入ってなかったら、sans-serifが適応されるっつーことで、やっぱりサイズは変わります。例えば、winには元々ヒラギノ角ゴとか入ってないのに、ヒラギノとsans-serifしか指定してない場合などはこの不思議挙動に巻き込まれます。
んじゃ、どこからサイズが変化するのか
次に文字サイズの方に注目。62.5%だからsans-serifが反応するのかどうかの実験。100%から順に確認していきました。100%、90%、80%、70%、ここまではsans-serifを指定してもしていなくても何も変化はありませんでした。
問題の60%台に突入。69%、68%、67%、66%、ここまでは大丈夫。そして65.9%になった瞬間、大きな差が出ました。上のキャプチャのようにsans-serifを指定していない方は小さくなります。
文字サイズ65.9%以下、尚且つsans-serifしか指定してないケースに当てはまる事例がいくらあるかとか、サイズを上書きせずにそれを使うケースがあるのかとか、いろいろ疑問もあるのだけれど、例えば画像の側に「写真はイメージです」みたいに書いてある場所で結構文字サイズ小さいページもあるなーとかふと思いついたり。でもそこでIE7だけテキストがちょっと大きくなって困る事もないような・・・。
んじゃ、もしかして、floralさんがおっしゃってるバグって全然検討違いなんじゃね?とか思ったのは内緒。(な、なんだってーー!)もしかするとVista版のIE7だと何かまた違った表示になるんだろうかとも思ったんですが、手元にVista機がないので確認できませんでした。
文字サイズemにまつわるIE6のこんな話も
IE7からは少し離れるんですが、こんな話もあるよとShunさんから頂いたurl。
>>em単位で指定した値が文字サイズ変更後に正しく反映されない(IE6)
上記ページにあるようにemで文字サイズを指定した場合のIE6の挙動がおかしいというバグがあります。今回の件と何か関係あるのかなと思ったんですけど、「なお、祖先要素でfont-sizeプロパティを%値や絶対単位の値で指定することで不具合を回避できます。
」と書かれていたので、今回の場合bodyにちゃんと62.5%を指定している事からこれは関係なさそうだね、というところで決着。
ちょっとまて、IE6でも怪しいぞ
何気にIE6で確認したらこっちもおかしいじゃん><
気になって他ブラウザでも確認する。が、NN、Opera、Safari3ではFx同様、文字のサイズに変化はなし。IE得意の「仕様」という名前の現象なんだな、これはきっと。
実はせっかく今回こういう機会があったので、今までIE7はStandalone版を使ってたんですが、検証するのに正規版じゃ挙動がチガイマスよーじゃ困るということで思い切ってメインマシンに正規版をインストールしました。上でIE6でもおかしいと書いたのはIE6のStandalone版と別マシンでの正規版でも確認済み。IE7もStandalone版、正規版共に同じ表示になるのを確認しました。
まとめ
一応調べた結果をこうして公開してみますが、floralさんのおっしゃってたバグがこれなのかどうか分かりません。何か他にこういうのがあるんだよとかあれば誰か教えてください。いえ、むしろ心境的には助けてくださいに近いものが…。
まぁ、それは別して今回調べたみたいな挙動もあるよーということでマメ知識。
- フォントサイズ65.9%以下とsans-serifを組み合わせるとIEで文字サイズが他ブラウザと異なる事がある。
- 但し、フォントサイズを再指定してスタイルを上書きすると、その挙動の発生は抑えられる。
- フォントファミリーに指定した他の優先されたフォントがある場合、sans-serifが指定されていても問題ない。
- 再指定するフォントサイズはemでも%でも大丈夫。
- レアだと思うけど、もしこのケースみたいに何か条件が揃ってIEだけ文字サイズが違うみたいなケースに出会った時は「こ、これはIEの『仕様』だろうな」と考えてみる。
- 他ブラウザでは特に問題なし。
よーし。これ投稿したらfloralさんに「これですかー?」って聞いてみるぞぃ!
<< 気になった初期化CSS | 半透明ボックスに関するメモ >>
トラックバック
このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/169
コメント (6)
こんにちは。
他のブラウザと文字の大きさが少し違ってたからといって困る人はいないし、毎回違うブラウザでサイトを見る人っていないと思うので、どのブラウザでもほぼ同じ大きさ(今回の場合も許容範囲!)だったら気にしなくていいと思うのは僕だけ?
僕はYUI CSSを使ってfontサイズを統一しても直らない場合は放置してますよ:p。
投稿者: johannes | 2007年09月28日 15:28
>johannesさん
コメントありがとうございます。
確かにおっしゃるとおり、許容範囲内なら問題ないと私も思います。別にユーザーの情報把握ができなくなるわけでもないですしね。
YUIのreset.cssは便利ですよねー。あれが出たときにソース見て、初めて初期化する要素を全称セレクタじゃなくて個別の要素を使う方がいいのかもっていう発想にたどり着きました:-)
投稿者: Red | 2007年09月28日 15:51
10/16=0.625ですが、ブラウザのデフォルトフォントサイズが16pxとは限らないという根本的な問題がある様な気がします。。
投稿者: hal* | 2007年11月25日 13:10
>hal*さん
コメントありがとうございます。
各ブラウザのデフォルトのフォントサイズなんですが、こちらのページにまとめられてました。
http://bowz.info/641
古めのブラウザでは若干ばらつきがあるんですが、最近のブラウザではほぼ同じようなサイズになっているようです。
当然個々の環境によってサイズは微妙に変わってくると思うんですが…。まぁ1つの考え方ってことで(n'ω'n)
投稿者: Red | 2007年11月25日 13:52
ご返信ありがとうございます。問題の現象なのですが、よく見ると半角英数については正常な挙動なんですよね。IEでの日本語フォントの指定は書き方によって効かなかったり継承されなかったり色々悩ましいですね(>_<)
考え方なのでしょうが、medium=100%=16pxというのは96dpi環境で12pt=英字活版新聞の本文サイズに由来していると思うんですね。これに対して日本の活字の本文サイズは5号活字=10.5pt=14px(@96dpi)ということで、ブラウザの初期設定値だと大きすぎる?と感じる方が多いはずなんです。そこで昔はNNとかNCならブラウザのフォント設定を14pxに変更したり、IEなら小にする事で解決できたんだけど、最近はbody=87%と100%のサイトが混在してて不便だな。という問題意識があったりします。
悩ましぃ(+_+)
投稿者: hal* | 2007年11月28日 00:43
>hal*さん
お返事ありがとうございます。
日本語のフォント絡みはホント悩ましいですよね・・・。フォントサイズなどを自分の好みに合わせて環境を変えられるのもwebの特徴だと思うんですが、制作する方からするといろんなケースを考えた上で判断しなきゃならない部分では難しいですよね。
活字のお話、参考になりました。
ありがとうございます(n' ∀ ') η
投稿者: Red | 2007年11月30日 10:32