From: tomo Date: Mon, 17 Nov 2003 04:58:16 +0000 (+0000) Subject: (char-cns11643-p): New function. X-Git-Tag: ids-0_0-1~59 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=63469e622ea865f2c35c67457640798242e85d9d;p=chise%2Fids.git (char-cns11643-p): New function. (char-representative-of-cns11643): New function. (ideographic-structure-convert-to-cns11643): New function. --- diff --git a/ids-util.el b/ids-util.el index 5892ac3..bb92955 100644 --- a/ids-util.el +++ b/ids-util.el @@ -62,6 +62,50 @@ (setq structure (cdr structure))) (nreverse dest))) +(defun char-cns11643-p (char &optional defined-only) + (some (lambda (n) + (encode-char char + (intern (format "=cns11643-%d" n)) + defined-only)) + '(1 2 3 4 5 6 7))) + +(defun char-representative-of-cns11643 (char) + (if (char-cns11643-p char) + char + (let ((ucs (char-ucs char)) + variants) + (if (and ucs + (setq variants + (char-variants (decode-char 'ucs ucs)))) + (while (and variants + (setq char (car variants)) + (not (char-cns11643-p char))) + (setq variants (cdr variants)))) + char))) + +(defun ideographic-structure-convert-to-cns11643 (structure) + (let (dest cell ucs ret) + (while structure + (setq cell (car structure)) + (setq dest + (cons + (cond ((characterp cell) + (char-representative-of-cns11643 cell)) + ((and (consp cell) + (symbolp (car cell))) + cell) + ((setq ret (find-char cell)) + (char-representative-of-cns11643 ret)) + ((setq ret (assq 'ideographic-structure cell)) + (put-alist 'ideographic-structure + (ideographic-structure-convert-to-cns11643 + (cdr ret)) + (copy-alist cell))) + (t cell)) + dest)) + (setq structure (cdr structure))) + (nreverse dest))) + (defvar morohashi-char-replace-alist (list (cons (decode-char 'chinese-big5-cdp #x8B42)