;;;###autoload
(defun ideographic-structure-find-chars (structure)
- (apply #'ideographic-structure-find-chars* structure))
-
-(defun ideographic-structure-find-chars* (operator component1 component2
- &optional component3)
- (let ((comp-alist (ideographic-structure-to-components-alist*
- operator component1 component2 component3))
- c1 c2 c3
- ret pl str
- var-alist)
+ (let ((comp-alist (ideographic-structure-to-components-alist structure))
+ ret pl str)
(dolist (pc (caar
(sort (mapcar (lambda (cell)
(if (setq ret (get-char-attribute
comp-alist)
(lambda (a b)
(< (cdr a)(cdr b))))))
- (when (and (setq str (get-char-attribute pc 'ideographic-structure))
- (setq var-alist
- (ideographic-structure-character= (car str) operator))
- (setq c1 (nth 1 str))
- (setq ret (ideographic-structure-character= c1 component1))
- (setq var-alist (ids-find-merge-variables var-alist ret))
- (setq c2 (nth 2 str))
- (setq ret (ideographic-structure-character= c2 component2))
- (setq var-alist (ids-find-merge-variables var-alist ret))
- (cond ((memq (car str) '(?\u2FF2 ?\u2FF3))
- (setq c3 (nth 3 str))
- (and (setq ret (ideographic-structure-character=
- c3 component3))
- (ids-find-merge-variables var-alist ret))
- )
- (t var-alist)))
+ (when (or (and (setq str
+ (get-char-attribute pc 'ideographic-structure))
+ (ideographic-structure-equal str structure))
+ (and (setq str
+ (get-char-attribute pc 'ideographic-structure@apparent))
+ (ideographic-structure-equal str structure)))
(setq pl (cons pc pl))
))
pl))
(defun ideographic-chars-to-is-a-tree (chars)
(let (comp char products others dest rest
la lb)
- (setq chars (sort chars #'ideographic-structure-char<))
+ (setq chars (sort (copy-tree chars) #'ideographic-structure-char<))
(while chars
(setq comp (pop chars)
rest chars
(setq chars others))
dest))
-(defun ids-find-chars-including-ids* (operator component1 component2
- &optional component3)
- (let ((comp-alist (ideographic-structure-to-components-alist*
- operator component1 component2 component3))
- (comp-spec
- (list (list* 'ideographic-structure
- operator component1 component2
- (if component3
- (list component3)))))
- ret str rest)
- (dolist (pc (caar
- (sort (mapcar (lambda (cell)
- (if (setq ret (get-char-attribute
- (car cell) 'ideographic-products))
- (cons ret (length ret))
- (cons nil 0)))
- comp-alist)
- (lambda (a b)
- (< (cdr a)(cdr b))))))
- (when (and (every (lambda (cell)
- (>= (ideographic-char-count-components pc (car cell))
- (cdr cell)))
- comp-alist)
- (or (ideographic-char-match-component pc comp-spec)
- (and (setq str (get-char-attribute pc 'ideographic-structure))
- (ideographic-char-match-component
- (list
- (cons
- 'ideographic-structure
- (functional-ideographic-structure-to-apparent-structure
- str)))
- comp-spec))))
- (push pc rest)))
- (ideographic-chars-to-is-a-tree rest)))
+;; (defun ids-find-chars-including-ids* (operator component1 component2
+;; &optional component3)
+;; (let ((comp-alist (ideographic-structure-to-components-alist*
+;; operator component1 component2 component3))
+;; (comp-spec
+;; (list (list* 'ideographic-structure
+;; operator component1 component2
+;; (if component3
+;; (list component3)))))
+;; ret str rest)
+;; (dolist (pc (caar
+;; (sort (mapcar (lambda (cell)
+;; (if (setq ret (get-char-attribute
+;; (car cell) 'ideographic-products))
+;; (cons ret (length ret))
+;; (cons nil 0)))
+;; comp-alist)
+;; (lambda (a b)
+;; (< (cdr a)(cdr b))))))
+;; (when (and (every (lambda (cell)
+;; (>= (ideographic-char-count-components pc (car cell))
+;; (cdr cell)))
+;; comp-alist)
+;; (or (ideographic-char-match-component pc comp-spec)
+;; (and (setq str (get-char-attribute pc 'ideographic-structure))
+;; (ideographic-char-match-component
+;; (list
+;; (cons
+;; 'ideographic-structure
+;; (functional-ideographic-structure-to-apparent-structure
+;; str)))
+;; comp-spec))))
+;; (push pc rest)))
+;; (ideographic-chars-to-is-a-tree rest)))
(defun ids-find-chars-including-ids (structure)
- (if (characterp structure)
- (setq structure (get-char-attribute structure 'ideographic-structure)))
- (apply #'ids-find-chars-including-ids* structure))
+ (let (comp-alist comp-spec ret str rest)
+ (cond
+ ((characterp structure)
+ (setq rest (copy-tree (get-char-attribute structure 'ideographic-products)))
+ )
+ ((setq ret (ideographic-structure-find-chars structure))
+ (dolist (pc ret)
+ (setq rest
+ (union rest
+ (copy-tree (get-char-attribute pc 'ideographic-products)))))
+ )
+ (t
+ (setq comp-alist (ideographic-structure-to-components-alist structure)
+ comp-spec (list (cons 'ideographic-structure structure)))
+ (dolist (pc (caar
+ (sort (mapcar (lambda (cell)
+ (if (setq ret (get-char-attribute
+ (car cell) 'ideographic-products))
+ (cons ret (length ret))
+ (cons nil 0)))
+ comp-alist)
+ (lambda (a b)
+ (< (cdr a)(cdr b))))))
+ (when (and (every (lambda (cell)
+ (>= (ideographic-char-count-components pc (car cell))
+ (cdr cell)))
+ comp-alist)
+ (or (ideographic-char-match-component pc comp-spec)
+ (and (setq str (get-char-attribute pc 'ideographic-structure))
+ (ideographic-char-match-component
+ (list
+ (cons
+ 'ideographic-structure
+ (functional-ideographic-structure-to-apparent-structure
+ str)))
+ comp-spec))))
+ (push pc rest)))
+ ))
+ (ideographic-chars-to-is-a-tree rest)))
(defun functional-ideographic-structure-to-apparent-structure (structure)
- (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)
- '=>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))
- )))
- ))
- )))
+ (ideographic-structure-compare-functional-and-apparent
+ structure nil 'conversion-only)
+ ;; (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)
+ ;; '=>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)
(nreverse dest)))
(defun ideographic-structure-compare-functional-and-apparent (structure
- &optional char)
- (let (enc enc-str enc2-str new-str new-str-c f-res a-res code ret)
+ &optional char
+ conversion-only)
+ (let (enc enc-str enc2-str new-str new-str-c f-res a-res ret)
(cond
((eq (car structure) ?⿸)
(setq enc (nth 1 structure))
)))
(cond
((eq (car enc-str) ?⿰)
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿱
(nth 2 enc-str)
(nth 2 structure)))
(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-c
- a-res
- (list ?⿰ (nth 1 enc-str) new-str-c)
- 111)
+ (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)
+ 111))
)
((and (eq (car enc-str) ?⿲)
(memq (char-ucs (nth 1 enc-str)) '(#x4EBB #x2E85))
(eq (nth 2 enc-str) ?丨))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿱
(nth 3 enc-str)
(nth 2 structure)))
(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-c
- a-res
- (list ?⿰ (decode-char '=big5-cdp #x8B7A) new-str-c)
- 112)
+ (if conversion-only
+ (list ?⿰ (decode-char '=big5-cdp #x8B7A) new-str-c)
+ (setq a-res (ids-find-chars-including-ids new-str))
+ (list enc
+ f-res
+ new-str-c
+ a-res
+ (list ?⿰ (decode-char '=big5-cdp #x8B7A) new-str-c)
+ 112))
)
((eq (car enc-str) ?⿱)
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str
(list
(cond
(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-c
- a-res
- (list ?⿱ (nth 1 enc-str) new-str-c)
- (if (eq (car new-str) ?⿸)
- 121
- 122))
+ (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)
+ (if (eq (car new-str) ?⿸)
+ 121
+ 122)))
)
((eq (car enc-str) ?⿸)
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list (cond
((characterp (nth 2 enc-str))
(if (memq (char-ucs (nth 2 enc-str))
(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-c
- a-res
- (list ?⿸ (nth 1 enc-str) new-str-c)
- (if (eq (car new-str) ?⿰)
- 131
- 132))
+ (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)
+ (if (eq (car new-str) ?⿰)
+ 131
+ 132)))
)))
)
((eq (car structure) ?⿹)
)))
(cond
((eq (car enc-str) ?⿰)
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿱
(nth 1 enc-str)
(nth 2 structure)))
(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-c
- a-res
- (list ?⿰ new-str-c (nth 2 enc-str))
- 210)
+ (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))
+ 210))
)))
)
((eq (get-char-attribute (car structure) '=ucs-itaiji-001) #x2FF6)
)))
(cond
((eq (car enc-str) ?⿺)
- (setq f-res (ids-find-chars-including-ids 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)))
(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-c
- a-res
- (list ?⿺ new-str-c (nth 2 enc-str))
- 310)
+ (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))
+ 310))
)
((eq (car enc-str) ?⿱)
- (setq f-res (ids-find-chars-including-ids 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)))
(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-c
- a-res
- (list ?⿱ new-str-c (nth 2 enc-str))
- 320)
+ (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))
+ 320))
))
)
)
(or (memq (char-ucs (nth 2 enc-str)) '(#x56D7 #x5F51 #x897F))
(eq (char-feature (nth 2 enc-str) '=>big5-cdp)
#x87A5)))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿴
(nth 2 enc-str)
(nth 2 structure)))
(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-c
- a-res
- (list ?⿱ (nth 1 enc-str) new-str-c)
- 411)
+ (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)
+ 411))
)
((and (characterp (nth 2 enc-str))
(eq (char-ucs (nth 2 enc-str)) #x51F5))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿶
(nth 2 enc-str)
(nth 2 structure)))
(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-c
- a-res
- (list ?⿱ (nth 1 enc-str) new-str-c)
- 412)
+ (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)
+ 412))
)
((and (characterp (nth 1 enc-str))
(eq (char-feature (nth 1 enc-str) '=>ucs@component)
#x300E6))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿵
(nth 1 enc-str)
(nth 2 structure)))
(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-c
- a-res
- (list ?⿱ new-str-c (nth 2 enc-str))
- 413)
+ (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))
+ 413))
)
(t
- (setq f-res (ids-find-chars-including-ids enc-str))
- (list enc
- f-res
- new-str
- nil
- (list ?⿳
- (nth 1 enc-str)
- (nth 2 structure)
- (nth 2 enc-str))
- 414)
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
+ (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)
+ 414))
))
- ))
- )
+ )
+ ((eq (car enc-str) ?⿳)
+ (cond
+ ((and (characterp (nth 2 enc-str))
+ (eq (char-ucs (nth 2 enc-str)) #x56D7))
+ (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))))
+ (setq new-str (list ?⿱ (nth 1 enc-str) new-str-c))
+ (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 3 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 3 enc-str))
+ 415))
+ )
+ ((and (characterp (nth 2 enc-str))
+ (eq (char-ucs (nth 2 enc-str)) #x5196))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
+ (setq new-str (list ?⿱ (nth 1 enc-str) (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 new-str (list ?⿱ new-str-c (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 ?⿱ new-str-c (nth 3 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 3 enc-str))
+ 416))
+ )
+ ((and (characterp (nth 2 enc-str))
+ (or (eq (encode-char (nth 2 enc-str) '=>big5-cdp)
+ #x89A6)
+ (eq (encode-char (nth 2 enc-str) '=>gt-k)
+ 146)
+ (eq (char-ucs (nth 2 enc-str)) #x2008A)))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
+ (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 new-str (list ?⿸ new-str-c (nth 3 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)
+ 417))
+ )
+ (t
+ (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))))
+ (setq new-str (list ?⿱ (nth 1 enc-str) new-str-c))
+ (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 3 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 3 enc-str))
+ 419))
+ ))
+ )))
)
((eq (car structure) ?⿶)
(setq enc (nth 1 structure))
(setq enc2-str (ideographic-character-get-structure (nth 1 enc-str)))
(when (and enc2-str
(eq (car enc2-str) ?⿰))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿲
(nth 1 enc2-str)
(nth 2 structure)
(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-c
- a-res
- (list ?⿱ new-str-c (nth 2 enc-str))
- 511)
+ (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))
+ 511))
)
)
((eq (car enc-str) ?⿳)
(setq enc2-str (ideographic-character-get-structure (nth 1 enc-str)))
(when (and enc2-str
(eq (car enc2-str) ?⿰))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿲
(nth 1 enc2-str)
(nth 2 structure)
(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-c
- a-res
- (list ?⿳ new-str-c (nth 2 enc-str) (nth 3 enc-str))
- 512)
+ (if conversion-only
+ (list ?⿳ new-str-c (nth 2 enc-str) (nth 3 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) (nth 3 enc-str))
+ 512))
)
)
((eq (car enc-str) ?⿲)
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿱
(nth 2 structure)
(nth 2 enc-str)))
(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-c
- a-res
- (list ?⿲ (nth 1 enc-str) new-str-c (nth 3 enc-str))
- 520)
+ (if conversion-only
+ (list ?⿲ (nth 1 enc-str) new-str-c (nth 3 enc-str))
+ (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 (nth 3 enc-str))
+ 520))
)
((eq (car enc-str) ?⿴)
(setq enc2-str (ideographic-character-get-structure (nth 1 enc-str)))
(when (and enc2-str
(eq (car enc2-str) ?⿰))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿱
(nth 2 structure)
(nth 2 enc-str)))
(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-c
- a-res
- (list ?⿲ (nth 1 enc2-str) new-str-c (nth 2 enc2-str))
- 530)
+ (if conversion-only
+ (list ?⿲ (nth 1 enc2-str) new-str-c (nth 2 enc2-str))
+ (setq a-res (ids-find-chars-including-ids new-str))
+ (list enc
+ f-res
+ new-str-c
+ a-res
+ (list ?⿲ (nth 1 enc2-str) new-str-c (nth 2 enc2-str))
+ 530))
)
)))
)
(setq enc2-str (ideographic-character-get-structure (nth 2 enc-str)))
(when (and enc2-str
(eq (car enc2-str) ?⿰))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿲
(nth 1 enc2-str)
(nth 2 structure)
(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-c
- a-res
- (list ?⿱ (nth 1 enc-str) new-str-c)
- 611)
+ (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)
+ 611))
)
)
((eq (car enc-str) ?⿳)
(setq enc2-str (ideographic-character-get-structure (nth 3 enc-str)))
(when (and enc2-str
(eq (car enc2-str) ?⿰))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿲
(nth 1 enc2-str)
(nth 2 structure)
(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-c
- a-res
- (list ?⿳ (nth 1 enc-str) (nth 2 enc-str) new-str-c)
- 612)
+ (if conversion-only
+ (list ?⿳ (nth 1 enc-str) (nth 2 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) (nth 2 enc-str) new-str-c)
+ 612))
)
)
((eq (car enc-str) ?⿲)
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿱
(nth 2 enc-str)
(nth 2 structure)))
(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-c
- a-res
- (list ?⿲ (nth 1 enc-str) new-str-c (nth 3 enc-str))
- 620)
+ (if conversion-only
+ (list ?⿲ (nth 1 enc-str) new-str-c (nth 3 enc-str))
+ (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 (nth 3 enc-str))
+ 620))
)
((eq (car enc-str) ?⿴)
(setq enc2-str (ideographic-character-get-structure (nth 1 enc-str)))
(when (and enc2-str
(eq (car enc2-str) ?⿰))
- (setq f-res (ids-find-chars-including-ids enc-str))
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
(setq new-str (list ?⿱
(nth 2 enc-str)
(nth 2 structure)))
(if (setq ret (ideographic-structure-find-chars new-str))
(car ret)
(list (cons 'ideographic-structure new-str))))
+ (if conversion-only
+ (list ?⿲ (nth 1 enc2-str) new-str-c (nth 2 enc2-str))
+ (setq a-res (ids-find-chars-including-ids new-str))
+ (list enc
+ f-res
+ new-str-c
+ a-res
+ (list ?⿲ (nth 1 enc2-str) new-str-c (nth 2 enc2-str))
+ 630))
+ )
+ )))
+ )
+ ((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) ?⿺)
+ (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 enc2-str) new-str-c (nth 2 enc2-str))
- 630)
- )
+ (list ?⿺ (nth 1 enc-str) new-str-c)
+ 710))
)))
)
((eq (car structure) ?⿻)
)))
(cond
((eq (car enc-str) ?⿱)
- (setq f-res (ids-find-chars-including-ids enc-str))
- (list enc
- f-res
- new-str
- nil
- (list ?⿳
- (nth 1 enc-str)
- (nth 2 structure)
- (nth 2 enc-str))
- 911)
+ (unless conversion-only
+ (setq f-res (ids-find-chars-including-ids enc-str)))
+ (if conversion-only
+ (list ?⿳ (nth 1 enc-str) (nth 2 structure) (nth 2 enc-str))
+ (list enc
+ f-res
+ new-str
+ nil
+ (list ?⿳
+ (nth 1 enc-str)
+ (nth 2 structure)
+ (nth 2 enc-str))
+ 911))
)))
))
))