100
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

2018年のfont-family指定

Last updated at Posted at 2017-04-07

サンセリフ編です。

目標

  1. 欧文は[WIN]Segoe UI/[Mac]San Francisco, Helvetica Neueを使う。
  2. 和文その1: 游ゴシックを使う(実はまだ厳しい気がしている)
  3. 和文その2: Winにはメイリオ, Macにはヒラギノを使う。(推奨)

1. 欧文は[WIN]Segoe UI/[Mac]San Francisco, Helvetica Neueを使う。

それぞれ次のように指定すれば実現可能

font-family:-apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", 和文フォント指定, sans-serif;

指定順は次の通り。[]は記号内の指定順序を問う、{}は記号内の指定順序を問わないという記号である。

[{[{-apple-system, BlinkMacSystemFont}, "Helvetica Neue"], "Segoe UI"}, 和文フォント指定, sans-serif]

2. 和文その1: 游ゴシックを使う(実はまだ厳しい気がしている)

  • windowsで細くレンダリングされてしまうのは、游ゴシックのウェイトがRegularで、これが特にChromeの独自レンダリングが影響で意図するものよりも細い。参考記事
  • また、この問題は@font-face指定でnormalをregularではなくmediumにすげ替えることで回避することができそう。参考記事
  • Windows8.1ではそもそもMediumが無いので、死。
  • ただ、IE11では游書体のメトリクスの参照先がOS/2のオブジェクトを使っているようで、line-heightが意図したものより若干大きく描画される。 -> 若干ゃつらい
  • また、Windows7, 8で游書体を入れてない場合はメイリオで表示になりそう -> 若干ゃつらい

よってあまりおすすめできないが、やるならこうなる。

@font-face {
  font-family: "Yu Gothic";
  src: local("Yu Gothic Medium");
  font-weight: 400;
}
@font-face {
  font-family: "Yu Gothic";
  src: local("Yu Gothic Bold");
  font-weight: bold;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", "Yu Gothic", YuGothic, sans-serif;
}

指定順は以下のような感じ。記号の使い方はさっきと一緒。

[{[{-apple-system, BlinkMacSystemFont}, "Helvetica Neue"], "Segoe UI"}, {"Yu Gothic", YuGothic}, sans-serif]

3. 和文その2: Winにはメイリオ, Macにはヒラギノを使う。

  • めっちゃよくあるのが「macのデフォルトフォント→Windowsのデフォルトフォントの順」とする掟。
    • おそらくこの順でないとofficeの入ったmacでメイリオが表示されてしまうことを危惧してのもの
  • ただ、この順番だと、windowsでヒラギノが入ってしまっているWeb製作者やクリエイターの環境ではヒラギノが表示される。(モリサワさん、ぜひモリパスのヒラギノは名前変えてください…難しいだろうけど…)
    • Windowsとヒンティングの入っていないヒラギノの相性は悪く、良くない表示を与えてしまう可能性が高い

以上の話は、やや宗教戦争臭く、随分前から所々で議論されているよう。
中には、jsでOSを判定し振り分けている解決策を見出すものもあるよう。

私も似たところでずっと悩んでいて調べたが、
検証した所、モダンWebブラウザでsans-serifを指定したときにメイリオで表示されないのは

  • chrome56以前(issue)
  • Firefox

そしてなんと、Firefoxはバージョン55でデフォルトフォントを sans-serif: メイリオ/ serif: 游明朝 に変更するという結論を持つissueが出来ている。(メイリオだと斜体ができなかったのが課題としてあるようだが、これも割りとfirefox側で頑張って解決しようとしてる。賛否両論ありそうだが(汗))
バージョン55が出るのはロードマップを見ると8月あたりなので、ざっくり2018年ごろには浸透するのかなと。

そう考えると、2018年ごろには

font-family:-apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", sans-serif;

指定順は

[{[{-apple-system, BlinkMacSystemFont}, "Helvetica Neue"], "Segoe UI"}, sans-serif]

で指定すると、和文が意図通りWinユーザーはメイリオに、Macユーザーはヒラギノに提供できるかと。
issue見てて思ったけど、結構デフォルト フォントを変えるのはページ全体の表示に関わるので、慎重になるみたい。dだからきっと他のブラウザは変わらないはず…?(IEは変わらないと思うし、唯一Edgeが游ゴの危険性があるけど、WindowsのアプリケーションはUIに游ゴシックUI、中身のコンテンツはメイリオで表示するアプリケーションが多かったので、もしかしたらメイリオのままな気がする、そんな気がしない?)

これもブラウザに見た目を握られる形になるので、実はそんなにいい話ではないが…。

これでも良いのではないか?

  • San FransiscoとHelvetica、contextual-alignとか無視すると、テクスチャとして見たときはそんなにHelvetica Neueと変わらない。
  • デフォルトがSan Fransiscoで表示されるのはSafariぐらい。

だったら、

font-family: sans-serif;

というのも、悪い話ではなさそう?

注意したいこと

San Franciscoは、デフォルトでは数字が厳密にプロポーショナルなので、例えば動画時間の横に音量ボタンがあるなどの、変化する数字があって、それに位置が依存するボックスがあると、数字の横幅が変わって位置がガタついてしまう。
これは、San FranciscoにはOTFの機能でmonospacedな数字が用意してあるので、以下のようにfont-feature-settingsを設定すると良い。(autoprefixerな感じのものを使ってないときはprefixが必要。詳しくは参考資料へ)

font-variant-numeric: tabular-nums;
font-feature-settings: "tnum";

これでしばらく平和になると良いな。

100
86
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?