世間の font-family 設定を軽く調べた

normalize.css にはバグフィックス以外の font-family 設定がない。フォントも「味付け」の一つと考え、「ノーマライズ」CSS としては何も適用していないのだろう。

しかし、現実的には、serif ではなく sans-serif 系のシステムデフォルトフォントを使わせるよう指定することがほとんどだ。拙作の @neos21/neos-normalize も、オレオレ設定でスタイルを当てているが、他のノーマライズ系の CSS ライブラリや、有名なウェブサイトはどのような設定にしているのか、調べてみた。

目次

ライブラリ系

sanitize.css

html {
  font-family:
    system-ui,
    /* macOS 10.11-10.12 */ -apple-system,
    /* Windows 6+ */ Segoe UI,
    /* Android 4+ */ Roboto,
    /* Ubuntu 10.10+ */ Ubuntu,
    /* Gnome 3+ */ Cantarell,
    /* KDE Plasma 5+ */ Noto Sans,
    /* fallback */ sans-serif,
    /* macOS emoji */ "Apple Color Emoji",
    /* Windows emoji */ "Segoe UI Emoji",
    /* Windows emoji */ "Segoe UI Symbol",
    /* Linux emoji */ "Noto Color Emoji";
}

pre, code, kbd, samp {
  font-family:
    /* macOS 10.10+ */ Menlo,
    /* Windows 6+ */ Consolas,
    /* Android 4+ */ Roboto Mono,
    /* Ubuntu 10.10+ */ Ubuntu Monospace,
    /* KDE Plasma 5+ */ Noto Mono,
    /* KDE Plasma 4+ */ Oxygen Mono,
    /* Linux/OpenOffice fallback */ Liberation Mono,
    /* fallback */ monospace;
}

拙作の @neos21/neos-normalize に似た思想か。英語圏向けの設定なので、日本語対応はこのままだと不十分ではあるが。

Android 向けに Roboto や Roboto Mono を書いている他、Linux ディストリビューション別のフォント指定が豊富。Ubuntu・Cantarell・Noto Sans や、Ubuntu Monospace・Noto Mono・Oxygen Mono・Liberation Mono あたり。

shoelace-css

:root {
  /* Fonts */
  --font-sans-serif: sans-serif;
  --font-serif: serif;
  --font-system: system-ui;
  --font-monospace: Menlo, Consolas, "DejaVu Sans Mono", monospace;
}

最低限の定義、という感じ。DejaVu Sans Mono はフリーのフォントみたい。

ウェブサイト

ココからはライブラリではなく、一般的なウェブサイトの font-family 指定を、開発者ツールで調べてみた。

Qiita

body {
  font-family: -apple-system,Segoe UI,Helvetica Neue,Hiragino Kaku Gothic ProN,"メイリオ",meiryo,sans-serif;
}

pre, code {
  font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;
}

フォントは html 要素ではなく body 要素で指定していた。この辺未だに違いがよく分からん。日本語向けにヒラギノとメイリオが入っているが、英字フォント優先。等幅フォントは日本語の考慮なし。

Twitter

body.ja {
  font-family: Arial,"ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic Pro",Osaka,"メイリオ",Meiryo,"MS Pゴシック","MS PGothic",sans-serif;
}

body.ms-windows {
  font-family: "Segoe UI",Arial,sans-serif;
}

body {
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
}

body.ar, body.ur, body.fa {
 font-family: Tahoma,Arial,sans-serif;
}

Twitter は日本語向けのフォント指定と、Windows 向けフォント指定を別々に持っていた。JS で制御しているっぽい。日本語環境で最終的に適用されるのは body.ja だった。「ヒラギノ → Osaka」「メイリオ → MS P ゴシック」と、「Mac 向け」「Windows 向け」の順で設定している様子。日本語環境では Segoe UI を使わず Arial のみ指定している。

Facebook

body, button, input, label, select, td, textarea {
  font-family: Helvetica, Arial, "hiragino kaku gothic pro",meiryo,"ms pgothic",sans-serif;
}

Facebook はかなりシンプル。日本語も考慮したフォント指定はヒラギノ・メイリオ・MS P ゴシックだが、それも英字で表現できる方だけを指定している。

Instagram

body, button, input, textarea {
  font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}

Twitter・Facebook は -apple-system を使っていなかったが、Instagram では BlinkMacSystemFont まで併用して使用している。Mac と iOS はコレで押さえ、Windows 向けに Segoe UI、Android 向けに Roboto を併記している。最後は Helvetica と Arial でレガシーな Mac と Windows 向けにフォールバック、という感じ。

GitHub

html {
  font-family: sans-serif;
}

body {
  font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
}

前半は Instagram に近く、Robot がいないぐらいの違い。後ろに絵文字フォント指定が入っている。

Typetalk

html[lang="ja-JP"] body {
  font-family: Open Sans,Hiragino Sans,ヒラギノ角ゴシック,Hiragino Kaku Gothic ProN,ヒラギノ角ゴ ProN W3,Meiryo,メイリオ,Arial,sans-serif;
}

