Включение масштабирования в 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