X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=ids-find.el;h=576718ff76dd60c06230c1ed05d7a19e3399a09e;hb=79078d68579c587f85cf6ae712d8ae6e55fee429;hp=c58d022c27019021ee9152107be5b8c12a616f1a;hpb=23db9cfb9450233e212a52c90f7afe55469e4d45;p=chise%2Fids.git diff --git a/ids-find.el b/ids-find.el index c58d022..576718f 100644 --- a/ids-find.el +++ b/ids-find.el @@ -839,12 +839,12 @@ COMPONENT can be a character or char-spec." (list (cond ((characterp (nth 2 enc-str)) - (if (or (eq (encode-char (nth 2 enc-str) '=>ucs@component) - #x20087) - (eq (encode-char (nth 2 enc-str) '=>ucs@component) - #x5382) - (eq (encode-char (nth 2 enc-str) '=>ucs@component) + (if (or (memq (encode-char (nth 2 enc-str) '=>ucs@component) + '(#x20087 #x5382 #x4E06)) + (eq (encode-char (nth 2 enc-str) '=>ucs@iwds-1) #x4E06) + (eq (encode-char (nth 2 enc-str) '=ucs-itaiji-001) + #x2E282) (eq (encode-char (nth 2 enc-str) '=big5-cdp) #x89CE) (eq (encode-char (nth 2 enc-str) '=>big5-cdp) @@ -993,6 +993,26 @@ COMPONENT can be a character or char-spec." a-res (list ?⿱ new-str-c (nth 2 enc-str)) 320)) + ) + ((eq (car enc-str) ?⿰) + (unless conversion-only + (setq f-res (ids-find-chars-including-ids enc-str))) + (setq new-str (list ?⿱ + (nth 2 structure) + (nth 1 enc-str))) + (setq new-str-c + (if (setq ret (ideographic-structure-find-chars new-str)) + (car ret) + (list (cons 'ideographic-structure new-str)))) + (if conversion-only + (list ?⿰ new-str-c (nth 2 enc-str)) + (setq a-res (ids-find-chars-including-ids new-str)) + (list enc + f-res + new-str-c + a-res + (list ?⿰ new-str-c (nth 2 enc-str)) + 330)) )) ) ) @@ -1354,10 +1374,32 @@ COMPONENT can be a character or char-spec." (cdr (assq 'ideographic-structure enc)) ))) (cond - ((eq (car enc-str) ?⿱) - (setq enc2-str (ideographic-character-get-structure (nth 2 enc-str))) - (when (and enc2-str - (eq (car enc2-str) ?⿰)) + ((eq (car enc-str) ?⿱) + (cond + ((and (characterp (nth 2 enc-str)) + (memq (char-ucs (nth 2 enc-str)) + '(#x9580 #x9B25))) + (unless conversion-only + (setq f-res (ids-find-chars-including-ids enc-str))) + (setq new-str (list ?⿵ + (nth 2 enc-str) + (nth 2 structure))) + (setq new-str-c + (if (setq ret (ideographic-structure-find-chars new-str)) + (car ret) + (list (cons 'ideographic-structure new-str)))) + (if conversion-only + (list ?⿱ (nth 1 enc-str) new-str-c) + (setq a-res (ids-find-chars-including-ids new-str)) + (list enc + f-res + new-str-c + a-res + (list ?⿱ (nth 1 enc-str) new-str-c) + 601)) + ) + ((and (setq enc2-str (ideographic-character-get-structure (nth 2 enc-str))) + (eq (car enc2-str) ?⿰)) (unless conversion-only (setq f-res (ids-find-chars-including-ids enc-str))) (setq new-str (list ?⿲ @@ -1377,7 +1419,7 @@ COMPONENT can be a character or char-spec." a-res (list ?⿱ (nth 1 enc-str) new-str-c) 611)) - ) + )) ) ((eq (car enc-str) ?⿳) (setq enc2-str (ideographic-character-get-structure (nth 3 enc-str))) @@ -1484,11 +1526,19 @@ COMPONENT can be a character or char-spec." (setq enc (nth 1 structure)) (when (setq enc-str (cond ((characterp enc) - (get-char-attribute enc 'ideographic-structure) + (or (get-char-attribute enc 'ideographic-structure) + (get-char-attribute enc 'ideographic-structure@apparent)) ) ((consp enc) - (cdr (assq 'ideographic-structure enc)) + (or (cdr (assq 'ideographic-structure enc)) + (cdr (assq 'ideographic-structure@apparent enc))) ))) + (setq enc-str + (mapcar (lambda (cell) + (or (and (listp cell) + (find-char cell)) + cell)) + enc-str)) (cond ((eq (car enc-str) ?⿱) (cond @@ -1520,7 +1570,8 @@ COMPONENT can be a character or char-spec." ) ((and (characterp (nth 2 enc-str)) (memq (char-ucs (nth 2 enc-str)) - '(#x706C + '(#x4E00 + #x706C #x65E5 #x66F0 #x5FC3 #x2123C #x58EC #x738B #x7389))) (unless conversion-only