Включение масштабирования в Photoshop на HiDPI разрешениях

На ноутбуках с FullHD матрицами с разрешениями HiDPI под управлением операционной системы Windows 8 масштабирование некоторых приложений работает не совсем корректно. На Apple устройствах с retina дисплеем масштабирование реализовано вполне сносно, но Windows 8, как водится, не всегда может похвастаться идеальными решениями.

Например я лично столкнулся с очень мелкими значками в программе Photoshop. Как это обычно со мной случается, я этого так не оставил, и перерыл весь рунет и немножко зарубежной части Интернета в поисках решения. В компании Adobe отрицают наличие проблемы и не собираются масштабировать шрифты в своих приложениях под HiDPI ( в Adobe Photoshop CS 6 они такие же мелкие как в Adobe Photoshop CS 4 ). В Microsoft тоже нет единого решения или критического обновления по этому поводу. Обновление с Windows 8 до Windows 8.1 проблему не решает, а ближайший апдейт Windows 8.1 до Windows 8.2 выйдет в октябре 2014 года.

PhotoshopCCOriginal

Original (оригинальное отображение интерфейса Photoshop на ноутбуках с HiDPI)

PhotoshopCCScaled

Scaled (масштабирование после manifest)

Решение которое я нашел

Во-первых, нужно в реестре создать ключ

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\PreferExternalManifest

Тип DWORD принимает значение 1

Во-вторых, в папке с установленным Photoshop разместите файл photoshop.exe.manifest следующего содержания:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">

<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*">
</assemblyIdentity>
</dependentAssembly>
</dependency>

<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>

<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware>
</asmv3:windowsSettings>
</asmv3:application>

</assembly>

Этот файл включает масштабирование на HiDPI и отображает интерфейс Adobe Photoshop так как если бы он был запущен на не HiDPI разрешении.

При чем точное значение тэга <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"> можно найти в файле Microsoft.VC90.CRT.manifest который располагается в папке с установленным Photoshop

А dpiAware может принимать значения: true, false, Per monitor, true/Per monitor

<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware>

Последние два значения это нововведения Windows 8.1

Прочие полезные ссылки:

http://msdn.microsoft.com/en-us/library/windows/desktop/dn469266%28v=vs.85%29.aspx
http://blogs.msdn.com/b/mspfe/archive/2013/11/12/dpi-aware-managed-applications-on-windows-8-1.aspx
http://forums.adobe.com/message/6034700
http://channel9.msdn.com/Events/Build/2013/4-184