Lisp_Object Qcomposition;
Lisp_Object Qmap_decomposition;
Lisp_Object Q_canonical;
+Lisp_Object Q_compatibility_of;
Lisp_Object Q_decomposition;
Lisp_Object Q_identical;
Lisp_Object Q_identical_from;
signal_simple_error ("Invalid value for =decomposition",
value);
- if (CONSP (Fcdr (value)))
+ if (CONSP (XCDR (value)))
{
- if (NILP (Fcdr (Fcdr (value))))
+ if (NILP (Fcdr (XCDR (value))))
{
- Lisp_Object base = Fcar (value);
- Lisp_Object modifier = Fcar (Fcdr (value));
+ Lisp_Object base = XCAR (value);
+ Lisp_Object modifier = XCAR (XCDR (value));
if (INTP (base))
{
if (INTP (modifier))
{
modifier = make_char (XINT (modifier));
- Fsetcar (Fcdr (value), modifier);
+ Fsetcar (XCDR (value), modifier);
}
if (CHARP (base))
{
else
Fsetcdr (ret, character);
}
+ else if (EQ (base, Qcompat))
+ return Q_compatibility_of;
}
}
else
EQ (attribute, Q_decomposition) )
{
attribute = put_char_composition (character, value);
+ if (EQ (attribute, Q_compatibility_of))
+ value = XCDR (value);
}
else if (EQ (attribute, Qto_ucs))
{
EQ (attribute, Q_identical) ||
EQ (attribute, Q_identical_from) ||
EQ (attribute, Q_canonical) ||
+ EQ (attribute, Q_compatibility_of) ||
EQ (attribute, Q_component) ||
EQ (attribute, Q_component_of) ||
!NILP (Fstring_match
(build_string ("^\\(<-\\|->\\)\\("
- "fullwidth\\|halfwidth"
+ "canonical"
+ "\\|compatibility"
+ "\\|fullwidth\\|halfwidth"
"\\|simplified\\|vulgar\\|wrong"
"\\|same\\|original\\|ancient"
"\\|Oracle-Bones\\)[^*]*$"),
EQ (attribute, Q_identical) ||
EQ (attribute, Q_identical_from) ||
EQ (attribute, Q_canonical) ||
+ EQ (attribute, Q_compatibility_of) ||
!NILP (Fstring_match
(build_string ("^\\(<-\\|->\\)\\(simplified"
"\\|same\\|vulgar\\|wrong"
defsymbol (&Qcomposition, "composition");
defsymbol (&Qmap_decomposition, "=decomposition");
defsymbol (&Q_canonical, "->canonical");
+ defsymbol (&Q_compatibility_of, "<-compatibility");
defsymbol (&Q_decomposition, "->decomposition");
defsymbol (&Qcompat, "compat");
defsymbol (&Qisolated, "isolated");