update.
[chise/tomoyo-tools.git] / char-db-dump.el
index f3aec36..8404118 100644 (file)
@@ -1,6 +1,6 @@
 ;;; char-db-dump.el --- Dump utility of char-spec files
 
-;; Copyright (C) 2002,2003,2004 MORIOKA Tomohiko
+;; Copyright (C) 2002,2003,2004,2005,2010,2018,2019 MORIOKA Tomohiko
 
 ;; Author: MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
 ;; Keywords: Ideographs, Character Database, CHISE, UCS, Unicode
     (#x3130 #x318F "u03130-Hangul-Compatibility-Jamo.el")
     (#x3190 #x319F "u03190-Kanbun.el")
     (#x31A0 #x31BF "u031A0-Bopomofo-Extended.el")
+    (#x31C0 #x31EF "u031C0-CJK-Strokes.el")
     (#x31F0 #x31FF "u031F0-Katakana-Phonetic-Extensions.el")
     (#x3200 #x32FF "u03200-Enclosed-CJK-Letters-and-Months.el")
     (#x3300 #x33FF "u03300-CJK-Compatibility.el")
 
 
 ;;;###autoload
+(defun char-db-dump-oracle-bones (directory)
+  (interactive "DDump Oracle-Bones : ")
+  (let ((coding-system-for-write char-db-file-coding-system)
+       (code 1)
+       chr a-chr)
+    (with-temp-buffer
+      (insert (format ";; -*- coding: %s -*-\n"
+                     char-db-file-coding-system))
+      (while (<= code 8192)
+       (when (setq chr (decode-char '=zinbun-oracle code 'defined-only))
+         (setq a-chr (decode-char '=>zinbun-oracle code 'defined-only))
+         (unless (eq a-chr chr)
+           (insert-char-data a-chr))
+         (insert-char-data chr))
+       (setq code (1+ code)))
+      (write-region (point-min)(point-max)
+                   (expand-file-name "Oracle-Bones.el" directory)))))
+
+;;;###autoload
+(defun char-db-dump-shuowen (directory)
+  (interactive "DDump Shuowen : ")
+  (let ((coding-system-for-write char-db-file-coding-system)
+       (code 1)
+       chr)
+    (with-temp-buffer
+      (insert (format ";; -*- coding: %s -*-\n"
+                     char-db-file-coding-system))
+      (while (<= code 52101)
+       (when (setq chr (decode-char '=shuowen-jiguge code 'defined-only))
+         (insert-char-data-with-variant chr))
+       (setq code (1+ code)))
+      (write-region (point-min)(point-max)
+                   (expand-file-name "ShuoWen.el" directory)))))
+
+;;;###autoload
 (defun char-db-dump-ruimoku6 (directory)
   (interactive "DDump ruimoku6 : ")
   (let ((coding-system-for-write char-db-file-coding-system)
       (write-region (point-min)(point-max)
                    (expand-file-name "ruimoku6.el" directory)))))
 
+;;;###autoload
+(defun char-db-dump-additional-precomposed (directory)
+  (interactive "DDump additional-precomposed : ")
+  (let ((coding-system-for-write char-db-file-coding-system))
+    (with-temp-buffer
+      (insert (format ";; -*- coding: %s -*-\n"
+                     char-db-file-coding-system))
+      (map-char-attribute
+       (lambda (char value)
+        (unless (char-ucs char)
+          (unless (char-ucs char)
+            (insert-char-data char)))
+        nil)
+       '=decomposition)
+      (write-region (point-min)(point-max)
+                   (expand-file-name
+                    "additional-precomposed.el" directory)))))
+
+;;;###autoload
+(defun char-db-dump-additional-idc (directory)
+  (interactive "DDump additional-precomposed : ")
+  (let ((coding-system-for-write char-db-file-coding-system)
+       chars i chr ret)
+    (with-temp-buffer
+      (insert (format ";; -*- coding: %s -*-\n"
+                     char-db-file-coding-system))
+      (setq i #x2FF0)
+      (while (<= i #x2ffB)
+       (setq chr (decode-char '=ucs i))
+       (dolist (f '(<-denotational <-denotational@component
+                                   <-denotational@arg-reversed))
+         (setq ret (get-char-attribute chr f))
+         (if (characterp ret)
+             (unless (memq ret chars)
+               (insert-char-data ret)
+               (setq chars (cons ret chars)))
+           (dolist (c (get-char-attribute chr f))
+             (unless (memq c chars)
+               (insert-char-data c)
+               (setq chars (cons c chars))))))
+       (dolist (ccs '(=ucs-var-001 =ucs-var-002 =ucs-var-003 =ucs-itaiji-001))
+         (when (setq chr (decode-char ccs i 'defined-only 'without-inheritance))
+           (unless (memq chr chars)
+             (insert-char-data chr)
+             (setq chars (cons chr chars)))))
+       (setq i (1+ i)))
+      (write-region (point-min)(point-max)
+                   (expand-file-name
+                    "additional-idc.el" directory)))))
+
 
 ;;;###autoload
 (defun char-db-dump (directory)
   (interactive "DDirectory to dump : ")
   (char-db-dump-ideographs directory)
   (char-db-dump-non-ideographs directory)
-  (char-db-dump-ruimoku6 directory))
+  (char-db-dump-oracle-bones directory)
+  (char-db-dump-shuowen directory)
+  (char-db-dump-ruimoku6 directory)
+  (char-db-dump-additional-precomposed directory))
 
 
 ;;; @ End.