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