Windows 10におけるフォントレンダリング設定

2020年3月4日

君もレジストリエディターとにらめっこ!(遠い目

特に、Windows 10 Creators Update(1703)からは、フォントは縦方向にもアンチエイリアスが掛かるようになっているので、適切に設定すれば綺麗に表示される。(……はず。)

尚、スタートメニュー内や設定アプリなどはグレースケールレンダリングされるため、ClearTypeの設定は反映されない。

検証はWindows 10 Pro(バージョン1909)で行った。Microsoftの古いドキュメントや、実際に変更してみた結果をもとに書いているので、誤っている可能性もあることをご容赦願いたい。

レジストリエディターでのレンダリング調整

「ClearType テキストチューナー(cttune.exe)」は使わないのかって?うん、あれはわかりづらい。

あと、いまのところマルチディスプレイでのDPIスケーリングに非対応なので、メインディスプレイのスケーリング設定に依存する。つまりスケーリングの違うマルチディスプレイ環境ではチューナーそのものがボケたりする。(おいおい)

い つ も の

というわけで、レジストリを直接弄ることに。また、今回は詳しく紹介しないが、オープンソースソフトウェアとして「Better ClearType Tuner」というものが公開されているので、それを使ってみるのもオススメ。

主なキーの格納先は次の通り。(※例外あり)

「\HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics\DISPLAY*」

「HKEY_CURRENT_USER\Control Panel\Desktop\」

(*はディスプレイ番号)

※当然ながらレジストリの変更は自己責任で行って欲しい。

各項目の詳細

ClearTypeLevel

ClearTypeレベル、0~100の整数値。

0だとグレースケール、デフォルト値は100。

ClearTypeテキストチューナーでは3つだけ項目が出てくるページがこれ。左から順に100、50、0となる。

EnhancedContrastLevel

コントラストの強調レベル。0~400の整数値。

デフォルト値は50。

ClearTypeテキストチューナーでは最後からひとつ前のページ。一番濃い右下が400。

GammaLevel

ガンマレベル。1000~2200の整数値。最近のデフォルト値は1200らしい?

フォントがあまりにも薄すぎると感じるときは値を小さくする。

ClearTypeテキストチューナーでは2ページ目に出てくるはずだが、どうやらメインディスプレイの設定時にしか出てこない様子。

また、ここの値については、

「HKEY_CURRENT_USER\Control Panel\Desktop\FontSmoothingGamma

で設定しないと反映されなかった。つまりディスプレイ毎には設定できないらしい。(えぇ……?)

GrayscaleEnhancedContrastLevel

グレイスケールアンチエイリアシングに使用するコントラストの強調レベル。0~400の整数値。デフォルト値は100。

ClearTypeテキストチューナーでは最後のページ。右下が400。

設定アプリなどで妙にフォントがガビガビしてるなぁってときはここの値が高い。見たところ、メインディスプレイの値しか反映されない。

右がコントラストレベル50のもの。左は……300か400だったかなぁ。(わすれた)

PixelStructure

サブピクセルの配置。0~2の範囲の整数値。

  • 0……Flat、グレースケールレンダリングとなり、ClearTypeは適用されない。
  • 1……RGB配列
  • 2……BGR配列

ここの設定を間違えると、カラーフリンジが目立つようになる。ClearTypeテキストチューナーの1ページ目がこれ。左がRGB、右がBGR。

TextContrastLevel

フォントのステム幅(縦方向ラインの幅)に基づいたレンダリング調整。0~6の整数値。

デフォルト値は1で、値が大きくなるほどステム幅が広くなるとのこと。軽く触ってみたものの、よく分からなかった。

気が向いたら見直しを

4Kディスプレイ搭載など、100%以上のスケーリング前提でのPCが増えてきており、アンチエイリアシングを活用する必要も徐々に減ってきているように思う。(そうか?)

とはいえ、未だにFWXGAのノートPCは販売されているほか、安価な20インチクラスのディスプレイもFHDが主流だ。

目が自動的にアンチエイリアシング設定してくれる人(老眼やそれ!)はともかくとして、見辛さを感じている人は一度見直してみるといいかもしれない。

まだまだアンチエイリアシングのお世話になるんだなぁ……。

ところで、検証のために何度も弄ってたら、「ClearType テキストチューナー」の項目がパッと見で分かるようになってきたのでレジストリ触らなくてもよくなった。(困惑)

参考:

ClearType Registry Settings – WPF | Microsoft Docs

IDWriteFactory3::CreateCustomRenderingParams (dwrite_3.h) – Win32 apps | Microsoft Docs