Using monitors with high resolution like 4K, where you need to set DPI scaling other than 100%, is pain in the *** in Windows - it causes trouble with many applications. That’s why I want to stick with FullHD monitors as long as possible. One of the apps that doesn’t scale with DPI is Microsoft’s own viewer for CHM files (Microsoft Compiled HTML Help). CHM is a file format commonly used for software help/documentation. It has been introduced with Windows 98 as a replacement for old HLP (WinHelp). Although we read almost everything online these days, some programs and libraries still use it.
A CHM document is completely unreadable on 4K monitor with 200% DPI scaling:
I searched Google for solution. Some sources say there is Font button in the app’s toolbar that lets increase font size, but it doesn’t work in my case. This page says that availability of this button can be configured when creating CHM file. This page mentions some alternative readers for CHM format (Firefox plugin, as well as standalone app).
I know that apps which misbehave under high DPI can be configured to work in “compatibility mode”, when Windows just rescales their window. I found out that executable for this default CHM reader is c:\Windows\hh.exe, but I couldn’t find this setting in Properties of this file. I thought that maybe it’s because the file is located in system directory and owned by the system with insufficient privileges for administrators and normal users, so I came up with following solution that actually works:
- Copy file c:\Windows\hh.exe somewhere else, e.g. to D:\Soft\hh.exe
- Right-click file D:\Soft\hh.exe. Choose Properties -> “hh.exe Properties” window appears.
- Go to Compatibility tab. Check “Override high DPI scaling behavior. Scaling performed by:”. Set combobox below to “System (Enhanced)”. Click OK -> window closes.
- Launch this executable with command-line parameter to browse CHM file of your choice, e.g.:
D:\Soft\hh.exe "d:\AGS_SDK-5.1.1\ags_lib\doc\amd_ags.chm"-> document should open in the browser with font size good for reading. Every pixel is just scaled to 2x2 pixels.