body {
  font-family: Open Sans,Hiragino Sans,Meiryo,Helvetica,Arial,sans-serif;
}

pre, code {
  font-family: Menlo,Monaco,Consolas,Courier New,monospace;
}

Open Sans は Google Web Fonts で提供されているフォント。Noto Sans よりも少し細いかしら。

Hiragino Sans とヒラギノ角ゴシックは、OSX 10.11 El Capitan 以降で使えるようになったフォント。従来の「ヒラギノ角ゴ ProN」などとほぼ同等だが、-webkit-font-smoothing: antialiased; との親和性が高いとかで、モダン環境向けに入れておくと良いのかも。Windows はブラウザに関わらず使えないプロパティなので、あくまで Mac 向け。

Backlog

html {
  font-family: sans-serif;
}

html.windows body {
  font-family: 'Open Sans',Meiryo,'メイリオ',Arial,sans-serif;
}

html:not(.windows) body {
  font-family: 'Open Sans', 'Hiragino Sans', 'ヒラギノ角ゴシック', 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN W3', 'Helvetica Neue', Helvetica, Arial, sans-serif
}

code {
  font-family: Consolas, Menlo, Courier, Monaco, monospace, sans-serif;
}

Typetalk と同じヌーラボのサービスだが、指定内容には違いがある。Open Sans は Windows・Mac 両方に使うようにしているが、それ以降は html 要素に付与する CSS クラスで条件分けしている。Windows はメイリオ、Mac はヒラギノ系を優先的に指定し、後ろの方で Arial や Helvetica Neue を指定している。

等幅フォントの内訳は Typetalk とよく似ているが、順番が違う。

Tumblr

body {
  font-family: Helvetica Neue,HelveticaNeue,Helvetica,Arial,sans-serif;
}

ドシンプルに Helvetica 系と Arial のみ。

CodePen

html {
  font-family: 'Lato', 'Lucida Grande', 'Lucida Sans Unicode', Tahoma, Sans-Serif;
}

Lato は Google Fonts。Lucida Grande は Mac 用。Lucida Sans Unicode は Lucida Grande とほぼ同じフォントで、Windows プリインストール系。落ち着いている。

Google

body, html, input {
  font-family: arial,sans-serif;
}
body {
  font-family: 'Roboto',arial,sans-serif;
}
body, input, textarea, select, td {
  font-family: Roboto,RobotoDraft,Helvetica,Arial,sans-serif;
}
body, html {
  font-family: Roboto,"Noto Sans JP",Helvetica,Arial,sans-serif;
}

Wikipedia

html, body {
  font-family: sans-serif;
}

日本語版も英語版も同じだった。総称ファミリ任せ。

Gizmodo Japan

body {
  font-family: "Helvetica Neue",Helvetica,Arial,"游ゴシック","YuGothic","ヒラギノ角ゴ ProN W3","Hiragino Kaku Gothic ProN","メイリオ","Meiryo",sans-serif;
}

游ゴシック指定があるが、「游ゴシック体」とは書いていないので、「游ゴシック」指定は Windows 向け。次の「YuGothic」は「Yu Gothic」ではないので Mac 向け。あとはヒラギノとメイリオ。

GIGAZINE

html {
  font-family: sans-serif;
}

h1, h2, h3, h4, a, p, span, blockquote, li, th, td, dt, dd, input {
  font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "San Francisco", "Segoe UI", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "Roboto", Verdana, Arial, Helvetica, "メイリオ", Meiryo, "MS Pゴシック", sans-serif, MS UI Gothic;
}

htmlbody で設定しない例。見出しや p 要素に直接フォント指定を入れている。内容は英字フォント指定が優先気味だが、Roboto や Arial の位置はなんか微妙。また、San Francisco を明記している。ヒラギノは ProN ではなく Pro を指定。sans-serif より後ろに MS UI ゴシックがいるのが面白い。

はてなブックマーク

body {
  font-family: Helvetica,Arial,Roboto,sans-serif;
}

意外にも日本語向けの指定なし。Helvetica か Arial の記載があれば、Android 向けには Roboto の表記は要らないらしいのだが、書いているパターンが多い。

Coliss コリス

body {
  font-family: "Rounded Mplus 1c";
}

何やら潔い指定。使っているのはコレかな?

@font-face にて、font-display: swap; のみ指定していた。

gori.me

body {
  font-family: "游ゴシック体", "Yu Gothic", YuGothic, "ヒラギノ角ゴシック Pro", "Hiragino Kaku Gothic Pro", 'メイリオ' , Meiryo , Osaka, "MS Pゴシック", "MS PGothic", sans-serif;
}

「游ゴシック体」「Yu Gothic」で Mac は游ゴシック体を指定。Windows も「YuGothic」で指定。ヒラギノ・メイリオのフォールバック、Osaka・MS P ゴシックでさらにフォールバック、という日本語サイトの理想的な流れ。和英混在フォントを積極的に使う構成だ。

総評

こんな感じ。拙作の @neos21/neos-normalize がゴリゴリに指定しすぎなのかもしれない…。

参考