X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmule-charset.c;h=4a302bf16cf50dd5ff902968f9bf1f4fe5ca73d6;hb=31a1dec3d2d76b302ea6ce252029a1c9ce564689;hp=2887efce0216e9359f035aef14730cc778983d6f;hpb=071b4ab5b72961ee628523e6232b0f190629f8b6;p=chise%2Fxemacs-chise.git.1 diff --git a/src/mule-charset.c b/src/mule-charset.c index 2887efc..4a302bf 100644 --- a/src/mule-charset.c +++ b/src/mule-charset.c @@ -180,10 +180,10 @@ Lisp_Object put_char_ccs_code_point (Lisp_Object character, Lisp_Object ccs, Lisp_Object value) { - if ( !(EQ (XCHARSET_NAME (ccs), Qmap_ucs) - && INTP (value) && (XINT (value) < 0xF0000)) - || !INTP (value) - /* || (XCHAR (character) != XINT (value)) */ ) + if ( !( EQ (XCHARSET_NAME (ccs), Qmap_ucs) + && INTP (value) && (XINT (value) < 0xF0000) + && XCHAR (character) == XINT (value) ) + || !INTP (value) ) { Lisp_Object v = XCHARSET_DECODING_TABLE (ccs); int code_point; @@ -970,7 +970,7 @@ decode_builtin_char (Lisp_Object charset, int code_point) { if ( CHARSETP (mother) ) { - int code + EMACS_INT code = decode_ccs_conversion (XCHARSET_CONVERSION (charset), code_point); @@ -2381,7 +2381,7 @@ Save properties of CHARSET. if ( open_chise_data_source_maybe () ) return -1; - if ( SYMBOLP (charset) ) + if ( SYMBOLP (charset) && !EQ (charset, XCHARSET_NAME (ccs)) ) { property = chise_ds_get_property (default_chise_data_source, "true-name"); @@ -2395,6 +2395,14 @@ Save properties of CHARSET. charset = XCHARSET_NAME (ccs); feature_name = XSTRING_DATA (Fsymbol_name (charset)); + property = chise_ds_get_property (default_chise_data_source, + "description"); + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, XSTRING_DATA (Fprin1_to_string + (CHARSET_DOC_STRING (cs), Qnil))); + chise_property_sync (property); + property = chise_ds_get_property (default_chise_data_source, "type"); chise_feature_set_property_value (chise_ds_get_feature (default_chise_data_source, feature_name), @@ -2443,6 +2451,78 @@ Save properties of CHARSET. property, XSTRING_DATA (Fprin1_to_string (mother, Qnil))); chise_property_sync (property); } + + if ( CHARSET_MAX_CODE (cs) != 0 ) + { + char str[16]; + + property = chise_ds_get_property (default_chise_data_source, + "mother-code-min"); + if ( CHARSET_MIN_CODE (cs) == 0 ) + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, "0"); + else + { + sprintf (str, "#x%X", CHARSET_MIN_CODE (cs)); + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, str); + } + chise_property_sync (property); + + property = chise_ds_get_property (default_chise_data_source, + "mother-code-max"); + sprintf (str, "#x%X", CHARSET_MAX_CODE (cs)); + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, str); + chise_property_sync (property); + + property = chise_ds_get_property (default_chise_data_source, + "mother-code-offset"); + if ( CHARSET_CODE_OFFSET (cs) == 0 ) + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, "0"); + else + { + sprintf (str, "#x%X", CHARSET_CODE_OFFSET (cs)); + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, str); + } + chise_property_sync (property); + + property = chise_ds_get_property (default_chise_data_source, + "mother-code-conversion"); + if ( CHARSET_CONVERSION (cs) == CONVERSION_IDENTICAL ) + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, "identical"); + else + { + Lisp_Object sym = Qnil; + + if ( CHARSET_CONVERSION (cs) == CONVERSION_94x60 ) + sym = Q94x60; + else if ( CHARSET_CONVERSION (cs) == CONVERSION_94x94x60 ) + sym = Q94x94x60; + else if ( CHARSET_CONVERSION (cs) == CONVERSION_BIG5_1 ) + sym = Qbig5_1; + else if ( CHARSET_CONVERSION (cs) == CONVERSION_BIG5_2 ) + sym = Qbig5_2; + if ( !NILP (sym) ) + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, XSTRING_DATA (Fprin1_to_string (sym, Qnil))); + else + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, "unknown"); + } + chise_property_sync (property); + } return Qnil; } #endif /* HAVE_LIBCHISE */ @@ -2483,7 +2563,8 @@ Make a builtin character from CHARSET and code-point CODE. */ (charset, code)) { - int c; + EMACS_INT c; + Emchar ch; charset = Fget_charset (charset); CHECK_INT (code); @@ -2517,9 +2598,9 @@ Make a builtin character from CHARSET and code-point CODE. if (XCHARSET_GRAPHIC (charset) == 1) c &= 0x7F7F7F7F; #endif - c = decode_builtin_char (charset, c); + ch = decode_builtin_char (charset, c); return - c >= 0 ? make_char (c) : Fdecode_char (charset, code, Qnil, Qnil); + ch >= 0 ? make_char (ch) : Fdecode_char (charset, code, Qnil, Qnil); } #endif @@ -2847,10 +2928,10 @@ syms_of_mule_charset (void) defsymbol (&Qlatin_jisx0201, "latin-jisx0201"); defsymbol (&Qcyrillic_iso8859_5, "cyrillic-iso8859-5"); defsymbol (&Qlatin_iso8859_9, "latin-iso8859-9"); - defsymbol (&Qmap_jis_x0208_1978, "=jis-x0208-1978"); + defsymbol (&Qmap_jis_x0208_1978, "=jis-x0208@1978"); defsymbol (&Qmap_gb2312, "=gb2312"); defsymbol (&Qmap_gb12345, "=gb12345"); - defsymbol (&Qmap_jis_x0208_1983, "=jis-x0208-1983"); + defsymbol (&Qmap_jis_x0208_1983, "=jis-x0208@1983"); defsymbol (&Qmap_ks_x1001, "=ks-x1001"); defsymbol (&Qmap_jis_x0212, "=jis-x0212"); defsymbol (&Qmap_cns11643_1, "=cns11643-1"); @@ -2869,7 +2950,7 @@ syms_of_mule_charset (void) defsymbol (&Qvietnamese_viscii_lower, "vietnamese-viscii-lower"); defsymbol (&Qvietnamese_viscii_upper, "vietnamese-viscii-upper"); defsymbol (&Qmap_jis_x0208, "=jis-x0208"); - defsymbol (&Qmap_jis_x0208_1990, "=jis-x0208-1990"); + defsymbol (&Qmap_jis_x0208_1990, "=jis-x0208@1990"); defsymbol (&Qmap_big5, "=big5"); defsymbol (&Qethiopic_ucs, "ethiopic-ucs"); #endif