0

We have a Java web application (external and unmanaged by us) that runs with jp2launcher.exe in IE11 on Win 10 but the font displays far too small on a high DPI device. I've tried lots of things to make it look better, but nothing seems to work?

I've tried (we are using 7u51 x86):

  • Changing Zoom options in the browser, and scaling on the OS itself
  • Setting HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\PreferExternalManifests to a DWORD of 1, and created java.exe.manifest, javaws.exe.manifest, javaw.exe.manifest and jp2launcher.exe.manifest. I created the manifest by obtaining the original manifest using Resource Explorer, and changing (or adding) DpiAware to true.

  • I've right-clicked, properties on each file, gone to compatibility tab, change high DPI settings and set to override System (or System/Enhanced).

  • I wasn't convinced the manifest files were even being read. So I rebooted and that didn't work. I updated the exe timestamp (http://csi-windows.com/blog/all/27-csi-news-general/245-find-out-why-your-external-manifest-is-being-ignored) and that didn't work. Then I decided to edit the internal manifest and set DpiAware to false and that didn't work either.

  • I also checked in Task Manager to ensure I was creating a manifest for the correct processes/executables. I believe the DpiAware is fixed in JRE9/10 9 (?) but the web application only appears to work on x86 JRE, and versions 9 and beyond are only available in x64!

Any advice appreciated. I'm stumped.

Captain_Planet
  • 1,228
  • 1
  • 12
  • 28
  • 1
    Java *is* DPI aware according to its manifest. That’s why the graphic is not scale up. But prior to Java 9, it didn’t actually respect the scaling factor. That’s why it is rendered smaller than native graphic. But that’s an AWT/Swing issue. I don’t see how it can affect the rendering of the Internet Explorer. Unless your “web application” isn’t a web application. – Holger Feb 24 '20 at 11:46
  • "Java is DPI aware according to its manifest" - some JRE7 and JRE8 were not. The last version to have DPIAware in the internal manifest (prior to JRE9) is JRE8u192. I thought if it is DPI aware it would say "Hey, I have detected that this is high DPI so will scale up"? You imply it's the opposite? The website i am testing uses JP2Launcher.exe to launch Java in the browser (IE11). I have checked the manifest for that also and it has DPIAware set to true. The trouble is it requires x86 JRE, and i don't think JRE9 comes as x86? – Captain_Planet Feb 24 '20 at 12:33
  • 1
    How is a website using an exe file? Or do you mean it is an applet or webstart application which is just handled by the locally installed exe? The DPI aware flag only tells the operating system “I know that there’s a factor to consider (so don’t do a bitmap scaling on my output)”. It doesn’t prove that the application truly handles the factor. See [the last comment of bug report JDK-8187151](https://bugs.openjdk.java.net/browse/JDK-8187151?focusedCommentId=14115378&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14115378). – Holger Feb 24 '20 at 13:04
  • Yes sorry, it's an applet. Thanks for the clarification. – Captain_Planet Feb 24 '20 at 14:13
  • 2
    Then, the problem is not the CPU architecture. There are builds of newer JREs for x86. The problem is that they don’t have applet support. Only the Oracle builds had it and they did indeed not publish the x86 builds. But since JDK 11, the applet support has been dropped completely. – Holger Feb 24 '20 at 14:36

0 Answers0