Lisp_Object Qcomposition;
Lisp_Object Qmap_decomposition;
+Lisp_Object Qto_decomposition_at_compat;
Lisp_Object Q_canonical;
+Lisp_Object Q_compat_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_compat_of;
}
+ else if (EQ (XCAR (value), Qcompat))
+ return Qto_decomposition_at_compat;
}
else
{
EQ (attribute, Q_decomposition) )
{
attribute = put_char_composition (character, value);
+ if ( EQ (attribute, Q_compat_of) ||
+ EQ (attribute, Qto_decomposition_at_compat) )
+ 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_compat_of) ||
EQ (attribute, Q_component) ||
EQ (attribute, Q_component_of) ||
!NILP (Fstring_match
(build_string ("^\\(<-\\|->\\)\\("
- "fullwidth\\|halfwidth"
+ "canonical"
+ "\\|compat"
+ "\\|fullwidth\\|halfwidth"
"\\|simplified\\|vulgar\\|wrong"
"\\|same\\|original\\|ancient"
"\\|Oracle-Bones\\)[^*]*$"),
UNGCPRO;
}
#if 1
- else if (EQ (attribute, Qideographic_structure))
+ else if ( EQ (attribute, Qideographic_structure) ||
+ !NILP (Fstring_match
+ (build_string ("^=>decomposition\\(\\|@[^*]+\\)$"),
+ Fsymbol_name (attribute),
+ Qnil, Qnil)) )
value = Fcopy_sequence (Fchar_refs_simplify_char_specs (value));
#endif
return put_char_attribute (character, attribute, value);
EQ (attribute, Q_identical) ||
EQ (attribute, Q_identical_from) ||
EQ (attribute, Q_canonical) ||
+ EQ (attribute, Q_compat_of) ||
!NILP (Fstring_match
(build_string ("^\\(<-\\|->\\)\\(simplified"
"\\|same\\|vulgar\\|wrong"
defsymbol (&Q_component_of, "<-ideographic-component-forms");
defsymbol (&Qcomposition, "composition");
defsymbol (&Qmap_decomposition, "=decomposition");
+ defsymbol (&Qto_decomposition_at_compat, "=>decomposition@compat");
defsymbol (&Q_canonical, "->canonical");
+ defsymbol (&Q_compat_of, "<-compat");
defsymbol (&Q_decomposition, "->decomposition");
defsymbol (&Qcompat, "compat");
defsymbol (&Qisolated, "isolated");