From 508af2779f20471facf282204ca35be6923a8e3d Mon Sep 17 00:00:00 2001 From: MORIOKA Tomohiko Date: Sat, 12 Sep 2020 12:14:05 +0900 Subject: [PATCH] (functional-ideographic-structure-to-apparent-structure): Use `ideographic-structure-compact' for the return value. (ideographic-structure-compare-functional-and-apparent): Change format of the third field [converted apparent-component] of each element: if it can be compacted to a character, return the character. Otherwise, use char-spec format instead of parsed-IDS format. --- ids-find.el | 872 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 449 insertions(+), 423 deletions(-) diff --git a/ids-find.el b/ids-find.el index 401866f..2ffce8b 100644 --- a/ids-find.el +++ b/ids-find.el @@ -767,346 +767,347 @@ COMPONENT can be a character or char-spec." (apply #'ids-find-chars-including-ids* structure)) (defun functional-ideographic-structure-to-apparent-structure (structure) - (let (enc enc-str enc2-str new-str) - (cond - ((eq (car structure) ?⿸) - (setq enc (nth 1 structure)) - (when (setq enc-str - (cond ((characterp enc) - (get-char-attribute enc 'ideographic-structure) - ) - ((consp enc) - (cdr (assq 'ideographic-structure enc)) - ))) - (cond - ((eq (car enc-str) ?⿰) - (list ?⿰ (nth 1 enc-str) - (list (list 'ideographic-structure - ?⿱ - (nth 2 enc-str) - (nth 2 structure)))) - ) - ((and (eq (car enc-str) ?⿲) - (memq (char-ucs (nth 1 enc-str)) '(#x4EBB #x2E85)) - (eq (nth 2 enc-str) ?丨)) - (list ?⿰ - (decode-char '=big5-cdp #x8B7A) - (list (list 'ideographic-structure - ?⿱ - (nth 3 enc-str) - (nth 2 structure)))) - ) - ((eq (car enc-str) ?⿱) - (list ?⿱ (nth 1 enc-str) - (list - (cons 'ideographic-structure - (or (functional-ideographic-structure-to-apparent-structure - (setq new-str - (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) - #x4E06) - (eq (encode-char - (nth 2 enc-str) - '=big5-cdp) - #x89CE) - (eq (encode-char - (nth 2 enc-str) - '=>big5-cdp) - #x88E2) - (eq (encode-char - (nth 2 enc-str) - '=big5-cdp) - #x88AD) - (eq (or (encode-char - (nth 2 enc-str) - '=>big5-cdp) - (encode-char - (nth 2 enc-str) - '=big5-cdp-itaiji-001)) - #x8766) - (eq (car - (get-char-attribute + (ideographic-structure-compact + (let (enc enc-str enc2-str new-str) + (cond + ((eq (car structure) ?⿸) + (setq enc (nth 1 structure)) + (when (setq enc-str + (cond ((characterp enc) + (get-char-attribute enc 'ideographic-structure) + ) + ((consp enc) + (cdr (assq 'ideographic-structure enc)) + ))) + (cond + ((eq (car enc-str) ?⿰) + (list ?⿰ (nth 1 enc-str) + (list (list 'ideographic-structure + ?⿱ + (nth 2 enc-str) + (nth 2 structure)))) + ) + ((and (eq (car enc-str) ?⿲) + (memq (char-ucs (nth 1 enc-str)) '(#x4EBB #x2E85)) + (eq (nth 2 enc-str) ?丨)) + (list ?⿰ + (decode-char '=big5-cdp #x8B7A) + (list (list 'ideographic-structure + ?⿱ + (nth 3 enc-str) + (nth 2 structure)))) + ) + ((eq (car enc-str) ?⿱) + (list ?⿱ (nth 1 enc-str) + (list + (cons 'ideographic-structure + (or (functional-ideographic-structure-to-apparent-structure + (setq new-str + (list + (cond + ((characterp (nth 2 enc-str)) + (if (or (eq (encode-char (nth 2 enc-str) - 'ideographic-structure)) - ?⿸)) - ?⿸ - ?⿰)) - ((eq (car - (cdr - (assq 'ideographic-structure - (nth 2 enc-str)))) - ?⿸) - ?⿸) - (t - ?⿰)) - (nth 2 enc-str) - (nth 2 structure) - ))) - new-str)))) - ) - ((eq (car enc-str) ?⿸) - (list ?⿸ (nth 1 enc-str) - (list - (cons 'ideographic-structure - (setq new-str - (list - (cond - ((characterp (nth 2 enc-str)) - (if (memq (char-ucs (nth 2 enc-str)) - '(#x5F73)) - ?⿰ - ?⿱) - ) - (t - ?⿱)) - (nth 2 enc-str) - (nth 2 structure)))))) - ))) - ) - ((eq (car structure) ?⿹) - (setq enc (nth 1 structure)) - (when (setq enc-str - (cond ((characterp enc) - (get-char-attribute enc 'ideographic-structure) - ) - ((consp enc) - (cdr (assq 'ideographic-structure enc)) - ))) - (cond - ((eq (car enc-str) ?⿰) - (list ?⿰ - (list (list 'ideographic-structure - ?⿱ - (nth 1 enc-str) - (nth 2 structure))) - (nth 2 enc-str)) - ))) - ) - ((eq (get-char-attribute (car structure) '=ucs-itaiji-001) #x2FF6) - (setq enc (nth 1 structure)) - (when (setq enc-str - (cond ((characterp enc) - (get-char-attribute enc 'ideographic-structure) - ) - ((consp enc) - (cdr (assq 'ideographic-structure enc)) - ))) - (cond - ((eq (car enc-str) ?⿺) - (list ?⿺ - (list (list 'ideographic-structure - ?⿱ - (nth 2 structure) - (nth 1 enc-str))) - (nth 2 enc-str)) - ) - ((eq (car enc-str) ?⿱) - (list ?⿱ - (list (list 'ideographic-structure - ?⿰ - (nth 2 structure) - (nth 1 enc-str))) - (nth 2 enc-str)) - )) - ) - ) - ((eq (car structure) ?⿴) - (setq enc (nth 1 structure)) - (when (setq enc-str - (cond ((characterp enc) - (get-char-attribute enc 'ideographic-structure) - ) - ((consp enc) - (cdr (assq 'ideographic-structure enc)) - ))) - (cond - ((eq (car enc-str) ?⿱) - (cond - ((and (characterp (nth 2 enc-str)) - (or (memq (char-ucs (nth 2 enc-str)) '(#x56D7 #x5F51 #x897F)) - (eq (char-feature (nth 2 enc-str) '=>big5-cdp) - #x87A5))) - (list ?⿱ - (nth 1 enc-str) - (list (list 'ideographic-structure - ?⿴ - (nth 2 enc-str) - (nth 2 structure))) - ) - ) - ((and (characterp (nth 2 enc-str)) - (eq (char-ucs (nth 2 enc-str)) #x51F5)) - (list ?⿱ - (nth 1 enc-str) - (list (list 'ideographic-structure - ?⿶ - (nth 2 enc-str) - (nth 2 structure))) - ) - ) - ((and (characterp (nth 1 enc-str)) - (eq (char-feature (nth 1 enc-str) '=>ucs@component) - #x300E6)) - (list ?⿱ - (list (list 'ideographic-structure - ?⿵ - (nth 1 enc-str) - (nth 2 structure))) - (nth 2 enc-str)) - ) - (t - (list ?⿳ - (nth 1 enc-str) - (nth 2 structure) - (nth 2 enc-str)) - )) - )) - ) - ) - ((eq (car structure) ?⿶) - (setq enc (nth 1 structure)) - (when (setq enc-str - (cond ((characterp enc) - (get-char-attribute enc 'ideographic-structure) - ) - ((consp enc) - (cdr (assq 'ideographic-structure enc)) - ))) - (cond - ((eq (car enc-str) ?⿱) - (setq enc2-str (ideographic-character-get-structure (nth 1 enc-str))) - (when (and enc2-str - (eq (car enc2-str) ?⿰)) - (list ?⿱ - (list (list 'ideographic-structure - ?⿲ - (nth 1 enc2-str) - (nth 2 structure) - (nth 2 enc2-str))) - (nth 2 enc-str))) - ) - ((eq (car enc-str) ?⿳) - (setq enc2-str (ideographic-character-get-structure (nth 1 enc-str))) - (when (and enc2-str - (eq (car enc2-str) ?⿰)) - (list ?⿳ - (list (list 'ideographic-structure - ?⿲ - (nth 1 enc2-str) - (nth 2 structure) - (nth 2 enc2-str))) - (nth 2 enc-str) - (nth 3 enc-str))) - ) - ((eq (car enc-str) ?⿲) - (list ?⿲ - (nth 1 enc-str) - (list (list 'ideographic-structure - ?⿱ - (nth 2 structure) - (nth 2 enc-str))) - (nth 3 enc-str)) - ) - ((eq (car enc-str) ?⿴) - (setq enc2-str (ideographic-character-get-structure (nth 1 enc-str))) - (when (and enc2-str - (eq (car enc2-str) ?⿰)) - (list ?⿲ - (nth 1 enc2-str) - (list (list 'ideographic-structure - ?⿱ - (nth 2 structure) - (nth 2 enc-str))) - (nth 2 enc2-str))) - ))) - ) - ((eq (car structure) ?⿵) - (setq enc (nth 1 structure)) - (when (setq enc-str - (cond ((characterp enc) - (get-char-attribute enc 'ideographic-structure) - ) - ((consp enc) - (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) ?⿰)) - (list ?⿱ - (nth 1 enc-str) - (list (list 'ideographic-structure - ?⿲ - (nth 1 enc2-str) - (nth 2 structure) - (nth 2 enc2-str))))) - ) - ((eq (car enc-str) ?⿳) - (setq enc2-str (ideographic-character-get-structure (nth 3 enc-str))) - (when (and enc2-str - (eq (car enc2-str) ?⿰)) - (list ?⿳ - (nth 1 enc-str) - (nth 2 enc-str) - (list (list 'ideographic-structure - ?⿲ - (nth 1 enc2-str) - (nth 2 structure) - (nth 2 enc2-str))))) - ) - ((eq (car enc-str) ?⿲) - (list ?⿲ - (nth 1 enc-str) - (list (list 'ideographic-structure - ?⿱ - (nth 2 enc-str) - (nth 2 structure))) - (nth 3 enc-str)) - ) - ((eq (car enc-str) ?⿴) - (setq enc2-str (ideographic-character-get-structure (nth 1 enc-str))) - (when (and enc2-str - (eq (car enc2-str) ?⿰)) - (list ?⿲ - (nth 1 enc2-str) - (list (list 'ideographic-structure - ?⿱ - (nth 2 enc-str) - (nth 2 structure))) - (nth 2 enc2-str))) - ))) - ) - ((eq (car structure) ?⿻) - (setq enc (nth 1 structure)) - (when (setq enc-str - (cond ((characterp enc) - (get-char-attribute enc 'ideographic-structure) - ) - ((consp enc) - (cdr (assq 'ideographic-structure enc)) - ))) - (cond - ((eq (car enc-str) ?⿱) - (list ?⿳ - (nth 1 enc-str) - (nth 2 structure) - (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) + #x4E06) + (eq (encode-char + (nth 2 enc-str) + '=big5-cdp) + #x89CE) + (eq (encode-char + (nth 2 enc-str) + '=>big5-cdp) + #x88E2) + (eq (encode-char + (nth 2 enc-str) + '=big5-cdp) + #x88AD) + (eq (or (encode-char + (nth 2 enc-str) + '=>big5-cdp) + (encode-char + (nth 2 enc-str) + '=big5-cdp-itaiji-001)) + #x8766) + (eq (car + (get-char-attribute + (nth 2 enc-str) + 'ideographic-structure)) + ?⿸)) + ?⿸ + ?⿰)) + ((eq (car + (cdr + (assq 'ideographic-structure + (nth 2 enc-str)))) + ?⿸) + ?⿸) + (t + ?⿰)) + (nth 2 enc-str) + (nth 2 structure) + ))) + new-str)))) + ) + ((eq (car enc-str) ?⿸) + (list ?⿸ (nth 1 enc-str) + (list + (cons 'ideographic-structure + (setq new-str + (list + (cond + ((characterp (nth 2 enc-str)) + (if (memq (char-ucs (nth 2 enc-str)) + '(#x5F73)) + ?⿰ + ?⿱) + ) + (t + ?⿱)) + (nth 2 enc-str) + (nth 2 structure)))))) + ))) + ) + ((eq (car structure) ?⿹) + (setq enc (nth 1 structure)) + (when (setq enc-str + (cond ((characterp enc) + (get-char-attribute enc 'ideographic-structure) + ) + ((consp enc) + (cdr (assq 'ideographic-structure enc)) + ))) + (cond + ((eq (car enc-str) ?⿰) + (list ?⿰ + (list (list 'ideographic-structure + ?⿱ + (nth 1 enc-str) + (nth 2 structure))) + (nth 2 enc-str)) + ))) + ) + ((eq (get-char-attribute (car structure) '=ucs-itaiji-001) #x2FF6) + (setq enc (nth 1 structure)) + (when (setq enc-str + (cond ((characterp enc) + (get-char-attribute enc 'ideographic-structure) + ) + ((consp enc) + (cdr (assq 'ideographic-structure enc)) + ))) + (cond + ((eq (car enc-str) ?⿺) + (list ?⿺ + (list (list 'ideographic-structure + ?⿱ + (nth 2 structure) + (nth 1 enc-str))) + (nth 2 enc-str)) + ) + ((eq (car enc-str) ?⿱) + (list ?⿱ + (list (list 'ideographic-structure + ?⿰ + (nth 2 structure) + (nth 1 enc-str))) + (nth 2 enc-str)) + )) + ) + ) + ((eq (car structure) ?⿴) + (setq enc (nth 1 structure)) + (when (setq enc-str + (cond ((characterp enc) + (get-char-attribute enc 'ideographic-structure) + ) + ((consp enc) + (cdr (assq 'ideographic-structure enc)) + ))) + (cond + ((eq (car enc-str) ?⿱) + (cond + ((and (characterp (nth 2 enc-str)) + (or (memq (char-ucs (nth 2 enc-str)) '(#x56D7 #x5F51 #x897F)) + (eq (char-feature (nth 2 enc-str) '=>big5-cdp) + #x87A5))) + (list ?⿱ + (nth 1 enc-str) + (list (list 'ideographic-structure + ?⿴ + (nth 2 enc-str) + (nth 2 structure))) + ) + ) + ((and (characterp (nth 2 enc-str)) + (eq (char-ucs (nth 2 enc-str)) #x51F5)) + (list ?⿱ + (nth 1 enc-str) + (list (list 'ideographic-structure + ?⿶ + (nth 2 enc-str) + (nth 2 structure))) + ) + ) + ((and (characterp (nth 1 enc-str)) + (eq (char-feature (nth 1 enc-str) '=>ucs@component) + #x300E6)) + (list ?⿱ + (list (list 'ideographic-structure + ?⿵ + (nth 1 enc-str) + (nth 2 structure))) + (nth 2 enc-str)) + ) + (t + (list ?⿳ + (nth 1 enc-str) + (nth 2 structure) + (nth 2 enc-str)) + )) + )) + ) + ) + ((eq (car structure) ?⿶) + (setq enc (nth 1 structure)) + (when (setq enc-str + (cond ((characterp enc) + (get-char-attribute enc 'ideographic-structure) + ) + ((consp enc) + (cdr (assq 'ideographic-structure enc)) + ))) + (cond + ((eq (car enc-str) ?⿱) + (setq enc2-str (ideographic-character-get-structure (nth 1 enc-str))) + (when (and enc2-str + (eq (car enc2-str) ?⿰)) + (list ?⿱ + (list (list 'ideographic-structure + ?⿲ + (nth 1 enc2-str) + (nth 2 structure) + (nth 2 enc2-str))) + (nth 2 enc-str))) + ) + ((eq (car enc-str) ?⿳) + (setq enc2-str (ideographic-character-get-structure (nth 1 enc-str))) + (when (and enc2-str + (eq (car enc2-str) ?⿰)) + (list ?⿳ + (list (list 'ideographic-structure + ?⿲ + (nth 1 enc2-str) + (nth 2 structure) + (nth 2 enc2-str))) + (nth 2 enc-str) + (nth 3 enc-str))) + ) + ((eq (car enc-str) ?⿲) + (list ?⿲ + (nth 1 enc-str) + (list (list 'ideographic-structure + ?⿱ + (nth 2 structure) + (nth 2 enc-str))) + (nth 3 enc-str)) + ) + ((eq (car enc-str) ?⿴) + (setq enc2-str (ideographic-character-get-structure (nth 1 enc-str))) + (when (and enc2-str + (eq (car enc2-str) ?⿰)) + (list ?⿲ + (nth 1 enc2-str) + (list (list 'ideographic-structure + ?⿱ + (nth 2 structure) + (nth 2 enc-str))) + (nth 2 enc2-str))) + ))) + ) + ((eq (car structure) ?⿵) + (setq enc (nth 1 structure)) + (when (setq enc-str + (cond ((characterp enc) + (get-char-attribute enc 'ideographic-structure) + ) + ((consp enc) + (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) ?⿰)) + (list ?⿱ + (nth 1 enc-str) + (list (list 'ideographic-structure + ?⿲ + (nth 1 enc2-str) + (nth 2 structure) + (nth 2 enc2-str))))) + ) + ((eq (car enc-str) ?⿳) + (setq enc2-str (ideographic-character-get-structure (nth 3 enc-str))) + (when (and enc2-str + (eq (car enc2-str) ?⿰)) + (list ?⿳ + (nth 1 enc-str) + (nth 2 enc-str) + (list (list 'ideographic-structure + ?⿲ + (nth 1 enc2-str) + (nth 2 structure) + (nth 2 enc2-str))))) + ) + ((eq (car enc-str) ?⿲) + (list ?⿲ + (nth 1 enc-str) + (list (list 'ideographic-structure + ?⿱ + (nth 2 enc-str) + (nth 2 structure))) + (nth 3 enc-str)) + ) + ((eq (car enc-str) ?⿴) + (setq enc2-str (ideographic-character-get-structure (nth 1 enc-str))) + (when (and enc2-str + (eq (car enc2-str) ?⿰)) + (list ?⿲ + (nth 1 enc2-str) + (list (list 'ideographic-structure + ?⿱ + (nth 2 enc-str) + (nth 2 structure))) + (nth 2 enc2-str))) + ))) + ) + ((eq (car structure) ?⿻) + (setq enc (nth 1 structure)) + (when (setq enc-str + (cond ((characterp enc) + (get-char-attribute enc 'ideographic-structure) + ) + ((consp enc) + (cdr (assq 'ideographic-structure enc)) + ))) + (cond + ((eq (car enc-str) ?⿱) + (list ?⿳ + (nth 1 enc-str) + (nth 2 structure) + (nth 2 enc-str)) + ))) + )) + ))) ;;;###autoload (defun ideographic-structure-compact (structure) @@ -1133,7 +1134,7 @@ COMPONENT can be a character or char-spec." (defun ideographic-structure-compare-functional-and-apparent (structure &optional char) - (let (enc enc-str enc2-str new-str f-res a-res code) + (let (enc enc-str enc2-str new-str new-str-c f-res a-res code ret) (cond ((eq (car structure) ?⿸) (setq enc (nth 1 structure)) @@ -1150,14 +1151,16 @@ COMPONENT can be a character or char-spec." (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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿰ - (nth 1 enc-str) - (list (cons 'ideographic-structure new-str))) + (list ?⿰ (nth 1 enc-str) new-str-c) 111) ) ((and (eq (car enc-str) ?⿲) @@ -1167,14 +1170,16 @@ COMPONENT can be a character or char-spec." (setq new-str (list ?⿱ (nth 3 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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿰ - (decode-char '=big5-cdp #x8B7A) - (list (cons 'ideographic-structure new-str))) + (list ?⿰ (decode-char '=big5-cdp #x8B7A) new-str-c) 112) ) ((eq (car enc-str) ?⿱) @@ -1210,19 +1215,16 @@ COMPONENT can be a character or char-spec." ?⿰)) (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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list - ?⿱ - (nth 1 enc-str) - (list - (cons 'ideographic-structure - (or (functional-ideographic-structure-to-apparent-structure - new-str) - new-str)))) + (list ?⿱ (nth 1 enc-str) new-str-c) (if (eq (car new-str) ?⿸) 121 122)) @@ -1240,13 +1242,16 @@ COMPONENT can be a character or char-spec." ?⿱)) (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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿸ (nth 1 enc-str) - (list (cons 'ideographic-structure new-str))) + (list ?⿸ (nth 1 enc-str) new-str-c) (if (eq (car new-str) ?⿰) 131 132)) @@ -1267,14 +1272,16 @@ COMPONENT can be a character or char-spec." (setq new-str (list ?⿱ (nth 1 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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿰ - (list (cons 'ideographic-structure new-str)) - (nth 2 enc-str)) + (list ?⿰ new-str-c (nth 2 enc-str)) 210) ))) ) @@ -1293,14 +1300,16 @@ COMPONENT can be a character or char-spec." (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)))) (setq a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿺ - (list (cons 'ideographic-structure new-str)) - (nth 2 enc-str)) + (list ?⿺ new-str-c (nth 2 enc-str)) 310) ) ((eq (car enc-str) ?⿱) @@ -1308,14 +1317,16 @@ COMPONENT can be a character or char-spec." (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)))) (setq a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿱ - (list (cons 'ideographic-structure new-str)) - (nth 2 enc-str)) + (list ?⿱ new-str-c (nth 2 enc-str)) 320) )) ) @@ -1340,14 +1351,16 @@ COMPONENT can be a character or char-spec." (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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿱ - (nth 1 enc-str) - (list (cons 'ideographic-structure new-str))) + (list ?⿱ (nth 1 enc-str) new-str-c) 411) ) ((and (characterp (nth 2 enc-str)) @@ -1356,15 +1369,16 @@ COMPONENT can be a character or char-spec." (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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿱ - (nth 1 enc-str) - (list (cons 'ideographic-structure - new-str))) + (list ?⿱ (nth 1 enc-str) new-str-c) 412) ) ((and (characterp (nth 1 enc-str)) @@ -1374,14 +1388,16 @@ COMPONENT can be a character or char-spec." (setq new-str (list ?⿵ (nth 1 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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿱ - (list (cons 'ideographic-structure new-str)) - (nth 2 enc-str)) + (list ?⿱ new-str-c (nth 2 enc-str)) 413) ) (t @@ -1418,14 +1434,16 @@ COMPONENT can be a character or char-spec." (nth 1 enc2-str) (nth 2 structure) (nth 2 enc2-str))) + (setq new-str-c + (if (setq ret (ideographic-structure-find-chars new-str)) + (car ret) + (list (cons 'ideographic-structure new-str)))) (setq a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿱ - (list (cons 'ideographic-structure new-str)) - (nth 2 enc-str)) + (list ?⿱ new-str-c (nth 2 enc-str)) 511) ) ) @@ -1438,15 +1456,16 @@ COMPONENT can be a character or char-spec." (nth 1 enc2-str) (nth 2 structure) (nth 2 enc2-str))) + (setq new-str-c + (if (setq ret (ideographic-structure-find-chars new-str)) + (car ret) + (list (cons 'ideographic-structure new-str)))) (setq a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿳ - (list (cons 'ideographic-structure new-str)) - (nth 2 enc-str) - (nth 3 enc-str)) + (list ?⿳ new-str-c (nth 2 enc-str) (nth 3 enc-str)) 512) ) ) @@ -1455,15 +1474,16 @@ COMPONENT can be a character or char-spec." (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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿲ - (nth 1 enc-str) - (list (cons 'ideographic-structure new-str)) - (nth 3 enc-str)) + (list ?⿲ (nth 1 enc-str) new-str-c (nth 3 enc-str)) 520) ) ((eq (car enc-str) ?⿴) @@ -1474,15 +1494,16 @@ COMPONENT can be a character or char-spec." (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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿲ - (nth 1 enc2-str) - (list (cons 'ideographic-structure new-str)) - (nth 2 enc2-str)) + (list ?⿲ (nth 1 enc2-str) new-str-c (nth 2 enc2-str)) 530) ) ))) @@ -1506,14 +1527,16 @@ COMPONENT can be a character or char-spec." (nth 1 enc2-str) (nth 2 structure) (nth 2 enc2-str))) + (setq new-str-c + (if (setq ret (ideographic-structure-find-chars new-str)) + (car ret) + (list (cons 'ideographic-structure new-str)))) (setq a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿱ - (nth 1 enc-str) - (list (cons 'ideographic-structure new-str))) + (list ?⿱ (nth 1 enc-str) new-str-c) 611) ) ) @@ -1526,15 +1549,16 @@ COMPONENT can be a character or char-spec." (nth 1 enc2-str) (nth 2 structure) (nth 2 enc2-str))) + (setq new-str-c + (if (setq ret (ideographic-structure-find-chars new-str)) + (car ret) + (list (cons 'ideographic-structure new-str)))) (setq a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿳ - (nth 1 enc-str) - (nth 2 enc-str) - (list (cons 'ideographic-structure new-str))) + (list ?⿳ (nth 1 enc-str) (nth 2 enc-str) new-str-c) 612) ) ) @@ -1543,15 +1567,16 @@ COMPONENT can be a character or char-spec." (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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿲ - (nth 1 enc-str) - (list (cons 'ideographic-structure new-str)) - (nth 3 enc-str)) + (list ?⿲ (nth 1 enc-str) new-str-c (nth 3 enc-str)) 620) ) ((eq (car enc-str) ?⿴) @@ -1562,15 +1587,16 @@ COMPONENT can be a character or char-spec." (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 a-res (ids-find-chars-including-ids new-str)) (list enc f-res - new-str + new-str-c a-res - (list ?⿲ - (nth 1 enc2-str) - (list (cons 'ideographic-structure new-str)) - (nth 2 enc2-str)) + (list ?⿲ (nth 1 enc2-str) new-str-c (nth 2 enc2-str)) 630) ) ))) -- 1.7.10.4