Lisp_Object Qmap_decomposition;
 Lisp_Object Qto_decomposition_at_superscript;
 Lisp_Object Q_canonical;
+Lisp_Object Q_superscript_of;
 Lisp_Object Q_compat_of;
 Lisp_Object Q_decomposition;
 Lisp_Object Q_identical;
              else
                Fsetcdr (ret, character);
            }
+         else if (EQ (base, Qsuper))
+           return Q_superscript_of;
          else if (EQ (base, Qcompat))
            return Q_compat_of;
        }
        EQ (attribute, Q_identical)             ||
        EQ (attribute, Q_identical_from)                ||
        EQ (attribute, Q_canonical)             ||
+       EQ (attribute, Q_superscript_of)                ||
        EQ (attribute, Q_compat_of)             ||
        EQ (attribute, Q_component)             ||
        EQ (attribute, Q_component_of)          ||
        !NILP (Fstring_match
              (build_string ("^\\(<-\\|->\\)\\("
                             "canonical"
-                            "\\|compat"
+                            "\\|superscript\\|compat"
                             "\\|fullwidth\\|halfwidth"
                             "\\|simplified\\|vulgar\\|wrong"
                             "\\|same\\|original\\|ancient"
                EQ (attribute, Q_identical)             ||
                EQ (attribute, Q_identical_from)        ||
                EQ (attribute, Q_canonical)             ||
+               EQ (attribute, Q_superscript_of)        ||
                EQ (attribute, Q_compat_of)             ||
                !NILP (Fstring_match
                       (build_string ("^\\(<-\\|->\\)\\(simplified"
   defsymbol (&Qto_decomposition_at_superscript,
             "=>decomposition@superscript");
   defsymbol (&Q_canonical,             "->canonical");
+  defsymbol (&Q_superscript_of,                "<-superscript");
   defsymbol (&Q_compat_of,             "<-compat");
   defsymbol (&Q_decomposition,         "->decomposition");
   defsymbol (&Qcompat,                 "compat");