【CSS】Chrome問題対応済の游ゴシック font-family 完全版!これなら2020年まで使えます(多分)

※執筆時点での情報を元にしているため、内容が異なる可能性があります。

▼2018年4月9日追記
本記事で紹介している font-face の方法はChrome62以降、機能していないようです。
代わりに以下の font-family を利用して下さい。

font-family: "游ゴシック Medium", "Yu Gothic Medium", "游ゴシック体", YuGothic;

以下は、2017年10月13日までの情報です。機能していないのでご注意下さい。


游ゴシック体を指定するフォントファミリーを調べると、「2020年まで使えるfont-familyおすすめゴシック体」の記事が見つかると思います。ベースはこちらを利用しました。

しかし、このコードをそのまま使うと、大きく以下4つの問題が発生しました。

  • Excelの入った游ゴシックOFFのMacでメイリオが表示される
  • Edge, Firefox だと游ゴシックが少しだけ細い印象になる
  • ハイコントラストモードがオンのEdgeでメイリオが表示される
  • button,input,select,textarea には適用されない

font-family は昔から根が深い問題ですね…。ということで、これら4つの問題を改善したものができたので共有します。少し長いのでSASSで書いています。あとJS必須です。

$BASE_FONT_FAMILY: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, Verdana, Roboto, "Original Yu Gothic", "Yu Gothic", YuGothic, "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, "M+ 1p", "MS Pゴシック", "MS PGothic", sans-serif;

@font-face {
  font-family: "Yu Gothic";
  src: local("Yu Gothic Medium");
  font-weight: 500;
}
@font-face {
  font-family: "Yu Gothic";
  src: local("Yu Gothic Bold");
  font-weight: bold;
}
@font-face{
  font-family: "Original Yu Gothic";
  src: local("Yu Gothic");
  font-weight: 500;
}
@font-face{
  font-family: "Original Yu Gothic";
  src: local("Yu Gothic");
  font-weight: bold;
}
body {
  font-family: $BASE_FONT_FAMILY;
  button,input,select,textarea {
    font-family: $BASE_FONT_FAMILY;
  }
  &.IE {
    font-family: Arial, Verdana, "メイリオ", Meiryo, "MS ゴシック", "MS Gothic", sans-serif;
    button,input,select,textarea {
      font-family: Arial, Verdana, "メイリオ", Meiryo, "MS Pゴシック", "MS PGothic", sans-serif;
    }
  }
}

使うHTMLは最低限、こんな感じ。IE判定のためにJSを利用しているのが特徴ですね。

<body>
<script>
    (function () {
        if(!navigator.userAgent) return false; var ua = navigator.userAgent;
        if(ua.indexOf('MSIE') > -1 || ua.indexOf('Trident') > -1) {
            document.getElementsByTagName("body")[0].className += " IE";
        }
    })();
</script>
<p>Hello World!!</p>
<input placeholder="サンプルテキスト" type="text" value="">
</body>

Excelの入った游ゴシックOFFのMacでメイリオが表示される

私の環境だけかもしれませんが、最新の macOS Sierra にアップデートした際、游ゴシックが標準でOFFになっていました。Qiita の記事ではメイリオのみ指定しており、ヒラギノが指定されていなかったため、Excelの入った私の最新Macでメイリオが表示されました。

ということで、念のためヒラギノ関連も指定しているという経緯になります。やや古いMacだとProNが入っていないっぽいので、念のためProも指定した形としています。

さて、ここで問題になるのは、Windows で ヒラギノを表示すると汚い問題。

当然Windowsにヒラギノが入っている場合ヒラギノが表示されます。これが問題!
この環境を使用したことがある人には分かると思いますが、とても読めたものではありません。MSゴシックのほうがマシです。
昔読みにくいと思ったので、先入観で書きましたが、感覚が変わったのか、何の違和感もありませんでした。(昔から現在の間にApple教に入信しています)
https://qiita.com/RinoTsuka/items/4181efd43d072e246519#%E3%82%88%E3%81%8F%E4%BD%BF%E3%82%8F%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%83%92%E3%83%A9%E3%82%AE%E3%83%8E

私も Windows のヒラギノが薄くて読みにくかった印象があったのですが、改めて仮想環境で確認した感じだと、IE8以下の仕様だったようで、IE9以降はヒラギノも綺麗に表示されていました。念のため WndowsXP に Chrome 入れて確認しても大丈夫でした。

「IE9以上はヒラギノでも問題なし」ですが、私のコードでは全IEにメイリオを指定しているので問題ないと思います(IEの游ゴシック指定は不具合があるので避けました)。

Edge, Firefox だと游ゴシックが少しだけ細い印象になる

Windows の Chrome において、游ゴシックを使うと薄くて読み難い印象になると思いますが、これは冒頭の Qiita の記事で解決します。ただ、Edge や Firefox だと若干薄くて読みにくい印象がありました。まぁ、人によって感じ方は違うかもしれませんけど。

また、私の場合、font-weight で 400 以下は要らないと思ったので、以下のように修正。

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

これで、「Chrome だと少しだけ薄いけど、Edge や Firefox だと読みやすい」游ゴシック体になりました。逆に太すぎる印象なら、上2つの @font-face を消して下さい。

ついでに、Qiitaの記事では Helvetica Neue の太さ調整も行っていますが、これだと Chrome で 細いままです。ちゃんとやるなら下2つの @font-face のように、「Original Helvetica Neue」みたいなのを追加する必要があると思います。私は使わないので割合。

ハイコントラストモードがオンのEdgeでメイリオが表示される

-ms-high-contrast を CSS ハックに使ってはいけない、ただひとつの理由」のまんまですが、このハックを使うとハイコントラストモードがオンの場合のみ Edge が IE 扱いとなり、結果的にメイリオ表示になります。それで問題なければ放置でいいですが…。

私の場合はフォント以外でも一部ハックを使いたかったので、JS で処理しました。

button,input,select,textarea は適用されない

CSS のフォントやテキストの機能は、任意のウィジェットで容易に使用できます (また、フォームウィジェットで @font-face も使用できます)。ただし、ブラウザの動作にしばしば矛盾があります。デフォルトで、一部のブラウザは親から font-family や font-size を継承しません。代わりに多くのブラウザでは、システムのデフォルトの体裁を使用します。
https://developer.mozilla.org/ja/docs/Learn/HTML/Forms/Styling_HTML_forms#Fonts_and_text

必要な場合は button,input,select,textarea にもフォントファミリーを指定しましょう。