+ (catch 'tag
+ (dolist (domain domains)
+ (if (and (setq ret (or (get-char-attribute
+ char
+ (intern
+ (format "%s@%s"
+ 'ideographic-radical domain)))
+ (get-char-attribute
+ char 'ideographic-radical)))
+ (or (eq ret radical)
+ (null radical))
+ (setq ret (get-char-attribute
+ char
+ (intern
+ (format "%s@%s"
+ 'ideographic-strokes domain)))))
+ (throw 'tag ret))))))
+
+;;;###autoload
+(defun char-ideographic-strokes (char &optional radical preferred-domains)
+ (let (ret)
+ (or (char-ideographic-strokes-from-domains
+ char preferred-domains radical)
+ (get-char-attribute char 'ideographic-strokes)
+ (char-ideographic-strokes-from-domains
+ char char-db-feature-domains radical)
+ (catch 'tag