Lisp_Object Q_superscript_of;
 Lisp_Object Q_subscript_of;
 Lisp_Object Q_circled_of;
-Lisp_Object Q_compat_of;
 Lisp_Object Q_decomposition;
 Lisp_Object Q_identical;
 Lisp_Object Q_identical_from;
            return Q_subscript_of;
          else if (EQ (base, Qcircle))
            return Q_circled_of;
-         else if (EQ (base, Qcompat))
-           return Q_compat_of;
+         else if (SYMBOLP (base))
+           return
+             Fintern (concat2 (build_string ("<-"),
+                               Fsymbol_name (base)),
+                      Qnil);
        }
       else if (EQ (XCAR (value), Qsuper))
        return Qto_decomposition_at_superscript;
       else
        return
          Fintern (concat2 (build_string ("=>decomposition@"),
-                           symbol_name (XSYMBOL (XCAR (value)))),
+                           Fsymbol_name (XCAR (value))),
                   Qnil);
     }
   else
        EQ (attribute, Q_superscript_of)                ||
        EQ (attribute, Q_subscript_of)          ||
        EQ (attribute, Q_circled_of)            ||
-       EQ (attribute, Q_compat_of)             ||
        EQ (attribute, Q_component)             ||
        EQ (attribute, Q_component_of)          ||
        !NILP (Fstring_match
              (build_string ("^\\(<-\\|->\\)\\("
                             "canonical"
                             "\\|superscript\\|subscript"
-                            "\\|circled\\|compat"
+                            "\\|circled\\|font\\|compat"
                             "\\|fullwidth\\|halfwidth"
                             "\\|simplified\\|vulgar\\|wrong"
                             "\\|same\\|original\\|ancient"
                EQ (attribute, Q_superscript_of)        ||
                EQ (attribute, Q_subscript_of)          ||
                EQ (attribute, Q_circled_of)            ||
-               EQ (attribute, Q_compat_of)             ||
                !NILP (Fstring_match
                       (build_string ("^\\(<-\\|->\\)\\(simplified"
                                      "\\|same\\|vulgar\\|wrong"
   defsymbol (&Q_superscript_of,                "<-superscript");
   defsymbol (&Q_subscript_of,          "<-subscript");
   defsymbol (&Q_circled_of,            "<-circled");
-  defsymbol (&Q_compat_of,             "<-compat");
   defsymbol (&Q_decomposition,         "->decomposition");
   defsymbol (&Qcompat,                 "compat");
   defsymbol (&Qisolated,               "isolated");