From 65512485fdfd728da75c7a2131215210c6c57d3b Mon Sep 17 00:00:00 2001 From: MORIOKA Tomohiko Date: Tue, 15 Dec 2020 12:30:58 +0900 Subject: [PATCH] =?utf8?q?(ideographic-structure-compact):=20Try=20to=20comp?= =?utf8?q?act=20substructures=20recursively.=20(ideographic-structure-compar?= =?utf8?q?e-functional-and-apparent):=20Implement=20rule-614:=20=E2=BF=B5=E2?= =?utf8?q?=BF=B1A=E2=BF=B2LMRC=20->=20=E2=BF=B1A=E2=BF=B2L=E2=BF=B1MCR.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ids-find.el | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/ids-find.el b/ids-find.el index 5519a1c..a4acb71 100644 --- a/ids-find.el +++ b/ids-find.el @@ -772,9 +772,15 @@ COMPONENT can be a character or char-spec." (setq sub cell) ))) (setq cell - (if (setq ret (ideographic-structure-find-chars sub)) - (car ret) - (list (cons 'ideographic-structure sub)))) + (cond ((setq ret (ideographic-structure-find-chars sub)) + (car ret) + ) + ((setq ret (ideographic-structure-compact sub)) + (list (cons 'ideographic-structure ret)) + ) + (t + (list (cons 'ideographic-structure sub)))) + ) )) (setq dest (cons cell dest))) (nreverse dest))) @@ -782,7 +788,8 @@ COMPONENT can be a character or char-spec." (defun ideographic-structure-compare-functional-and-apparent (structure &optional char conversion-only) - (let (enc enc-str enc2-str enc3-str new-str new-str-c f-res a-res ret code) + (let (enc enc-str enc2-str enc3-str new-str new-str-c + f-res a-res ret code) (cond ((eq (car structure) ?⿸) (setq enc (nth 1 structure)) @@ -1407,6 +1414,9 @@ COMPONENT can be a character or char-spec." ((eq (car enc2-str) ?⿰) (setq code 611) ) + ((eq (car enc2-str) ?⿲) + (setq code 614) + ) ((and (eq (car enc2-str) ?⿱) (setq enc3-str (ideographic-character-get-structure (nth 2 enc2-str))) @@ -1427,13 +1437,24 @@ COMPONENT can be a character or char-spec." (nth 1 enc3-str) (nth 2 structure) (nth 2 enc3-str)) + ) + ((eq code 614) + (list ?⿲ + (nth 1 enc2-str) + (list (list 'ideographic-structure + ?⿱ + (nth 2 enc2-str) + (nth 2 structure))) + (nth 3 enc2-str)) ))) (setq new-str-c (if (setq ret (ideographic-structure-find-chars new-str)) (car ret) - (list (cons 'ideographic-structure new-str)))) + (list (cons 'ideographic-structure + (ideographic-structure-compact new-str))))) (if conversion-only - (cond ((eq code 611) + (cond ((or (eq code 611) + (eq code 614)) (list ?⿱ (nth 1 enc-str) new-str-c) ) ((eq code 613) @@ -1444,7 +1465,8 @@ COMPONENT can be a character or char-spec." f-res new-str-c a-res - (cond ((eq code 611) + (cond ((or (eq code 611) + (eq code 614)) (list ?⿱ (nth 1 enc-str) new-str-c) ) ((eq code 613) -- 1.7.10.4