見出し画像

macOS Mojave のテキストレンダリングを調節する方法と比較

macOS Mojaveから、OSによるテキストのレンダリングの仕組みが変わっています。Retinaディスプレイではさほど見分けがつかず気がつかない人も多いと思いますが、外部ディスプレイなどで等倍解像度のディスプレイを使っている人からすると、テキストが「硬くなった」「ボソボソしている」という印象を受けている人もいるだろうと思います。

これには理由があって、Mojaveではこれまでテキストのレンダリングに適用されていた「カラーフリンジ エフェクト」というものが使われなくなったことにあります。同じ画面を拡大して表示した場合、Sierraではテキスト周囲のサブピクセルにカラースケールが見えるのに対し、Mojaveはグレースケールのみで構成されていることが分かります。

等倍解像度のディスプレイで見た場合、(もちろん見る人にもよるところですが)グレースケールの方が色の深度・段階数が少ないことで硬く・ボソボソとして見えてしまい、画面に表示されるテキストに違和感を感じる人が多く出てしまったものと思われます。

ではなぜこの変更を加えたか、についてですが。

これはアップル公式の見解ではないのですが元アップルエンジニアのPeter Ammon氏によれば、カラーフリンジを使った描画は複雑でGPUに余計な負荷がかかるため、それを嫌ったアップルがこの処理を廃止したのではないかという説。

と言いますのも。昨年Retinaでないレガシーなディスプレイを採用していた最後のデバイスである MacBook Air をリニューアルしたことにより、現在アップルが販売している全てのMacがRetinaディスプレイ化を果たしています。そのRetinaディスプレイは高解像であるがゆえ、画面描画時にGPUリソースをより多く消費してしまいます。であれば、それを軽減しOSを軽くするための工夫をしたくなるのは当然の話です。

加えて、Retinaディスプレイは高精細なためテキストのレンダリングが多少変わったとしても違和感を感じにくい。であれば、よりGPUに優しいグレースケールの処理に切り替えても良いだろう。想像でしかないですが、そうした判断があったのでしょう。

➢➢➢

OS公開当初は、この変更を元に戻す方法はないと思われていましたが、現在はフォントのレンダリングに関してOS内部にいくつか影響を与える設定値があることが判明しています。


CGFontRenderingFontSmoothingDisabled

ひとつには、“CGFontRenderingFontSmoothingDisabled” という値。名称が長い上に否定を示すdisabledが入っていて分かりにくさに拍車をかけていますが、意訳すると「テキストのスムージング処理にカラーフリンジを使用しない」という内容のようで、Mojaveではこれが YES の指定になっています。

つまり、これを NO の設定に変更することで以前のカラーフリンジによる描画に戻すことが可能なことが分かっています。

defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO

以上をターミナルから実行し、ログアウトなり再起動なりすれば処理が切り替わります。(元に戻したい場合には上記でYESを指定すればOKです。)

AppleFontSmoothing

さらに、カラーフリンジが有効な場合にサブピクセルに対しレンダリングの強度を指定する設定値があることも分かっています。

defaults -currentHost write -globalDomain AppleFontSmoothing -int 1

この値は先ほどと異なりint型(整数型)の設定で、0〜3までの値が指定可能となっています。

0は無効、1から3に値が大きくなるにつれサブピクセル レンダリングの程度が強まります。見ためとしては、値が大きくなるほどテキストのウェイトが重くなって(=太くなって)いくことになります。

➢➢➢

設定の組み合わせによる比較

まとめると CGFontRenderingFontSmoothingDisabled と AppleFontSmoothing の組み合わせにより、複数パターンのテキストレンダリングが存在することになります。

しかし CGFontRenderingFontSmoothingDisabled が YES の場合、つまりカラーフリンジが適用されていない Mojave 標準の条件下では、AppleFontSmoothing を変更しても僕の目にはレンダリングの違いが全くわかりませんでした。おそらくAppleFontSmoothing はカラーフリンジが有効の時でないと影響を及ばさない設定と思われます。

文章で書いたところでさっぱり分からないと思いますので、百聞は一見にしかずで以下スクリーンキャプチャを掲載します。

noteのデスクトップ ビューで等倍に表示されるよう切り出したつもりですが、微妙に縮小されて表示される場合もあるようですので、いったん画像をクリックしてスライドショウモードにした方が見やすく、また比較もしやすいかと思います。

加えて、上記を3倍に拡大したものです。


➢➢➢

結論

上記の通り、OSの2つの設定値を変更することでテキストレンダリングを自分好みに細かく調整出来ることを理解いただけたかと思います。ただ、OSデフォルトの設定にあまりに大きな変更を加えてしまうと常に他の人と異なる描画状態の画面を見ることになるため、特にWebの制作者は気をつけなければならないポイントと言えます。

AppleFontSmoothing の設定を大きくしすぎると明らかにテキストのウェイトが変わってしまいますので、以前までの見ためを取りもどし且つ制作に影響しない範囲で考えると

defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO
defaults -currentHost write -globalDomain AppleFontSmoothing -int 1

あたりの設定が無難な気がいたしますね。


FYI:
macOS Mojaveで非Retinaディスプレイのフォント表示が汚くなった問題を解決する (ソフトアンテナブログ)
• macOS 10.14 Mojaveではフォントのサブピクセル・アンチエイリアス処理が変更されカラーフリンジがなくなるため、非RetinaディスプレイのMacに大きく影響。 (AAPL Ch.)

読んでいただきありがとうございます。丁寧な記事作りをこころがけていますので、記事が気に入ったなどでカンパをよせていただけるのなら励みになります。