X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=char-db-dump.el;h=f0ff61f8596208c066d7664aea2f3c23a1e23760;hb=34f8420ad67e0282f62f9cb857a293af09f5ace8;hp=b13b32ac133748a89454a633afe34d6a0375e179;hpb=b30b83f8ad2152044affbba336a27c1574c5905a;p=chise%2Ftomoyo-tools.git diff --git a/char-db-dump.el b/char-db-dump.el index b13b32a..f0ff61f 100644 --- a/char-db-dump.el +++ b/char-db-dump.el @@ -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,2020 MORIOKA Tomohiko ;; Author: MORIOKA Tomohiko ;; Keywords: Ideographs, Character Database, CHISE, UCS, Unicode @@ -108,6 +108,7 @@ (#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") @@ -138,13 +139,61 @@ ;;;###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 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 'utf-8-mcs) + (let ((coding-system-for-write char-db-file-coding-system) (code #xE000) chr) (with-temp-buffer - (insert ";; -*- coding: utf-8-mcs -*-\n") + (insert (format ";; -*- coding: %s -*-\n" + char-db-file-coding-system)) (while (<= code #xE8FF) (when (setq chr (decode-char '=ruimoku-v6 code 'defined-only)) (insert-char-data chr)) @@ -152,13 +201,67 @@ (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) + (char-db-dump-additional-idc directory)) ;;; @ End.