(ideographic-structure-compare-functional-and-apparent):
authorMORIOKA Tomohiko <tomo.git@chise.org>
Thu, 26 Aug 2021 05:16:03 +0000 (14:16 +0900)
committerMORIOKA Tomohiko <tomo.git@chise.org>
Thu, 26 Aug 2021 05:16:03 +0000 (14:16 +0900)
- Implement rule-721: ⿷⿸TNC -> ⿸T⿺NC if N is
  U+4EBA/U+5165/U+513F/U+51E0/A-{IWDS|comp}U+{4EBA|513F}.
- Implement rule-722: ⿷⿸TBM -> ⿸T⿱MB if B is not N.

ids-find.el

index 8fe8df7..fa6ee5e 100644 (file)
@@ -1604,7 +1604,54 @@ COMPONENT can be a character or char-spec."
                  a-res
                  (list ?⿺ (nth 1 enc-str) new-str-c)
                  710))
-         )))
+         )
+        ((eq (car enc-str) ?⿸)
+         (unless conversion-only
+           (setq f-res (ids-find-chars-including-ids enc-str)))
+         (cond
+          ((and (characterp (nth 2 enc-str))
+                (or (memq (char-ucs (nth 2 enc-str))
+                          '(#x4EBA #x5165 #x513F #x51E0))
+                    (memq (or (encode-char (nth 2 enc-str) '=>ucs@iwds-1)
+                              (encode-char (nth 2 enc-str) '=>ucs@component))
+                          '(#x4EBA #x513F))))
+           (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)
+                   721))
+           )
+          (t
+           (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))))
+           (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)
+                   722))
+           ))
+         )
+        ))
       )
      ((eq (car structure) ?⿺)
       (setq enc (nth 1 structure))