Sync up with r21-4-21-chise-0_24-8.
[chise/xemacs-chise.git.1] / lisp / utf-2000 / char-db-util.el
index 56da7a9..232904a 100644 (file)
@@ -1,7 +1,7 @@
 ;;; char-db-util.el --- Character Database utility -*- coding: utf-8-er; -*-
 
 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-;;   2007, 2008 MORIOKA Tomohiko.
+;;   2007, 2008, 2009 MORIOKA Tomohiko.
 
 ;; Author: MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
 ;; Keywords: CHISE, Character Database, ISO/IEC 10646, UCS, Unicode, MULE.
     )
    ((find-charset ka)
     (if (find-charset kb)
-       (if (<= (charset-id ka) 1)
-           (if (<= (charset-id kb) 1)
+       (if (or (<= (charset-id ka) 1)
+               (and (charset-final ka)
+                    (>= (charset-final ka) ?@)))
+           (if (or (<= (charset-id kb) 1)
+                   (and (charset-final kb)
+                        (>= (charset-final kb) ?@)))
                (cond
                 ((= (charset-dimension ka)
                     (charset-dimension kb))
-                 (> (charset-id ka)(charset-id kb)))
+                 (if (and (<= (charset-id ka) 1)
+                          (<= (charset-id kb) 1))
+                     (> (charset-id ka)(charset-id kb))
+                   (if (and (charset-final ka)
+                            (charset-final kb))
+                       (cond
+                        ((= (charset-final ka)(charset-final kb))
+                         (if (<= (charset-id ka) 1)
+                             (if (<= (charset-id kb) 1)
+                                 (> (charset-id ka)(charset-id kb))
+                               t)
+                           (if (<= (charset-id kb) 1)
+                               nil
+                             (< (charset-id ka)(charset-id kb))))
+                         )
+                        ((< (charset-final ka)(charset-final kb))
+                         ))
+                     (if (<= (charset-id ka) 1)
+                         (if (<= (charset-id kb) 1)
+                             (> (charset-id ka)(charset-id kb))
+                           t)
+                       (if (<= (charset-id kb) 1)
+                           nil
+                         (cond ((and (charset-final ka)
+                                     (>= (charset-final ka) ?@))
+                                t)
+                               ((and (charset-final kb)
+                                     (>= (charset-final kb) ?@))
+                                nil)
+                               (t
+                                (< (charset-id ka)(charset-id kb))
+                                ))))))
+                 )
                 (t
                  (> (charset-dimension ka)
                     (charset-dimension kb))
                  ))
              t)
-         (if (<= (charset-id kb) 1)
+         (if (or (<= (charset-id kb) 1)
+                 (and (charset-final kb)
+                      (>= (charset-final kb) ?@)))
              nil
            (< (charset-id ka)(charset-id kb))))
       nil))
                        ((setq ret (get-char-attribute char 'name*))
                         (setq char-spec (cons (cons 'name* ret) char-spec))
                         ))
+                 )
+                ((setq ret (get-char-attribute
+                            char 'ideographic-combination))
+                 (setq char-spec
+                       (cons (cons 'ideographic-combination ret)
+                             char-spec))
                  ))
           char-spec)
          ((consp char)