このページの中身

文字の骨格

同じ16pxでも、書体が変わると大きさが変わって見えます。理由は骨格にあります。

文字の各部の名称を、Hxdpの4文字に基準線を引いて示した図
図を大きく見る
図の中身を文字で読む
  • アセンダーライン
  • キャップハイト(大文字の高さ)
  • x-height(小文字の高さ)
  • カウンター(字の内側の空間)
  • Hxdp ベースライン(文字が乗る線)
  • ディセンダーライン
  • x-height が高い書体ほど、同じ級数でも大きく見える。
  • CSS の font-size は「em ボックスの寸法」であって、字面の大きさではない。だから書体を変えると見た目の大きさが変わる。
  • 和欧混植では、欧文の x-height が低すぎると欧文だけ沈んで見える。

ひと目で#

ベースライン
文字が乗っている線。揃えの基準はここ
x-height
小文字の高さ。同じ級数でも大きさが違って見える、いちばんの原因
キャップハイト
大文字の高さ
アセンダー / ディセンダー
b や p が、基準線を上下に超える部分
カウンター
字の内側の空間。狭いと小さなサイズで潰れる
em
その書体の指定サイズと同じ幅の単位。字間はこれで指定する

使い分け#

こう困ったら見るところ
書体を変えたら文字が小さく見えるx-height の比率が違う
和欧混植で欧文だけ沈んで見える欧文の x-height が、和文の字面に対して低い
小さなサイズで字が潰れるカウンターが狭い。または太いウェイトを使っている
ボタンの文字の下が切れるディセンダーの領域を、高さの計算に入れていない
アイコンと文字の高さが合わないベースラインではなく、中央で合わせる
字間が級数によって広く見えたり詰まって見えたりするpx ではなく em で指定する

「同じ16px」を実際の2書体で並べると、差は説明より先に見えます。

同じフォントサイズのGeorgiaとVerdanaを同じベースラインに並べ、x-heightの差で見た目の大きさが変わることを示した図
図を大きく見る
図の中身を文字で読む
  • 同じ font-size を指定しても、同じ大きさには見えない
  • Type Type
  • 共通のベースライン
  • Georgia x-height が低い Verdana x-height が高い
  • 同じ指定でも小さく見える 同じ指定でも大きく見える
  • font-size は em ボックスの寸法で、字面の大きさではない。書体を替えたら、見た目の大きさを目で合わせ直す。
  • 代替書体との差は font-size-adjust で補正できる。

間違えやすいところ#

ボタンの高さを文字サイズから決め打ちしてディセンダーが切れる例と、min-block-sizeとpaddingで組んで切れない例の比較
図を大きく見る
図の中身を文字で読む
  • ✕ height を文字サイズから決め打ち ○ min-block-size と padding で組む
  • 行ボックスの下にはディセンダーの領域がある 高さは中身が決める。どの書体でも切れない
  • 送信 Sign up 送信 Sign up
  • g と p の下が切れる min-block-size: 2.75rem; padding-block: 0.75em;
  • ボタン・入力欄・バッジの高さは固定しない。利用者が文字を拡大しても、書体が代替に落ちても、切れずに伸びる。
  • アイコンを添えるときは、ベースラインではなく中央で合わせる(inline-flex + align-items: center)。

実装#

このコードで動いている見本です

直す例#

架空の案件を1つ例にとります。どこを見て、何をどう直すかを書きます。

例として、予約ボタンの「y」の下が切れている、と実機確認で指摘されました。ボタンの高さを文字サイズから直接計算していたのが原因です。文字の下にはディセンダーの領域があり、行ボックスの高さは書体ごとに違います。高さの決め打ちをやめ、min-block-size と padding で組み直すと、どの書体でも切れなくなります。

同じ確認で「英数字だけ小さく見える」も挙がりました。級数は全行で揃っています。欧文書体の x-height が和文の字面に対して低く、沈んで見えていました。直すのは級数ではなく、書体の組み合わせのほうです。

コピーする#

アイコンと文字は、ベースラインではなく中央で合わせます。

このコードで動いている見本です

確認する#

このページで扱う語#

このページで扱う語を並べる本文では太字5 語

語の名前から引くなら用語索引へ。

アセンダー
b、d、f、h、k、l などの小文字が、x-height を超えて上へ伸びる部分。
ディセンダー
g、j、p、q、y などの文字が、ベースラインより下へ伸びる部分。
エム・エン
em はその書体の指定サイズと同じ幅の単位、en はその半分。相対的な寸法の基準になる。
合字
隣接する複数の文字が衝突するのを避けるため、1つの字形に結合したもの。fi、fl などが代表例。
オプティカルサイズ
使用サイズに応じて字形そのものを最適化する仕組み。小さいときは字間を広く線を太く、大きいときはその逆にする。

この話が要る場面#

このページが答えになる、現場の困り事です。困り事の側から探すと、同じ場所に着きます。

同じ級数なのに、書体を変えたら大きさが変わって見える

x-heightが違う。字面の大きさは font-size と一致しない。書体を替えたら級数も測り直す。

このコードで動いている見本です

文字の高さを揃えたのに揃って見えない

ボックスの上端で揃えている。ベースラインで揃える。

このコードで動いている見本です

この場面のほかの困り事と、そのまま貼れる部品は文字を読ませるにまとめてある。逆引きには全188件。

出典#

関連#

この資料は、Webサイトを作るときに引くためのものです。 何のために作ったか。作っているのは AK²Lab。