3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(Windows10)高DPIと通常DPIのマルチディスプレイ環境は結構大変

高DPIのノートPCに、23型FullHDディスプレイを接続して使おうと思ってます。 OSはWindows10 1709です。
Windows8.1よりモニタ別のDPI設定ができるようになりましたが、1703(CreatorsUpdate)以降はDPIスケーリングのユーザ側で選択できるメニューが増えたようです。
実際、exeの互換性タブを見ると、それまでは「高 DPI 設定では画面のスケーリングを無効にする」だけでした。
1703以降では、「アプリケーション」「システム」「システム(拡張)」が選択できるようになっています。
それぞれの内容は以下のとおりだそうです。

  • アプリケーション:DPIスケーリングをアプリケーションに任せる。今までの「高DPI設定では画面のスケーリングを無効にする」と同様。
  • システム:DPIスケーリングをOSに任せる。
  • システム(拡張):OSに任せるけど、フォントをぼやけずくっきり見せようと頑張る。

DPIに関してはアプリケーションの対応が書かせません。アプリのDPI対応は次の3つとなるようです。

  • Unaware:DPIスケーリング非対応。DPI100%以外はぼやけまくり。
  • System Aware:DPIスケーリング対応だけど、DPIが異なるマルチディスプレイだと問題。
  • Per-Moniter Aware:DPIスケーリング対応かつ、DPIが異なるマルチディスプレイ環境でもOK。

ブラウザとか愛用のEmEditorとかはPer-Moniter Awareになってるので、高DPI/通常DPIマルチディスプレイ環境で全然問題ないのですが、結構そうでないアプリが多いです。 例えばLibreOfficeなんかはこんな感じになりました。

通常DPIのサブディスプレイ表示
f:id:deloreanmc12:20180222235617p:plain ぼやけてます。

高DPIのメインディスプレイ表示
f:id:deloreanmc12:20180222235638p:plain 高DPI側はくっきり映ってますね。

互換性タブで3つのモードを試してみましたが、しっくり来るのがありません。
片方のディスプレイでちょうどいいと思って、もう片方のディスプレイに移動させるとぼやけが発生します。
結局アプリ側がPer-Moniter Aware対応してくれないと完璧にはならないということですな。
社内用に.NET3.5で作成したツールが有るんですが、そのまま起動するとメインディスプレイでぼやけた感じがします。
互換性タブでDPIスケーリングを[アプリケーション]にするとくっきりドットバイドットっぽく表示されるのですが、通常DPIモニタに移動するとウィンドウ内すべてが大きく表示されます。(メインディスプレイのDPIが125%なので、移動した先でも1.25倍の大きさになってるっぽい)

ちなみに、MMC.exeはUnawareらしいですが、デフォルトで [システム(拡張)]のDPIスケーリングになっているようです。

さて、Windowsエクスプローラは、Per-Moniter Awareになっており、マルチディスプレイ環境でもOKだと思っていたのですが、こんな現象が。。。 f:id:deloreanmc12:20180222235649p:plain

通常DPIディスプレイに移動すると明らかにぼやけるわけです。
ググっても情報がありません。
おかしいなーと思いいろいろ調査していると、フォルダオプションで[別のプロセスでフォルダーウィンドウを開く]のチェックを外すと、ちゃんとスケーリングされてぼやけなくなりました。
結構マイナーだと思うので、ハマっている人がいれば参考に。。。。

高解像度ディスプレイに触れる機会がなかったので、DPIスケーリングについては全然知りませんでした。。。

参考: 窓の杜:ユーザーインターフェイスは使い勝手が向上、その他にも注目すべき機能改善が
窓の杜:古いアプリのフォントもくっきりキレイに! スケーリングを調整する
マルチディスプレイの一部ディスプレイにてソフトウェア画面が、ぼやけて表示されてしまう理由
ACII:Windowsと高DPIディスプレイ【その2】 8.1では異なるDPIを設定可
ACII:Windows 10+高解像度ディスプレイでのアプリのボケはRS2で解消される【その2】
高解像度ノートパソコン買おうとしているやつちょっと待て。WindowsのDPIスケーリングは糞だぞ。