Sync up with r21-4-22-chise-0_25-9.
[chise/xemacs-chise.git] / lisp / utf-2000 / char-db-util.el
index efa0cab..c4a36c3 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, 2009, 2010 MORIOKA Tomohiko.
+;;   2007, 2008, 2009, 2010, 2011 MORIOKA Tomohiko.
 
 ;; Author: MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
 ;; Keywords: CHISE, Character Database, ISO/IEC 10646, UCS, Unicode, MULE.
     ethiopic-ucs
     =big5-cdp
     =gt
-    ideograph-daikanwa-2
-    ideograph-daikanwa
+    =adobe-japan1-0
+    =adobe-japan1-1
+    =adobe-japan1-2
+    =adobe-japan1-3
+    =adobe-japan1-4
+    =adobe-japan1-5
+    =adobe-japan1-6
+    =hanyo-denshi/ja
+    =hanyo-denshi/jb
+    =hanyo-denshi/jc
+    =hanyo-denshi/jd
+    =hanyo-denshi/ft
+    =hanyo-denshi/ia
+    =hanyo-denshi/ib
+    =hanyo-denshi/hg
+    =hanyo-denshi/ks
+    =daikanwa
+    =daikanwa@rev2
+    =daikanwa@rev1
     =cbeta
     =gt-k
     ideograph-hanziku-1
     ideograph-hanziku-10
     ideograph-hanziku-11
     ideograph-hanziku-12
+    =>>>jis-x0208
+    =>>>jis-x0213-1
     =>>jis-x0208
     =>>jis-x0213-1
     =>>jis-x0213-1@2000
     =>>jis-x0213-1@2004
     =>>jis-x0213-2
     =>>jis-x0208@1978
+    =>>hanyo-denshi/ft
+    =>>hanyo-denshi/ks
     =>>gt
+    =>>daikanwa
     =>jis-x0208@usual
     =>jis-x0208
     =>jis-x0208@1997
     =>ucs@jis
     =>ucs@JP
     =>ucs@cns
+    =>ucs@ks
+    =>>ucs@iso
     =>>ucs@unicode
     =>>ucs@jis
     =>>ucs@cns
+    =>>>ucs@iso
+    =>>>ucs@unicode
     =ucs@iso
     =ucs@unicode
     =>>big5-cdp
     =>daikanwa
     =big5
     =big5-eten
+    =>gt-k
     =zinbun-oracle
     =>zinbun-oracle
     =ruimoku-v6
+    =>>ruimoku-v6
     =jef-china3
     =shinjigen))
 
     (insert-char-attributes char
                            readable
                             (union (mapcar #'car char-spec)
-                                  required-features))
+                                  required-features)
+                           nil 'for-sub-node)
     (when temp-char
       ;; undefine temporary character
       ;;   Current implementation is dirty.
                   (insert-char-attributes ret
                                           readable
                                           (or al 'none) ; cal
-                                          ))
+                                          nil 'for-sub-node))
               (insert (prin1-to-string value)))
             (insert ")")
             (insert line-breaking))
                     (insert-char-attributes ret
                                             readable
                                             al ; cal
-                                            )
+                                            nil 'for-sub-node)
                     (setq separator lbs))
                 (if separator
                     (insert separator))
    (format
     (cond ((memq name '(=shinjigen
                        =shinjigen@1ed
-                       =shinjigen@rev =shinjigen/+p@rev))
+                       =shinjigen@rev =shinjigen/+p@rev
+                       =daikanwa/ho))
           "(%-18s .  %04d)\t; %c")
          ((eq name '=shinjigen@1ed/24pr)
           "(%-18s . %04d)\t; %c")
-         ((or (memq name '(=daikanwa
+         ((or (memq name '(=daikanwa =>>daikanwa =>daikanwa
                            =daikanwa@rev1 =daikanwa@rev2
-                           =>>daikanwa =>daikanwa
-                           =gt =>>gt =>gt =gt-k =>>gt-k =cbeta
+                           =daikanwa/+p =daikanwa/+2p
+                           =gt =>>>gt =>>gt =>gt
+                           =gt-k =>>gt-k =>gt-k
+                           =>>adobe-japan1
+                           =cbeta =>>cbeta
                            =zinbun-oracle =>zinbun-oracle))
               (string-match "^=adobe-" (symbol-name name)))
           "(%-18s . %05d)\t; %c")
-         ((eq name 'mojikyo)
+         ((memq name '(=hanyo-denshi/ks =>>hanyo-denshi/ks mojikyo))
           "(%-18s . %06d)\t; %c")
          ((>= (charset-dimension name) 2)
           "(%-18s . #x%04X)\t; %c")
          (let ((char-db-ignored-attributes
                 (cons '<-subsumptive
                       char-db-ignored-attributes)))
-           (insert-char-attributes cell readable))
+           (insert-char-attributes cell readable nil nil 'for-sub-node))
          (setq separator lbs))
        )
        ((characterp cell)
     (insert ")")
     (insert line-breaking)))
 
-(defun insert-char-attributes (char &optional readable attributes column)
+(defun insert-char-attributes (char &optional readable attributes column
+                                   for-sub-node)
   (unless column
     (setq column (current-column)))
   (let (name value ; has-long-ccs-name
                  #'char-attribute-name<)))
     (insert "(")
     (when (memq '<-subsumptive attributes)
-      (when readable
+      (when (or readable (not for-sub-node))
        (when (setq value (get-char-attribute char '<-subsumptive))
          (char-db-insert-relation-feature char '<-subsumptive value
                                           line-breaking
                        name value (decode-char '=ucs value)
                        line-breaking))
        (setq attributes (delq name attributes))))
-    (dolist (name '(=>ucs@gb =>ucs@ks =>ucs@big5))
+    (dolist (name '(=>ucs@gb =>ucs@big5))
       (when (and (memq name attributes)
                 (setq value (get-char-attribute char name)))
        (insert (format "(%-18s . #x%04X)\t; %c%s"
                     (eq name 'ideographic-combination)
                     (eq name 'ideographic-)
                     (eq name '=decomposition)
-                    (string-match "^=>decomposition" (symbol-name name))
+                    (char-feature-base-name= '=decomposition name)
+                     (char-feature-base-name= '=>decomposition name)
+                     ;; (string-match "^=>*decomposition\\(@[^*]+\\)?$"
+                     ;;               (symbol-name name))
                     (string-match "^\\(->\\|<-\\)[^*]*$" (symbol-name name))
                     (string-match "^\\(->\\|<-\\)[^*]*\\*sources$"
                                   (symbol-name name))
                             (insert lbs))
                         (insert-char-attributes ret
                                                 readable
-                                                al cal)
+                                                al ; cal
+                                                nil 'for-sub-node)
                         (setq separator lbs))
                     (setq ret (prin1-to-string cell))
                     (if separator