@kotarokに「ex
単位とかうまく動く?」と聞かれたので、100倍してわかりやすくするテスト・ページを作成した。想定通りうまく動いてくれている。例えばSource Sans Proはx-heightが480とフォント・ファイルそのもので設定されており(FontForgeなどで確認することができる)、フォント・サイズが16pxとすると100ex
は16px * 480 / 1000 * 100
となり768px
に理論上なることになるが、実際に(ほぼ)そうなっている。
Demo: Test ex Unit
基準はArial
とした。赤いバーが左に出ているGeorgiaやCourier New、そしてSource系はArialよりx-heightが低いことになる。逆にVerdanaやImpactは右に出ているのでx-heightが高いことになる。同時にChrome 46やFirefox 42、Internet Explorer 11では既にex
単位が正しい形で実装されていることもわかる。
このテスト・ページではli
要素にインラインでフォントを指定しつつ青くし、幅を100ex
とすることでx-heightに応じて長さが変わるようになっている。そしてその下に赤でArialを指定した100ex
の長さのブロックを擬似要素で作成することでx-heightが低い場合に差がわかるようにしている。また上に赤でArialを指定したcalc(100% - 100ex)
の長さのブロックを擬似要素で作ることで、x-heightが高い場合にも差がわかるようになっている。
赤青鉛筆欲しい。
ではなくて「ex
単位とか何に使うんだ?」という点だ。
僕はline-height: calc(1.25em + 1ex)
(要調整)などはなかなかいい使い道なんじゃないかなと考えている。x-heightにもよって(も)行間の最適値は変わるので、ex
単位を使うことでよしなに調節されることが期待できるはずだ。
ウェブ・フォントが問答無用で使われるかどうかわからない時代になった(コンテント・ブロッカーなど)ため、特定のフォントを想定して行間を決定するのは危険になりつつあるとも考えられる。そうなるとこのような利用の仕方はこれから出てくるだろう。