このページの本文へ

前へ 1 2 次へ

Windows Info 第24回

Windowsと高DPIディスプレイ【その2】 8.1では異なるDPIを設定可

2014年06月18日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

 WQHDや4Kなど、高解像度ディスプレイの普及にともない、さらに重要度を増しているWindowsでのDPIスケーリング。前回はWindows 8までの状況について紹介した

 Windows 8.1では、それまでの経緯を踏まえDPIスケーリングに関してさらに変更が行なわれた。まず、モダンUI側にも導入され、高いDPI値を持つディスプレイでは、標準文字サイズなどを変更することが可能になった。これは「PC設定」→「PCとデバイス」→「ディスプレイ」で設定できるが、ディスプレイからの情報に基づき、選択肢が変化する。

Windows 8.1ではディスプレイごとにDPI値を設定できるが、設定自体はスライダで動かす

高DPIディスプレイへの対応で
アプリは3つに分けられる

 これまでWindowsでは、アプリケーションのDPI対応に対する姿勢を何回も変えており、その結果、過去との互換性を保つためにいくつかのAPIなどを提供している。Windows XPまでは、アプリケーションは必ずしもDPIを意識する必要はなかった。

 ただし、過去のWindowsでは、ソフトウェア開発を容易にするために、ダイアログボックスを位置や部品などを指定したデータとして扱っており、ダイアログボックス内でスクロールができなかった。そのために最低解像度やダイアログウィンドウの論理インチなどのガイドラインが定義されていた。

 Windows XPでは、96dpiおよび120dpiの場合に限り、従来との互換性が持てるようになっていた。カスタムのDPI設定はできたが、これは標準ではない状態であり、たとえばダイアログボックスが画面からはみ出す可能性があるとしていた。また、初期の頃には、カスタムのDPI設定では動かないアプリなども存在していたようだ。

 Windows Vistaでは高DPI化に対応するため、システムDPI値を参考にして高い解像度のディスプレイでの利用に対応したアプリの開発が可能になった。このとき、従来との互換性のため、DPI値を読み込んでウィンドウサイズなどを制御するアプリと、そうでないアプリとを区別することになった。システムDPI値に対応するアプリケーションは「System dpi Aware」と呼ばれ、そうでないアプリは「dpi Unaware」なアプリであるとされた。

DPI対応 XPまで Vista以降 8.1以降
unaware(対応せず)
System Aware(システムDPIに対応) ×
Per-Monitor Aware(ディスプレイごとのDPIに対応) × ×

 さらにWindows 8.1では、マルチディスプレイに対応し、ディスプレイごとにdpi値を設定できるようになったが、これに対応しているアプリをさらに区別して「Per-Monitor dpi Aware」と呼ぶ。Windowsは、起動時にこれらアプリのdpi対応状況を区別し、それぞれに応じた環境でアプリを起動する。この仕組みにより、dpi Unawareなアプリは、すべて仮想dpi環境で実行されることになった。

Windows 8.1でのDPIスケーリングの設定は
主に2つの設定がある

 標準のdpiスケーリング設定は、ディスプレイの縦方向の解像度に依存して標準が切り替わる。下の表は、Windows 8.1のDPI設定を示すものだ。デスクトップのDPI設定は、コントロールパネルの「ディスプレイ」で設定できる。システムdpi設定には2つの形式があり、「すべてのディスプレイで同じ拡大率を使用する」のチェックボックスで切り替わるが、設定を反映させるためには、ユーザーが再度サインインするか、システムを再起動するかが必要になる。

文字表示
日本語/英語
%表示 DPI値 垂直方向の解像度(ドット)
900未満 1079未満 1439未満 1439以上
小/Smaller 100% 96
中/Medium 125% 120
大/Larger 150% 144
特大/Extra Larger 200% 192

 まず標準状態では、「すべてのディスプレイで同じ拡大率を使用する」はオンになっており、ディスプレイごとのdpi値を使う機能は無効になっている。このとき、DPIスケーリングは、「小(100%)」のような表記となっている。

