Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 18748)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 18751)
@@ -842,6 +842,4 @@
         PlatformManager.getPlatform().afterPrefStartupHook();
 
-        applyWorkarounds();
-
         FontsManager.initialize();
 
@@ -914,4 +912,6 @@
         // Configure Look and feel before showing SplashScreen (#19290)
         setupUIManager();
+        // Then apply LaF workarounds
+        applyLaFWorkarounds();
         // MainFrame created before setting look and feel and not updated (#20771)
         SwingUtilities.updateComponentTreeUI(mainFrame);
@@ -1063,5 +1063,9 @@
     }
 
-    static void applyWorkarounds() {
+    /**
+     * Apply workarounds for LaF and platform specific issues. This must be called <i>after</i> the
+     * LaF is set.
+     */
+    static void applyLaFWorkarounds() {
         final String laf = UIManager.getLookAndFeel().getID();
         final int javaVersion = Utils.getJavaVersion();
@@ -1101,4 +1105,10 @@
         if ("Metal".equals(laf) && javaVersion >= 11 && javaVersion < 17) {
             UIManager.put("ToolTipUI", JosmMetalToolTipUI.class.getCanonicalName());
+        }
+
+        // See #20850. The upstream bug (JDK-6396936) is unlikely to ever be fixed due to potential compatibility
+        // issues. This affects Windows LaF only (includes Windows Classic, a sub-LaF of Windows LaF).
+        if ("Windows".equals(laf) && "Monospaced".equals(UIManager.getFont("TextArea.font").getFamily())) {
+            UIManager.put("TextArea.font", UIManager.getFont("TextField.font"));
         }
     }
