From a27cb7151367a9f83563c6ac9adf477d4775eff0 Mon Sep 17 00:00:00 2001 From: tomo Date: Sun, 25 Jul 2004 00:51:00 +0000 Subject: [PATCH] Sync up with r21-4-15-chise-0_21-30-ccs-props. --- ChangeLog | 7 ++ Makefile.in.in | 6 +- lisp/ChangeLog | 36 ++++++++++ lisp/mule/mule-conf.el | 132 +++++++++++++++++----------------- lisp/utf-2000/ChangeLog | 10 +++ lisp/utf-2000/update-cdb.el | 5 +- src/ChangeLog | 43 +++++++++++ src/chartab.c | 12 ++-- src/mule-charset.c | 167 +++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 342 insertions(+), 76 deletions(-) diff --git a/ChangeLog b/ChangeLog index efffe4c..bf896a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-07-20 MORIOKA Tomohiko + + * Makefile.in.in (COPYDIR): Delete ${srcdir}/lib-src/chise-db. + (COPYDESTS): Delete ${archlibdir}/chise-db. + - Use ${etcdir}/chise-db instead of ${archlibdir}/char-db as the + target to create symbolic link for chise-db-directory. + 2003-10-12 MORIOKA Tomohiko * Makefile.in.in: Use chise-db/ instead of char-db/. diff --git a/Makefile.in.in b/Makefile.in.in index dfc5bc5..fbd73f9 100644 --- a/Makefile.in.in +++ b/Makefile.in.in @@ -241,8 +241,8 @@ INSTALL_ARCH_DEP_SUBDIR = @INSTALL_ARCH_DEP_SUBDIR@ ## avoid nuking an existing dir file, so we don't do that here; ## instead, we have written out explicit code in the `install' targets. #ifdef HAVE_CHISE -COPYDIR = ${srcdir}/etc ${srcdir}/lisp ${srcdir}/lib-src/chise-db -COPYDESTS = ${etcdir} ${lispdir} ${archlibdir}/chise-db +COPYDIR = ${srcdir}/etc ${srcdir}/lisp +COPYDESTS = ${etcdir} ${lispdir} #else COPYDIR = ${srcdir}/etc ${srcdir}/lisp COPYDESTS = ${etcdir} ${lispdir} @@ -518,7 +518,7 @@ install-arch-indep: mkdir info chmod 0644 ${mandir}/$${page}${manext} ; \ done #ifdef HAVE_LIBCHISE - ${LN_S} ${archlibdir}/chise-db `${blddir}/src/${PROGNAME} -batch -vanilla -eval "\ + ${LN_S} ${etcdir}/chise-db `${blddir}/src/${PROGNAME} -batch -vanilla -eval "\ (let ((path (expand-file-name \"db\" chise-db-directory)))\ (if (file-exists-p chise-db-directory)\ (if (file-exists-p path)\ diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 30e35ef..3a85bc8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,39 @@ +2004-07-23 MORIOKA Tomohiko + + * mule/mule-conf.el (=big5-cdp): Swap DOC-string and long-name. + (=gt): Likewise. + (=gt-k): Likewise. + (=gt-pj-*): Likewise. + (=gt-pj-k1): Likewise. + (=gt-pj-k2): Likewise. + (=daikanwa): Likewise. + (=daikanwa-rev1): Likewise. + (=daikanwa-rev2): Likewise. + (=big5-pua): Likewise. + (=big5-eten): Likewise. + (chinese-big5-eten-a): Likewise. + (chinese-big5-eten-b): Likewise. + (=hanziku-*): Likewise. + (=cbeta): Likewise. + (=jef-china3): Likewise. + (=ruimoku-v6): Likewise. + (=ucs@iso): Likewise. + (=ucs@unicode): Likewise. + (=ucs@gb): Likewise. + (=ucs@cns): Likewise. + (=ucs@jis): Likewise. + (=ucs@jis-1990): Likewise. + (=ucs@jis-2000): Likewise. + (=ucs@jp): Likewise. + (=ucs@ks): Likewise. + (=ucs@big5): Likewise. + (=ucs-radicals): Likewise. + (=ucs-radicals@unicode): Likewise. + (=ucs-bmp-cjk): Likewise. + (=ucs-bmp-cjk@unicode): Likewise. + (=ucs-sip-ext-b): Likewise. + (=ucs-sip-ext-b@iso): Likewise. + 2004-04-08 MORIOKA Tomohiko * mule/mule-coding.el (coded-charset-entity-reference-alist): Add diff --git a/lisp/mule/mule-conf.el b/lisp/mule/mule-conf.el index 839fca2..d2887cd 100644 --- a/lisp/mule/mule-conf.el +++ b/lisp/mule/mule-conf.el @@ -173,8 +173,8 @@ (define-charset-alias 'japanese-jisx0208-1990 '=jis-x0208-1990) (make-charset '=big5-cdp - "Big5-CDP" - `(long-name "Big5 with CDP extension" + "Big5 with CDP extension" + `(long-name "Big5-CDP" chars 256 dimension 2 columns 2 @@ -187,8 +187,8 @@ (define-charset-alias 'chinese-big5-cdp '=big5-cdp) (make-charset '=gt - "GT" - `(long-name "GT 2000" + "GT 2000" + `(long-name "GT" chars 256 dimension 3 columns 2 @@ -200,8 +200,8 @@ code-offset ,(lsh #x6100 16))) (define-charset-alias 'ideograph-gt '=gt) (make-charset '=gt-k - "GT parts" - `(long-name "Ideographic parts of GT" + "Ideographic components of GT" + `(long-name "GT components" chars 256 dimension 2 columns 2 @@ -216,8 +216,8 @@ (while (<= i 11) (make-charset (intern (format "=gt-pj-%d" i)) - (format "GT PJ %d" i) - `(long-name ,(format "GT 2000 (pseudo JIS encoding) part %d" i) + (format "GT 2000 (pseudo JIS encoding) part %d" i) + `(long-name ,(format "GT PJ %d" i) chars 94 dimension 2 columns 2 @@ -230,8 +230,8 @@ (setq i (1+ i)))) (make-charset '=gt-pj-k1 - "GT K1" - `(long-name "Ideographic parts of GT (pseudo JIS encoding) part 1" + "Ideographic parts of GT (pseudo JIS encoding) part 1" + `(long-name "GT K1" chars 94 dimension 2 columns 2 @@ -241,8 +241,8 @@ (define-charset-alias 'ideograph-gt-pj-k1 '=gt-pj-k1) (make-charset '=gt-pj-k2 - "GT K2" - `(long-name "Ideographic parts of GT (pseudo JIS encoding) part 2" + "Ideographic parts of GT (pseudo JIS encoding) part 2" + `(long-name "GT K2" chars 94 dimension 2 columns 2 @@ -252,8 +252,8 @@ (define-charset-alias 'ideograph-gt-pj-k2 '=gt-pj-k2) (make-charset '=daikanwa - "Daikanwa" - `(long-name "Daikanwa dictionary (revised version 2)" + "Daikanwa dictionary (revised version 2)" + `(long-name "Daikanwa" chars 256 dimension 2 columns 2 @@ -266,8 +266,8 @@ (define-charset-alias 'ideograph-daikanwa '=daikanwa) (make-charset '=daikanwa-rev1 - "Daikanwa Rev." - `(long-name "Daikanwa dictionary (revised version)" + "Daikanwa dictionary (revised version)" + `(long-name "Daikanwa Rev." chars 256 dimension 2 columns 2 @@ -277,8 +277,8 @@ (define-charset-alias 'ideograph-daikanwa-2 '=daikanwa-rev1) (make-charset '=daikanwa-rev2 - "Daikanwa" - `(long-name "Daikanwa dictionary (revised version 2)" + "Daikanwa dictionary (revised version 2)" + `(long-name "Daikanwa" chars 256 dimension 2 columns 2 @@ -290,8 +290,8 @@ code-offset #xE00000)) (make-charset '=big5-pua - "Big5-PUA" - `(long-name "Big5 with private used area" + "Big5 with private used area" + `(long-name "Big5-PUA" chars 256 dimension 2 columns 2 @@ -301,8 +301,8 @@ registry "Big5\\.ETEN")) (define-charset-alias 'chinese-big5-pua '=big5-pua) (make-charset '=big5-eten - "Big5-ETEN" - `(long-name "Big5 ETEN" + "Big5 ETEN" + `(long-name "Big5-ETEN" chars 256 dimension 2 columns 2 @@ -314,8 +314,8 @@ registry "Big5\\.ETEN")) (define-charset-alias 'chinese-big5-eten '=big5-eten) (make-charset 'chinese-big5-eten-a - "Big5-ETEN-a" - `(long-name "Big5 ETEN (#xF9D6 .. #xF9FE)" + "Big5 ETEN (#xF9D6 .. #xF9FE)" + `(long-name "Big5-ETEN-a" chars 256 dimension 2 columns 2 @@ -326,8 +326,8 @@ max-code #xF9FE registry "Big5\\.ETEN")) (make-charset 'chinese-big5-eten-b - "Big5-ETEN-b" - `(long-name "Big5 ETEN (#xC6A1 .. #xC8FE)" + "Big5 ETEN (#xC6A1 .. #xC8FE)" + `(long-name "Big5-ETEN-b" chars 256 dimension 2 columns 2 @@ -344,8 +344,8 @@ (while (<= i 12) (make-charset (intern (format "=hanziku-%d" i)) - (format "HANZIKU-%d" i) - `(long-name ,(format "HANZIKU (pseudo BIG5 encoding) part %d" i) + (format "HANZIKU (pseudo BIG5 encoding) part %d" i) + `(long-name ,(format "HANZIKU-%d" i) chars 256 dimension 2 columns 2 @@ -362,8 +362,8 @@ hzk-max (+ hzk-min 65535)) (setq i (1+ i)))) - (make-charset '=cbeta "CBETA PUA" - '(long-name "CBETA private characters" + (make-charset '=cbeta "CBETA private characters" + '(long-name "CBETA PUA" chars 256 dimension 2 registry "cbeta-0" @@ -376,8 +376,8 @@ (define-charset-alias 'ideograph-cbeta '=cbeta) (make-charset '=jef-china3 - "JEF + CHINA3" - `(long-name "JEF + CHINA3 private characters" + "JEF + CHINA3 private characters" + `(long-name "JEF + CHINA3" chars 256 dimension 2 columns 2 @@ -390,8 +390,8 @@ (define-charset-alias 'china3-jef '=jef-china3) (make-charset '=ruimoku-v6 - "RUI6" - `(long-name "private characters used in RUIMOKU" + "private characters used in RUIMOKU Version.6" + `(long-name "RUI6" chars 256 dimension 2 columns 2 @@ -404,8 +404,8 @@ code-offset ,(- #xE90000 #xE000))) (make-charset '=ucs@iso - "UCS for ISO" - `(long-name "ISO/IEC 10646 for its representative glyphs" + "ISO/IEC 10646 for its representative glyphs" + `(long-name "UCS for ISO" chars 256 dimension 3 columns 2 @@ -413,8 +413,8 @@ direction l2r mother =ucs)) (make-charset '=ucs@unicode - "UCS for Unicode" - `(long-name "Unicode for its representative glyphs" + "Unicode for its representative glyphs" + `(long-name "UCS for Unicode" chars 256 dimension 3 columns 2 @@ -422,8 +422,8 @@ direction l2r mother =ucs@iso)) (make-charset '=ucs@gb - "UCS for GB" - `(long-name "ISO/IEC 10646 for GB" + "ISO/IEC 10646 for GB" + `(long-name "UCS for GB" chars 256 dimension 3 columns 2 @@ -432,8 +432,8 @@ mother =ucs@unicode)) (define-charset-alias 'ucs-gb '=ucs@gb) (make-charset '=ucs@cns - "UCS for CNS" - `(long-name "ISO/IEC 10646 for CNS 11643" + "ISO/IEC 10646 for CNS 11643" + `(long-name "UCS for CNS" chars 256 dimension 3 columns 2 @@ -442,8 +442,8 @@ mother =ucs@unicode)) (define-charset-alias 'ucs-cns '=ucs@cns) (make-charset '=ucs@jis - "UCS for JIS" - `(long-name "ISO/IEC 10646 for JIS X0208/0212/0213" + "ISO/IEC 10646 for JIS X0208/0212/0213" + `(long-name "UCS for JIS" chars 256 dimension 3 columns 2 @@ -452,8 +452,8 @@ mother =ucs@unicode)) (define-charset-alias 'ucs-jis '=ucs@jis) (make-charset '=ucs@jis-1990 - "UCS for JIS:1990" - `(long-name "ISO/IEC 10646 for JIS X 0208/0212:1990" + "ISO/IEC 10646 for JIS X 0208/0212:1990" + `(long-name "UCS for JIS:1990" chars 256 dimension 3 columns 2 @@ -462,8 +462,8 @@ mother ucs-jis)) (define-charset-alias '=ucs-jis-1990 '=ucs@jis-1990) (make-charset '=ucs@jis-2000 - "UCS for JIS:2000" - `(long-name "ISO/IEC 10646 for JIS X 0213:2000" + "ISO/IEC 10646 for JIS X 0213:2000" + `(long-name "UCS for JIS:2000" chars 256 dimension 3 columns 2 @@ -472,8 +472,8 @@ mother ucs-jis)) (define-charset-alias '=ucs-jis-2000 '=ucs@jis-2000) (make-charset '=ucs@jp - "UCS for Japan" - `(long-name "UCS for common glyphs used in Japan" + "UCS for common glyphs used in Japan" + `(long-name "UCS for Japan" chars 256 dimension 3 columns 2 @@ -481,8 +481,8 @@ direction l2r mother =ucs@jis-2000)) (make-charset '=ucs@ks - "UCS for KS" - `(long-name "ISO/IEC 10646 for Korean Standards" + "ISO/IEC 10646 for Korean Standards" + `(long-name "UCS for KS" chars 256 dimension 3 columns 2 @@ -491,8 +491,8 @@ mother =ucs@unicode)) (define-charset-alias 'ucs-ks '=ucs@ks) (make-charset '=ucs@big5 - "UCS for Big5" - `(long-name "ISO/IEC 10646 for Big5" + "ISO/IEC 10646 for Big5" + `(long-name "UCS for Big5" chars 256 dimension 3 columns 2 @@ -503,8 +503,8 @@ (make-charset '=ucs-radicals - "UCS-Radicals" - `(long-name "CJK Radicals of UCS" + "CJK Radicals of UCS" + `(long-name "UCS-Radicals" chars 256 dimension 2 columns 2 @@ -515,8 +515,8 @@ min-code #x2E00 max-code #x2FFF)) (make-charset '=ucs-radicals@unicode - "UCS-Radicals" - `(long-name "CJK Radicals of UCS" + "CJK Radicals of UCS" + `(long-name "UCS-Radicals" chars 256 dimension 2 columns 2 @@ -527,8 +527,8 @@ min-code #x2E00 max-code #x2FFF)) (make-charset '=ucs-bmp-cjk - "UCS-BMP-CJK" - `(long-name "CJK Characters in BMP of UCS" + "CJK Characters in BMP of UCS" + `(long-name "UCS-BMP-CJK" chars 256 dimension 2 columns 2 @@ -539,8 +539,8 @@ min-code #x2E00 max-code #xA4CF)) (make-charset '=ucs-bmp-cjk@unicode - "Unicode-BMP-CJK" - `(long-name "CJK Characters in BMP of Unicode" + "CJK Characters in BMP of Unicode" + `(long-name "Unicode-BMP-CJK" chars 256 dimension 2 columns 2 @@ -551,8 +551,8 @@ min-code #x2E00 max-code #xA4CF)) (make-charset '=ucs-sip-ext-b - "UCS CJK Ext-B" - `(long-name "CJK Ideographs Extension B" + "CJK Ideographs Extension B" + `(long-name "UCS CJK Ext-B" chars 256 dimension 2 columns 2 @@ -564,8 +564,8 @@ code-offset #x20000)) (make-charset '=ucs-sip-ext-b@iso - "UCS CJK Ext-B" - `(long-name "CJK Ideographs Extension B (ISO/IEC 10646-2)" + "CJK Ideographs Extension B (ISO/IEC 10646-2)" + `(long-name "UCS CJK Ext-B" chars 256 dimension 2 columns 2 diff --git a/lisp/utf-2000/ChangeLog b/lisp/utf-2000/ChangeLog index 3d26202..469800b 100644 --- a/lisp/utf-2000/ChangeLog +++ b/lisp/utf-2000/ChangeLog @@ -1,3 +1,13 @@ +2004-07-21 MORIOKA Tomohiko + + * update-cdb.el: Use `save-charset-properties' for all + coded-charsets when building CHISE database. + +2004-07-20 MORIOKA Tomohiko + + * update-cdb.el (system-char-database-directory): Use + `data-directory' instead of `exec-directory'. + 2004-07-16 MORIOKA Tomohiko * Ideograph-R121-Jar.el: Add mappings for Big5 code points. diff --git a/lisp/utf-2000/update-cdb.el b/lisp/utf-2000/update-cdb.el index c011b87..7998799 100644 --- a/lisp/utf-2000/update-cdb.el +++ b/lisp/utf-2000/update-cdb.el @@ -40,8 +40,8 @@ ((featurep 'chise) (defvar system-char-database-directory (expand-file-name "chise-db" - (or exec-directory - "../lib-src/"))) + (or data-directory + "../etc/"))) (defun file-name-char-attribute-name (filename) (let ((i 0) @@ -75,6 +75,7 @@ (save-char-attribute-table attribute)) (dolist (ccs (charset-list)) + (save-charset-properties ccs) (save-charset-mapping-table ccs)) (with-temp-buffer diff --git a/src/ChangeLog b/src/ChangeLog index 03b581d..d5e55e1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,46 @@ +2004-07-23 MORIOKA Tomohiko + + * mule-charset.c (Fsave_charset_properties): Use `true-name' only + for aliases; write `description'; write + `mother-code-{min|max|offset|conversion}' if CHARSET_MAX_CODE is + not 0. + +2004-07-21 MORIOKA Tomohiko + + * chartab.c (Fsave_char_attribute_table): Don't use + `save_charset_properties'. + + * mule-charset.c (Fsave_charset_properties): Renamed from + `save_charset_properties' and changed to Lisp function again; + write property `type' as `CCS'; write properties `final-byte' and + `mother' if they exists. + (syms_of_mule_charset): Revive builtin function + `save-charset-properties' when HAVE_LIBCHISE is defined. + +2004-07-21 MORIOKA Tomohiko + + * chartab.c (open_chise_data_source_maybe): Use Vdata_directory + instead of Vexec_directory. + (char_attribute_system_db_file): Likewise. + +2004-07-17 MORIOKA Tomohiko + + * chartab.c (Fsave_char_attribute_table): Use + `save_charset_properties' for CCS features when HAVE_LIBCHISE is + defined. + + * mule-charset.c (save_charset_properties): Renamed from + `Fsave_charset_properties'; changed to non-Lisp function. + (syms_of_mule_charset): Abolish builtin function + `save-charset-properties'. + +2004-07-15 MORIOKA Tomohiko + + * mule-charset.c (Fsave_charset_properties): New function when + HAVE_LIBCHISE is defined. + (syms_of_mule_charset): Add new builtin function + `save-charset-properties' when HAVE_LIBCHISE is defined. + 2004-06-26 MORIOKA Tomohiko * chartab.c (Fput_char_attribute): Convert char-specs in value of diff --git a/src/chartab.c b/src/chartab.c index 65000a0..d955a1a 100644 --- a/src/chartab.c +++ b/src/chartab.c @@ -3635,11 +3635,11 @@ open_chise_data_source_maybe () { if (default_chise_data_source == NULL) { - Lisp_Object db_dir = Vexec_directory; + Lisp_Object db_dir = Vdata_directory; int modemask = 0755; /* rwxr-xr-x */ if (NILP (db_dir)) - db_dir = build_string ("../lib-src"); + db_dir = build_string ("../etc"); db_dir = Fexpand_file_name (build_string ("chise-db"), db_dir); default_chise_data_source @@ -3743,10 +3743,10 @@ Lisp_Object char_attribute_system_db_file (Lisp_Object key_type, Lisp_Object attribute, int writing_mode) { - Lisp_Object db_dir = Vexec_directory; + Lisp_Object db_dir = Vdata_directory; if (NILP (db_dir)) - db_dir = build_string ("../lib-src"); + db_dir = build_string ("../etc"); db_dir = Fexpand_file_name (build_string ("chise-db"), db_dir); if (writing_mode && NILP (Ffile_exists_p (db_dir))) @@ -3829,7 +3829,9 @@ Save values of ATTRIBUTE into database file. { Lisp_Object (*filter)(Lisp_Object value); - if ( EQ (attribute, Qideographic_structure) + if ( !NILP (Ffind_charset (attribute)) ) + filter = NULL; + else if ( EQ (attribute, Qideographic_structure) || EQ (attribute, Q_identical) || EQ (attribute, Q_identical_from) || !NILP (Fstring_match diff --git a/src/mule-charset.c b/src/mule-charset.c index 6c07d63..0958674 100644 --- a/src/mule-charset.c +++ b/src/mule-charset.c @@ -2363,6 +2363,170 @@ load_char_decoding_entry_maybe (Lisp_Object ccs, int code_point) return -1; #endif /* not HAVE_LIBCHISE */ } + +#ifdef HAVE_LIBCHISE +DEFUN ("save-charset-properties", Fsave_charset_properties, 1, 1, 0, /* +Save properties of CHARSET. +*/ + (charset)) +{ + struct Lisp_Charset *cs; + CHISE_Property property; + Lisp_Object ccs; + unsigned char* feature_name; + + ccs = Fget_charset (charset); + cs = XCHARSET (ccs); + + if ( open_chise_data_source_maybe () ) + return -1; + + if ( SYMBOLP (charset) && !EQ (charset, XCHARSET_NAME (ccs)) ) + { + property = chise_ds_get_property (default_chise_data_source, + "true-name"); + feature_name = XSTRING_DATA (Fsymbol_name (charset)); + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, XSTRING_DATA (Fprin1_to_string (CHARSET_NAME (cs), + Qnil))); + chise_property_sync (property); + } + 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), + property, "CCS"); + chise_property_sync (property); + + property = chise_ds_get_property (default_chise_data_source, "chars"); + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, XSTRING_DATA (Fprin1_to_string (make_int + (CHARSET_CHARS (cs)), + Qnil))); + chise_property_sync (property); + + property = chise_ds_get_property (default_chise_data_source, "dimension"); + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, XSTRING_DATA (Fprin1_to_string (make_int + (CHARSET_DIMENSION (cs)), + Qnil))); + chise_property_sync (property); + + if ( CHARSET_FINAL (cs) != 0 ) + { + property = chise_ds_get_property (default_chise_data_source, + "final-byte"); + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + property, XSTRING_DATA (Fprin1_to_string (make_int + (CHARSET_FINAL (cs)), + Qnil))); + chise_property_sync (property); + } + + if ( !NILP (CHARSET_MOTHER (cs)) ) + { + Lisp_Object mother = CHARSET_MOTHER (cs); + + if ( CHARSETP (mother) ) + mother = XCHARSET_NAME (mother); + + property = chise_ds_get_property (default_chise_data_source, + "mother"); + chise_feature_set_property_value + (chise_ds_get_feature (default_chise_data_source, feature_name), + 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 */ + #endif /* HAVE_CHISE */ #endif /* UTF2000 */ @@ -2704,6 +2868,9 @@ syms_of_mule_charset (void) #ifdef HAVE_CHISE DEFSUBR (Fsave_charset_mapping_table); DEFSUBR (Freset_charset_mapping_table); +#ifdef HAVE_LIBCHISE + DEFSUBR (Fsave_charset_properties); +#endif /* HAVE_LIBCHISE */ #endif /* HAVE_CHISE */ DEFSUBR (Fdecode_char); DEFSUBR (Fdecode_builtin_char); -- 1.7.10.4