- (while (and
- (< i len)
- (progn
- (setq products nil)
- (dolist (variant (char-component-variants (elt components i)))
- (dolist (product (get-char-attribute
- variant 'ideographic-products))
- (unless (memq product products)
- (when (memq product dest)
- (setq products (cons product products))))))
- (setq dest products)))
- (setq i (1+ i)))
- products))
+ (while (and dest
+ (setq components (cdr components)))
+ (setq products nil)
+ (dolist (variant (char-component-variants (car components)))
+ (setq products
+ (union products
+ (get-char-attribute variant 'ideographic-products))))
+ (setq dest (intersection dest products)))
+ dest))
+;; (defun ideographic-products-find (&rest components)
+;; (if (stringp (car components))
+;; (setq components (car components)))
+;; (let ((len (length components))
+;; (i 1)
+;; dest products)
+;; (dolist (variant (char-component-variants (elt components 0)))
+;; (setq products
+;; (union products
+;; (get-char-attribute variant 'ideographic-products))))
+;; (setq dest products)
+;; (while (and
+;; (< i len)
+;; (progn
+;; (setq products nil)
+;; (dolist (variant (char-component-variants (elt components i)))
+;; (dolist (product (get-char-attribute
+;; variant 'ideographic-products))
+;; (unless (memq product products)
+;; (when (memq product dest)
+;; (setq products (cons product products))))))
+;; (setq dest products)))
+;; (setq i (1+ i)))
+;; products))