2017年6月25日日曜日

高解像度ノートパソコン買おうとしているやつちょっと待て。WindowsのDPIスケーリングは糞だぞ。

勉強の為に引用しました。
http://yaritakunai.hatenablog.com/entry/2016/02/04/181000


スポンサーリンク
MacBook Pro Retinaディスプレイモデルの登場以来、フルHDを超える高解像度ディスプレイを搭載したノートPCが数多く発表されています。

XPS 15は、驚異の15インチ4K (3840x2160ピクセル)ディスプレイ搭載。

今日発売のSurface Bookは、13.5インチ、3000x2000ピクセル。

VAIO Zクラムシェルモデルは、控えめの13.3インチ、2560x1440ピクセル。

今や、MacBook Pro Retinaディスプレイモデル(13.3インチ:2560x1600ピクセル、15.4インチ:2880x1800ピクセル)レベルの解像度は珍しくありません。

通常、こういった高解像度ノートPCを使うときは視認性の問題からDPIスケーリングを適用します。DPIスケーリングというのは、細かすぎて見えない場合に文字やアイコン、ウインドウなどを通常よりも大きな解像度(例えば2倍とか)で描画することです。*1画面の作業領域は狭まるものの、文字や画像はより高い画素密度で描画されるため、美しく表示されるといった効果もあります。

以前は画面の作業領域を広げるために向上させてきた解像度を、Retinaディスプレイではきれいに表示するために使ったわけです。それ以降、画面サイズに見合わない解像度のディスプレイを搭載したデバイスが昨今のトレンドとなっています。

問題はスケーリングのアルゴリズム(処理方法)です。単に、200%スケーリングだからといって2x2ピクセルを1ピクセルとしただけでは、ギザギザに表示されてしまいます。(というか解像度の意味がない。)

本題に入ります。

このスケーリングアルゴリズムがWindowsはクソ!


クソ1 フォントのレンダリングがクソ

フォントが見にくいです。最近になってマシになりつつありますが、過去のカクカクしたビットマップフォントから依然抜け出せていない感があります。

Macが優れていると言うつもりはありません。Windowsがクソなのです。Linux、Android、iOS… Windowsよりクソなのが他にありますか?


クソ2 アプリケーションの対応がクソ

WindowsではDPIスケーリング対応状況別にアプリケーションを以下のように分類しています。
  • Unaware
  • System Aware
  • Per-Moniter Aware

UnawareはDPIスケーリング非対応です。スケーリング率を>100%にしているときは適当に表示(ビットマップスケーリング)されます。問題は、Unawareなアプリケーションの多いこと多いこと。過去のフリーソフトウェアはまあいいんですよ。システム標準アプリケーションにもUnawareが多いって、なんじゃそれ?

例えば、デバイスマネージャーがそうです。ご覧ください。
f:id:cruller:20160204180352p:plain
参考[1]より引用(2016年2月4日閲覧)

文字はカクカクボケボケ、アイコンはボヤボヤ。

ストアアプリは大丈夫なはずです。たぶんMicrosoftはデスクトップアプリを互換性重視にして、直す気はないのだと思います。それも一つの手ですけど。

フリーソフトの対応も遅れています。おそらく、そうした開発者はデスクトップPC(スケーリング100%)で開発されていてDPIスケーリングの重要さに気づいていないのでしょう。

Macは違います。簡単に互換を切り捨てる未来を見据えた設計方針のため、すべての付属アプリケーションがDPIスケーリング対応です。開発環境も徹底しているため、フリーソフトの多くも対応しています。おそらく、標準アプリケーションが徹底されているため、Retina非対応のアプリケーションは自ずとハブられる環境なのでしょう。

System AwareはDPIスケーリング対応ですが、マルチディスプレイ環境で問題を生じます。どういうことかというと、ディスプレイ間で見た目のサイズが一致しなくなります。例えば、12インチ4Kディスプレイから外付け24インチ4Kディスプレイにウインドウを移動した場合、見た目のウインドウサイズがいきなり倍になります。Per-Moniter Awareの場合はディスプレイごとにスケーリング率の設定が可能で、内臓ディスプレイは200%、外付けディスプレイは100%とすることで、見た目の大きさが一致します。

このPer-Moniter Aware、導入されているのは8.1以降です。よって、対応しているアプリケーションも最近のものです。この対応の遅さもWindowsのDPIスケーリングのクソさを表す一端でしょう。まさに、AWAREというほかありません。


クソ3 設定がわかりづらくてクソ

Windows 10ではDPIスケーリングの設定は、
コントロール パネル > (ハードウェアとサウンド) > ディスプレイ
にあります。

ここからがわかりづらい。従来のようにすべてのディスプレイに同じスケーリング率を適用する場合、[カスタムの拡大率を設定]から設定します。レジストリでは
HKEY_CURRENT_USER¥Control Panel¥Desktop¥Win8DpiScaling
に1が立ち、
HKEY_CURRENT_USER¥Control Panel¥Desktop¥LogPixels
にDPI値(96xスケーリング率)が書き込まれます。

ディスプレイごとに異なるスケーリング率の設定は、[ディスプレイ設定]からどうぞ。(「設定」アプリからでもいける。)レジストリでは
HKEY_CURRENT_USER¥Control Panel¥Desktop¥Win8DpiScaling
が0になり、
HKEY_CURRENT_USER¥Control Panel¥Desktop¥LogPixels
を基準として各ディスプレイのDPIは
HKEY_CURRENT_USER¥Control Panel¥Desktop¥PerMonitorSettings¥ディスプレイ識別子¥DpiValue
を参照して算出されます。

DpiValueについてはこちら。
キー値意味
<0各ディスプレイ倍率を既定からこの値に相当する段階だけ削減します (たとえば、既定値が 150% のスケーリングである場合、-1 は 125%、-2 は 100% に対応します)。
0各ディスプレイに既定値を使います。
0>各ディスプレイの倍率をこの値に相当する段階だけ増加させます (前の例では、+1 は 200% のスケーリングに対応します)。
参考[4]表4より引用(2016年2月4日閲覧)

レジストリはおまけで書きましたが、マルチディスプレイにおける設定の違いがわかりにくいのではないでしょうか。設定ごとにログアウトが必要な点もクソですね。仕組み的にしょうがないとは思いますが。


そんなわけで、高解像度ノートパソコンを買おうとしている人はMacBook Proを選びましょう。

ただし、現在のMacBook Proは他社に比べてアーキテクチャが遅れているため、「待ち」をおすすめします。今すぐ必要な方は、現状のWindowsでは低解像度のものでいいと思います。

0 コメント:

コメントを投稿