Windows 8までと同じDPI設定では、設定値は文字表記されていてラジオボタンで選択する。カスタム設定も可能

 その他の設定項目として「カスタムサイズ変更オプション」が利用できる。また、この場合のシステムDPI値の切り替えは、必ずシステムの再起動または再サインインなどが必要になる。

カスタム設定では、インチ単位のゲージが表示され、これを実寸に合わせることでdpi値を設定できる

 一度サインアウトが必要なのは、この設定ではシステムDPI値のみを変更し、ディスプレイのDPI値としてもシステムDPI値がアプリケーションに対して提供され、システムDPI値はWindowsの動作中に変更されないことになっているためだ。システムDPI値を見て動作するもので、動作中のdpi変更に対応するアプリケーションは存在しない。

 ちなみにこの状態では、Windows 8までと同じで、アプリケーションはシステムDPI値に従うか、無視するかのどちらかである。ディスプレイの実DPI値に関係なくWindowsが報告するディスプレイのDPI値がシステムのDPI値になるため、Windows 8.1用に作られたディスプレイごとのDPI値に対応するアプリケーションも結果的にシステムDPI値に従って動作することになる。

 これに対して「すべてのディスプレイで同じ拡大率を使用する」をオフにすると、ディスプレイごとにDPI値を設定できるようになる。

ディスプレイごとにDPI値を設定する画面は、冒頭にも掲載したもの

 設定方法も変わり、スライダで設定値を選ぶようになるが、シングルモニタとマルチモニタでは、スライダの段階に違いがあるものの設定方法は同一だ。また、このときは、1%単位でDPI値を変更できるカスタムDPI設定はできなくなる。

マルチディスプレイでは、スライダの段階が増え、これがDPI設定値の組み合わせに対応する。この場合は左端が2つとも96dpi、右端が2つとも144dpiになり、中央は、144dpiと96dpiになり、各ディスプレイの実際のdpi値に最も近い値が選択される

 DPI値の設定は、96/120/144/192といった固定した値から選択して選ぶもので、1つのスライダですべてのディスプレイのDPI値を設定するものになるようだ。2つのディスプレイを接続した場合、スライダは5段階となり、下の表のように各段階で2つのディスプレイのDPI値が変更される。このとき、ディスプレイのdpi値は「変更」ボタンで即座に反映される。

スライダ位置 システム 内蔵モニタ 外部モニタ
小さく(左端) 96 96 96
  120 120 96
推奨設定(中央) 144 144 96
  144 144 120
大きく(右端) 144 144 144
物理サイズ 13.3 24.1
解像度横 1920 1920
解像度縦 1080 1200
dpi 166 94
※内蔵モニタのみの場合には96/120/144dpiの3つから選択。
推奨サイズは実dpiに最も近い値が選ばれる

 システムDPI値は、接続しているディスプレイのうち最も高いDPI値と同じになる。これは、DPI値が高いほどウィンドウを構成するドット数が増えるため、ウィンドウを移動させてもダイアログボックスなどが上下にはみ出さないようにするためだと考えられる。

 組み合わせ可能なディスプレイのDPI値は、縦方向の解像度により選択肢の数が変わるが、最大4種類(96/120/144/192)。2つのディスプレイがあったとき、その組み合わせは最大16通りになるが、実際にはスライダは5段階しかなく、中央に推奨値として各ディスプレイに最も近い選択肢の組み合わせができる。

 たとえば、144dpiと94dpiのディスプレイの組み合わせでは、推奨値は144dpiと96dpiの組み合わせになる。スライダ左端の場合、ディスプレイは2つとも96dpiとなり、右端では2つとも144dpiになる。たしかに16通りの選択肢が出てもユーザーがどれを選ぶべきか判断するのは困難だし、妥当な選択肢を提示すること自体は理にかなっているが、実際にどのDPI値が設定されたのかが表示されないため、逆にDPI値を理解したユーザーには、わかりにくい部分もある。また、組み合わせは固定なので、たとえば、前記の例で内蔵ディスプレイを96dpiとし、外部ディスプレイを144dpiとするような組み合わせは指定できない。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン