OK, since I found the solution I shall answer my own post.
When you right click the desktop, select personalise, then click "Adjust font size (DPI)", vista runs a program called dpiscaling.exe. This has two radio buttons for the "standard" settings - Default scale (96 DPI) and Larger Scale (120 DPI). There is a button for selecting a Custom DPI.
When you click the custom DPI button, there is a check box "Use Windows XP DPI scaling". If this is unchecked, you will end up with the blurred fonts I experienced even if you reselect one of the standard DPIs (96 or 120). This is extremely poor user interface practice from Microsoft - an option that is actually applicable to one of the standard DPIs is hidden in another dialog. [For those who are interested, dpiscaling.exe writes this option to the registry under this key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\DWM - there is a value UseDPIScaling which MUST BE ZERO if you want sharp fonts]
So, why does this apply only to certain applications? Well, under vista, applications can control the way vista scales their fonts by calling a function from the Win32 API: SetProcessDPIAware(). Windows applications developed using "modern" frameworks - e.g. with the .NET framework automatically call this function. Applications developed with older frameworks (older versions of MFC, WTL) or just directly using the win32 API do not call it.
|