update.
[chise/tomoyo-tools.git] / char-db-dump.el
index 0fdf4bb..f0ff61f 100644 (file)
@@ -1,6 +1,6 @@
 ;;; char-db-dump.el --- Dump utility of char-spec files
 
-;; Copyright (C) 2002,2003,2004,2005,2010 MORIOKA Tomohiko
+;; Copyright (C) 2002,2003,2004,2005,2010,2018,2019,2020 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")
                    (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 chr radical radical0)
+    (with-temp-buffer
+      (while (<= code 52101)
+       (when (setq chr (decode-char '=shuowen-jiguge code 'defined-only))
+         (setq radical (get-char-attribute chr 'shuowen-radical))
+         (if radical0
+             (unless (eq radical0 radical)
+               (goto-char (point-min))
+               (insert (format ";; -*- coding: %s -*-\n"
+                               char-db-file-coding-system))
+               (write-region (point-min)(point-max)
+                             (expand-file-name
+                              (format "ShuoWen-SR%03d.el" radical0)
+                              directory))
+               (erase-buffer)
+               (setq radical0 radical))
+           (setq radical0 radical))
+         (insert-char-data-with-variant chr))
+       (setq code (1+ code)))
+      (write-region (point-min)(point-max)
+                   (expand-file-name
+                    (format "ShuoWen-SR%03d.el" radical0) directory)))))
+
+;;;###autoload
 (defun char-db-dump-ruimoku6 (directory)
   (interactive "DDump ruimoku6 : ")
   (let ((coding-system-for-write char-db-file-coding-system)
                    (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)
   (char-db-dump-ideographs directory)
   (char-db-dump-non-ideographs directory)
   (char-db-dump-oracle-bones directory)
+  (char-db-dump-shuowen directory)
   (char-db-dump-ruimoku6 directory)
-  (char-db-dump-additional-precomposed directory))
+  (char-db-dump-additional-precomposed directory)
+  (char-db-dump-additional-idc directory))
 
 
 ;;; @ End.