Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 15613)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 15614)
@@ -439,6 +439,11 @@
     }
 
+    private static boolean isAllowedPhoneticCharacter(String key, int c) {
+        return c == 0x0259                                          // U+0259 is used as a standard character in azerbaidjani
+            || (key.endsWith("ref") && 0x1D2C <= c && c <= 0x1D42); // allow uppercase superscript latin characters in *ref tags
+    }
+
     private static boolean isUnusualPhoneticUse(String key, UnicodeBlock b, int c) {
-        return c != 0x0259                                              // U+0259 is used as a standard character in azerbaidjani
+        return !isAllowedPhoneticCharacter(key, c)
             && (b == UnicodeBlock.IPA_EXTENSIONS                        // U+0250..U+02AF
              || b == UnicodeBlock.PHONETIC_EXTENSIONS                   // U+1D00..U+1D7F
Index: /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java	(revision 15613)
+++ /trunk/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java	(revision 15614)
@@ -317,4 +317,17 @@
 
     /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/18322">Bug #18322</a>.
+     */
+    @Test
+    public void testTicket18322() {
+        assertTrue(TagChecker.containsUnusualUnicodeCharacter("name", "D36ᴬ"));
+        assertFalse(TagChecker.containsUnusualUnicodeCharacter("ref", "D36ᴬ"));
+        assertFalse(TagChecker.containsUnusualUnicodeCharacter("old_ref", "D36ᴬ"));
+        assertFalse(TagChecker.containsUnusualUnicodeCharacter("old_ref", "D36ᵂ"));
+        assertTrue(TagChecker.containsUnusualUnicodeCharacter("old_ref", "D36ᴫ"));
+        assertTrue(TagChecker.containsUnusualUnicodeCharacter("old_ref", "D36ᵃ"));
+    }
+
+    /**
      * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/18449">Bug #18449</a>.
      */
