Merge commit '191cb685d6058063f5d25cc2dfd1e5f589653186'
[chise/ids.git] / ids.el
diff --git a/ids.el b/ids.el
index 3cc1e8e..c793a24 100644 (file)
--- a/ids.el
+++ b/ids.el
@@ -1,6 +1,6 @@
 ;;; ids.el --- Parser and utility for Ideographic Description Sequence.
 
-;; Copyright (C) 2001, 2002, 2003, 2005, 2020 MORIOKA Tomohiko
+;; Copyright (C) 2001, 2002, 2003, 2005, 2020, 2021 MORIOKA Tomohiko
 
 ;; Author: MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
 ;; Keywords: IDS, IDC, Ideographs, UCS, Unicode
       (let* ((chr (aref string 0))
             (ucs (encode-char chr '=ucs 'defined-only))
             big5)
-       (unless (and ucs (<= #x2FF0 ucs)(<= ucs #x2FFF))
+       (unless (or (and ucs (<= #x2FF0 ucs)(<= ucs #x2FFF))
+                   (memq (encode-char chr '=ucs-var-001)
+                         '(#x2FF0))
+                   (memq (encode-char chr '=ucs-itaiji-001)
+                         '(#x2FF1 #x2FF9 #x2FF6 #x2FFB))
+                   (memq (encode-char chr '=ucs-itaiji-002)
+                         '(#x2FF1))
+                   )
          (if (and ucs (<= #xE000 ucs)(<= ucs #xF8FF)
                   (setq big5 (encode-char chr 'chinese-big5)))
              (setq chr (decode-char '=big5-cdp big5)))
   (if (>= (length string) 1)
       (let* ((chr (aref string 0))
             (ucs (encode-char chr '=ucs 'defined-only)))
-       (if (or (eq ucs #x2FF0)
-               (eq ucs #x2FF1)
-               (and (<= #x2FF4 ucs)(<= ucs #x2FFB)))
+       (if (or (and ucs
+                    (or (eq ucs #x2FF0)
+                        (eq ucs #x2FF1)
+                        (and (<= #x2FF4 ucs)(<= ucs #x2FFB))))
+               (memq (encode-char chr '=ucs-var-001)
+                     '(#x2FF0))
+               (memq (encode-char chr '=ucs-itaiji-001)
+                     '(#x2FF1 #x2FF9 #x2FF6 #x2FFB))
+               (memq (encode-char chr '=ucs-itaiji-002)
+                     '(#x2FF1))
+               )
            (cons chr
                  (substring string 1))))))