① まず結論
MacとWindowsでは、最初から入っている標準フォントが違い、さらに「文字を画面に描く仕組み(描画エンジン)」も違います。だから同じCSSを書いても、文字の太さ・行間・改行位置が少し変わります。完全に同じには絶対になりません。
② たとえ話
楽譜と楽器の関係に置き換えると分かりやすいです。
HTML/CSSは「楽譜」。MacとWindowsは「楽器」。同じ楽譜でも、ピアノで弾くかオルガンで弾くかで音色が変わるのと同じで、同じCSSでもOSによって表示される音色(見え方)が変わります。
これは「どちらかが間違っている」のではなく、楽器が違うから当然そうなる、という話です。実装ミスを疑う前に、まずOS差の可能性を頭の片隅に置いておくと、無駄なバグ探しが減ります。
実装ミスより先に、OS差を疑う。
③ 図解で見る
MacとWindowsで何が違うかを並べたもの。
| 要素 | Mac | Windows |
|---|---|---|
| 標準の和文ゴシック | ヒラギノ角ゴ | Yu Gothic UI / Meiryo |
| 標準の欧文サンセリフ | SF Pro / Helvetica Neue | Segoe UI |
| 描画エンジン | Quartz / Core Text | DirectWrite |
| アンチエイリアス | 強めで丸く見える | やや細く見える |
| 同じ指定での印象 | 少し太く・やわらかく | 少し細く・シャープに |
ChromeやFirefoxなどブラウザごとの差も加わるので、完全一致は前提にしないのが安全です。
④ よくある失敗
Macで完璧に整えたカンプを、Windowsで開いたら見出しが2行になった
MacのヒラギノとWindowsの游ゴシックでは、同じ文字数でも字幅がわずかに違うため、改行位置がズレます。「カンプ通りに実装してください」と無条件で言うのではなく、Windowsで2行になる前提のレイアウトを考えておきます。
font-family: 'Hiragino Sans' だけ指定して、Windowsで効かなかった
Windowsにはヒラギノが入っていないので、システムのフォールバックフォントで表示されます。クロスプラットフォームで揃えたいなら、Webフォントを使うか、両OSのフォントを順番に並べたフォントスタックを書きます。
デザインカンプと実装の差を全部「実装ミス」だと思う
1pxの太さや行間のズレは、OSとブラウザの描画の違いから来ることが多いです。ピクセル単位で完全一致を求めるのではなく、「ある程度の差は許容する」基準をチーム内で決めておくと、無駄な手戻りが減ります。
⑤ 実務ではこう判断する
完全一致が必要なら、Webフォントで両OSに同じものを配信
ブランドの主役見出しや、ロゴまわりの文字は、Webフォント(Google FontsやWOFF2のself-host)で同じフォントを両OSに送ると、ほぼ揃えられます。
本文や注釈は「OS別フォントスタック」で十分
本文まで完全に揃える必要はないので、Mac用とWindows用のフォントを順番に並べたCSSを書きます。例:font-family: 'Hiragino Sans', 'Yu Gothic UI', sans-serif;
カンプ作成時に「もう一方のOSでも開く」習慣をつける
Macで作ったらWindowsでもざっと見る、Windowsで作ったらMacでも見る。これだけで「実装後に初めて気づく差」がぐっと減ります。
⑥ 用語メモ
- フォントスタック
- CSSの font-family に複数フォントを並べた指定。最初のフォントが無ければ次、という順で適用される。
- 描画エンジン
- 文字を画面に描くためのOS側の仕組み。Macは丸く・太く、Windowsはシャープに描く傾向。
- アンチエイリアス
- 文字のフチを滑らかに見せる処理。OSによって強さや方式が違う。
⑦ 学習後のチェック
- MacとWindowsで標準フォントが違うことを知った
- 描画エンジンの違いがあると言える
- フォントスタックの書き方を理解した
- 「完全一致が必要な場面」と「差を許容する場面」を分けて判断できる
関連フォント