From: MORIOKA Tomohiko Date: Sun, 13 Sep 2020 06:05:10 +0000 (+0900) Subject: (ideographic-structure-compare-functional-and-apparent): X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=eaa9feeed7c190a5f856e58a218487cd0593d055;p=chise%2Fids.git (ideographic-structure-compare-functional-and-apparent): - Implement rule-415: ⿴⿳A囗BC -> ⿱⿱A⿴囗CB. - Implement rule-416: ⿴⿳A冖BC -> ⿱⿱⿱A冖CB. - Implement rule-417: ⿴⿳A&CDP-89A6;BC -> ⿱A⿸⿱C&CDP-89A6;B. - Implement rule-419 (fallback): ⿴⿳AEBC -> ⿱⿱A⿻ECB. --- diff --git a/ids-find.el b/ids-find.el index db20f4c..32bffc7 100644 --- a/ids-find.el +++ b/ids-find.el @@ -1452,8 +1452,109 @@ COMPONENT can be a character or char-spec." (list ?⿱ (nth 1 enc-str) new-str-c) 414)) )) - )) - ) + ) + ((eq (car enc-str) ?⿳) + (cond + ((and (characterp (nth 2 enc-str)) + (eq (char-ucs (nth 2 enc-str)) #x56D7)) + (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)))) + (setq new-str (list ?⿱ (nth 1 enc-str) new-str-c)) + (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 3 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 3 enc-str)) + 415)) + ) + ((and (characterp (nth 2 enc-str)) + (eq (char-ucs (nth 2 enc-str)) #x5196)) + (unless conversion-only + (setq f-res (ids-find-chars-including-ids enc-str))) + (setq new-str (list ?⿱ (nth 1 enc-str) (nth 2 enc-str))) + (setq new-str-c + (if (setq ret (ideographic-structure-find-chars new-str)) + (car ret) + (list (cons 'ideographic-structure new-str)))) + (setq new-str (list ?⿱ new-str-c (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 ?⿱ new-str-c (nth 3 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 3 enc-str)) + 416)) + ) + ((and (characterp (nth 2 enc-str)) + (or (eq (encode-char (nth 2 enc-str) '=>big5-cdp) + #x89A6) + (eq (encode-char (nth 2 enc-str) '=>gt-k) + 146) + (eq (char-ucs (nth 2 enc-str)) #x2008A))) + (unless conversion-only + (setq f-res (ids-find-chars-including-ids enc-str))) + (setq new-str (list ?⿱ (nth 2 structure) (nth 2 enc-str))) + (setq new-str-c + (if (setq ret (ideographic-structure-find-chars new-str)) + (car ret) + (list (cons 'ideographic-structure new-str)))) + (setq new-str (list ?⿸ new-str-c (nth 3 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 ?⿱ (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) + 417)) + ) + (t + (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)))) + (setq new-str (list ?⿱ (nth 1 enc-str) new-str-c)) + (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 3 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 3 enc-str)) + 419)) + )) + ))) ) ((eq (car structure) ?⿶) (setq enc (nth 1 structure))