X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fchartab.c;h=b05f7d7503b0485ba7b60df229bc501630b9ea01;hb=57cf46d8d547a5868c31558648a3617a721e972b;hp=f0cacbe42aa0fb59a3bd923a92b950f428cd6142;hpb=3a811f70ab469dcf2cdfab4729af5e0cbde633c6;p=chise%2Fxemacs-chise.git diff --git a/src/chartab.c b/src/chartab.c index f0cacbe..b05f7d7 100644 --- a/src/chartab.c +++ b/src/chartab.c @@ -1134,10 +1134,10 @@ Lisp_Object Qmap_decomposition; Lisp_Object Qto_decomposition_at_superscript; Lisp_Object Qto_decomposition_at_circled; Lisp_Object Q_canonical; +Lisp_Object Q_halfwidth_of; 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; @@ -3432,14 +3432,27 @@ put_char_composition (Lisp_Object character, Lisp_Object value) else Fsetcdr (ret, character); } + else if (EQ (base, Qnarrow)) + return Q_halfwidth_of; else if (EQ (base, Qsuper)) return Q_superscript_of; else if (EQ (base, Qsub)) return Q_subscript_of; else if (EQ (base, Qcircle)) return Q_circled_of; - else if (EQ (base, Qcompat)) - return Q_compat_of; + else if ( EQ (base, Qisolated)|| + EQ (base, Qinitial) || + EQ (base, Qmedial) || + EQ (base, Qfinal) ) + return + Fintern (concat2 (build_string ("<-formed@"), + Fsymbol_name (base)), + Qnil); + else if (SYMBOLP (base)) + return + Fintern (concat2 (build_string ("<-"), + Fsymbol_name (base)), + Qnil); } else if (EQ (XCAR (value), Qsuper)) return Qto_decomposition_at_superscript; @@ -3448,7 +3461,7 @@ put_char_composition (Lisp_Object character, Lisp_Object value) else return Fintern (concat2 (build_string ("=>decomposition@"), - symbol_name (XSYMBOL (XCAR (value)))), + Fsymbol_name (XCAR (value))), Qnil); } else @@ -3517,6 +3530,7 @@ Store CHARACTER's ATTRIBUTE with VALUE. else if ( EQ (attribute, Qmap_decomposition) || EQ (attribute, Q_decomposition) ) { + value = Fcopy_sequence (Fchar_refs_simplify_char_specs (value)); attribute = put_char_composition (character, value); if ( !EQ (attribute, Qmap_decomposition) && SYMBOLP (XCAR (value)) ) @@ -3548,23 +3562,19 @@ Store CHARACTER's ATTRIBUTE with VALUE. EQ (attribute, Q_identical) || EQ (attribute, Q_identical_from) || EQ (attribute, Q_canonical) || + EQ (attribute, Q_halfwidth_of) || 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" - "\\|fullwidth\\|halfwidth" - "\\|simplified\\|vulgar\\|wrong" - "\\|same\\|original\\|ancient" - "\\|Oracle-Bones\\)[^*]*$"), - Fsymbol_name (attribute), - Qnil, Qnil)) ) + ( !EQ (attribute, Q_ucs_unified) + && !NILP (Fstring_match + (build_string ("^\\(<-\\|->\\)[^*]*$"), + Fsymbol_name (attribute), + Qnil, Qnil)) + ) + ) { Lisp_Object rest = value; Lisp_Object ret; @@ -3908,10 +3918,10 @@ Save values of ATTRIBUTE into database file. EQ (attribute, Q_identical) || EQ (attribute, Q_identical_from) || EQ (attribute, Q_canonical) || + EQ (attribute, Q_halfwidth_of) || 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" @@ -4698,10 +4708,10 @@ syms_of_chartab (void) "=>decomposition@superscript"); defsymbol (&Qto_decomposition_at_circled, "=>decomposition@circled"); defsymbol (&Q_canonical, "->canonical"); + defsymbol (&Q_halfwidth_of, "<-halfwidth"); 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");