+;;;###autoload
+(defun iddef-check-mapping-buffer (buffer)
+ (with-current-buffer buffer
+ (goto-char (point-min))
+ (let (ucs radical plane code ccs chr ret)
+ (while (re-search-forward "^U\\+\\([0-9A-F]+\\)\t\\([0-9]+\\)\t[^\t]*\t[^\t]*\t[^\t]*\t\\([0-9A-C]\\)-\\([0-9A-F][0-9A-F][0-9A-F][0-9A-F]\\)" nil t)
+ (setq ucs (string-to-int (match-string 1) 16)
+ radical (string-to-int (match-string 2))
+ plane (string-to-int (match-string 3) 16)
+ code (string-to-int (match-string 4) 16))
+ (setq ccs
+ (if (= plane 0)
+ (progn
+ (setq chr (decode-char 'chinese-big5 code))
+ (if (and (setq ret (get-char-attribute chr 'ucs))
+ (<= #xE000 ret)(<= ret #xF848))
+ 'chinese-big5-cdp))
+ (intern (format "ideograph-hanziku-%d" plane))))
+ (when ccs
+ (setq chr (decode-char ccs code))
+ (if (setq ret (or (get-char-attribute chr 'ucs)
+ (get-char-attribute chr '=>ucs)
+ (get-char-attribute chr '->ucs)))
+ (unless (= ret ucs)
+ (put-char-attribute chr 'ucs-cdp ucs))
+ (if (eq (get-char-attribute chr ccs) code)
+ (put-char-attribute chr 'ucs ucs)
+ (setq chr (define-char (list (cons 'ucs ucs)
+ (cons ccs code)))))
+ )
+ (unless (get-char-attribute chr 'ideographic-radical)
+ (put-char-attribute chr 'ideographic-radical radical))
+ )))))
+
+;;;###autoload
+(defun iddef-check-mapping-file (file)
+ (interactive "fIDDef file : ")
+ (with-temp-buffer
+ (let ((coding-system-for-read 'utf-8))
+ (insert-file-contents file))
+ (iddef-check-mapping-buffer (current-buffer))))
+