0

We have recently upgraded an application which has been using Java 8 but was upgraded to Java 11 during the process.

Now we are faced with the following problem:

  • Users are working on a HiDPI Laptop (145 DPI)
  • Users have the Windows 10 Option "Scale and Layout" -> "Change the size of text, apps, and other items" set to 125% for better readability
  • The Application does not scale at all because it is not DPI aware (it was simply not developed with HiDPI in mind) and therefore it is too tiny to work with on a 15" laptop
  • After changing the Windows setting for this Application ("Compatibility" -> "Change high DPI settings" -> "Override high DPI scaling behavior" -> "System") the Application does scale to 125% but the looks become blurry

Now, I found that from Java 8 to Java 11 the decision was made that the JRE tells Windows all applications are "DPI aware", but this application was not developed with HiDPI in mind.

What baffles me is that we do not get a blurry GUI with the older version of the software when run on Java 8. This is because of the Windows 10 setting "Display Settings" -> "Advanced Scaling Settings" -> "Fix scaling for apps" (I have confirmed this)

I also found that somewhere between Java 8 and Java 11 the scaling threshold for high DPI was decreased from 150% to 125%.

So, my conclusion is, that because of the scaling threshold the Java 11 RE tells windows that this application is DPI aware. Since this is not the case we manually tell Windows that the System shall scale this application (by overriding the High DPI scaling behaviour and set it to "System"). Now, is there a way to also specifically instruct Windows to apply "Fix scaling for apps" for this application? For some reason overriding the HiDPI behavior with "System" Windows only scales the application by stretching the bitmaps accordingly resulting in a blurry GUI.

0

You must log in to answer this question.

Browse other questions tagged .