- (when (and char
- (>= (length ids) 3)
- (not (string-match "\\?" ids))
- (consp (setq structure (ids-parse-string ids simplify))))
- (put-char-attribute char
- 'ideographic-structure
- (cdr (car structure))))
+ (when char
+ (when (and (>= (length ids) 3)
+ (not (string-match "\\?" ids))
+ (consp (setq structure (ids-parse-string ids simplify))))
+ (when (or (not soft)
+ (null
+ (get-char-attribute char 'ideographic-structure)))
+ (put-char-attribute char
+ 'ideographic-structure
+ (cdr (car structure))))
+ (when (and u-char
+ (not (eq char u-char))
+ (or (not soft)
+ (null
+ (get-char-attribute
+ u-char 'ideographic-structure))))
+ (put-char-attribute
+ u-char 'ideographic-structure
+ (ideographic-structure-convert-to-domain
+ (cdr (car structure)) 'unicode))))
+ (when (and (>= (length apparent-ids) 3)
+ (consp (setq structure
+ (ids-parse-string apparent-ids simplify))))
+ (when (or (not soft)
+ (null
+ (get-char-attribute char 'ideographic-structure@apparent)))
+ (put-char-attribute char
+ 'ideographic-structure@apparent
+ (cdr (car structure)))))
+ )