HiDPI-новшества Windows 10

Windows 10 предлагает несколько качественных улучшений в масшта­бировании интерфейса несовместимых с HiDPI (High-DPI, Retina) программ:

  • масштабирование без размытия при целочисленных масштабах;
  • переопределение DPI-режима программы в произвольном направлении;
  • качественная отрисовка текста, выводимого средствами GDI;
  • разработчикам: возможность сочетать разные DPI-режимы в одной программе.

Масштабирование без размытия

При целочисленных значениях системного масштаба интерфейс несовместимых с HiDPI программ теперь масштабируется простым повторением пикселов — без неоправданного размытия. Например, при масштабе 200% (2,0) один логический пиксел (точка) интерфейса программы выводится как квадратная группа из 4-х (2×2) одинаковых пикселов, соответствующих системному разрешению, а при масштабе 300% (3,0) — 9-ти пикселов (3×3).

Размытие, ранее имевшее место вне зависимости от коэффициента масштабирования, теперь проявляется только при дробных масштабах — например, 150% (1,5) или 250% (2,5), когда интерполяция (вычисление промежуточных значений) и сопутствующая потеря резкости действительно неизбежны.

Переопределение DPI-режима программы

Начиная с одной из предварительных сборок (предположительно 15002) Windows 10 Insider Preview появилась возможность переопределить HiDPI-совместимость (DPI awareness) программы в произвольном направлении.

Ранее можно было лишь отключить DPI-виртуализацию (DPI scaling, масштабирование средствами ОС) для программ, формально не поддерживающих HiDPI, а на самом деле вполне корректно функционирующих в HiDPI-режиме.

Теперь же при необходимости можно принудительно включить DPI-виртуализацию для программ, заявляющих о наличии поддержки HiDPI, но действий по масштабированию интерфейса программы не пред­принимающих, де-факто привязанных к системным пикселам и потому по умолчанию отрисовываемых очень мелко (например, при масштабе 200% — в 4 раза меньше, чем необходимо) либо некорректно. Примеры таких программ — Samsung Magician, панель управления звуковой карты ESI Juli@ и Acronis True Image Home 2011.

Качественная отрисовка текста средствами GDI

Начиная с вышедшей в начале 2017 года сборки 15002 предварительной версии Windows 10 Insider Preview доступен новый режим «Система (расширенная)» («System (Enhanced)») масштабирования средствами ОС, при котором текст в элементах, отрисовываемых средствами программного механизма GDI, выводится в полном системном разрешении, без размытия или пикселизации.

Параметр «Система (расширенная)» доступен в выпадающем списке параметра «Переопределите режим масштабирования высокого разрешения. Масштабирование выполняется» («Override high DPI scaling behavior. Scaling performed by») в окне, открываемом кнопкой «Изменить параметры высокого DPI» («Change high DPI settings») на вкладке «Совместимость» («Compatibility») в свойствах исполняемого файла.

Например, программа HWMonitor в этом режиме выглядит и работает практически так же, как если бы действительно поддерживала HiDPI. При этом, в отличие от принудительного включения обычного HiDPI-режима (пункт «Приложение» выпадающего списка «Переопределите … Масштабирование выполняется»), не проявляется проблема с автоматической установкой слишком малой ширины столбцов информационной таблицы, составляющей значительную часть интерфейса программы.

К сожалению, эта функция пока работает лишь с некоторыми программами, а в тех, с которыми работает, может приводить к «слипанию» соседних по горизонтали букв при использовании шрифтов с переменной шириной символов — например, в программе Omea Pro для чтения RSS. Кроме того, возможно частичное усечение символов, расположенных по краям области отрисовки текста.

Разные DPI-режимы для окон одной программы

Начиная с обновления Windows 10 Anniversary Update, вышедшего летом 2016 года, разработчикам приложений стало доступно управление DPI-режимом на уровне отдельных окон одной и той же программы — Mixed-Mode DPI Scaling.

Благодаря этому появляется возможность внедрять поддержку HiDPI в существующие сложные программные продукты постепенно, без необходимости вносить изменения сразу во всю программу.

Кроме того, такая возможность может быть полезной в программах с системой плагинов (динамически подключаемых сторонних программных модулей), позволяя масштабировать интерфейс отдельно взятых плагинов (например, виртуальных VST-инструментов) без необходимости запускать их в отдельном процессе.

Полноэкранное масштабирование без размытия?

Для полного счастья владельцам 4K-мониторов теперь, пожалуй, не хватает лишь полноэкранного целочисленного масштабирования без размытия средствами видеодрайвера для исключения потерь качества изображения в таких приложениях, как игры, при их работе в разрешениях, в целое число раз меньших, чем физическое разрешение монитора (например, 1920×1080 или 1280×720 при физическом разрешении 3840×2160).

Microsoft свои ошибки осознала и эффективно исправила, ждём аналогичных шагов со стороны nVidia, AMD и Intel.