(ideographic-structure-compare-functional-and-apparent):
authorMORIOKA Tomohiko <tomo.git@chise.org>
Thu, 12 Nov 2020 16:14:59 +0000 (01:14 +0900)
committerMORIOKA Tomohiko <tomo.git@chise.org>
Thu, 12 Nov 2020 16:14:59 +0000 (01:14 +0900)
- Treat A-IWDSU+4E06 and U+2E282-itaiji-001 as Tare.
- Implement rule-330: &U-i001+2FF6;⿰LRA -> ⿰⿱ALR.
- Implement rule-601: ⿵⿱AKC -> ⿱A⿵KC if K is Kamae.

ids-find.el

index c58d022..c410984 100644 (file)
@@ -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)))