+ (when (and (memq 'numeric-value attributes)
+ (setq value (get-char-attribute char 'numeric-value)))
+ (insert (format "(numeric-value\t. %S)%s"
+ value
+ line-breaking))
+ (setq attributes (delq 'numeric-value attributes))
+ )))
+ (when (and (memq 'iso-10646-comment attributes)
+ (setq value (get-char-attribute char 'iso-10646-comment)))
+ (insert (format "(iso-10646-comment\t. %S)%s"
+ value
+ line-breaking))
+ (setq attributes (delq 'iso-10646-comment attributes))
+ )
+ (when (and (memq 'morohashi-daikanwa attributes)
+ (setq value (get-char-attribute char 'morohashi-daikanwa)))
+ (insert (format "(morohashi-daikanwa\t%s)%s"
+ (mapconcat (function prin1-to-string) value " ")
+ line-breaking))
+ (setq attributes (delq 'morohashi-daikanwa attributes))
+ )
+ (setq radical nil
+ strokes nil)
+ (when (and (memq 'ideographic-radical attributes)
+ (setq value (get-char-attribute char 'ideographic-radical)))
+ (setq radical value)
+ (insert (format "(ideographic-radical . %S)\t; %c%s"
+ radical
+ (aref ideographic-radicals radical)
+ line-breaking))
+ (setq attributes (delq 'ideographic-radical attributes))
+ )
+ (when (and (memq 'ideographic-strokes attributes)
+ (setq value (get-char-attribute char 'ideographic-strokes)))
+ (setq strokes value)
+ (insert (format "(ideographic-strokes . %S)%s"
+ strokes
+ line-breaking))
+ (setq attributes (delq 'ideographic-strokes attributes))
+ )
+ (when (and (memq 'kangxi-radical attributes)
+ (setq value (get-char-attribute char 'kangxi-radical)))
+ (unless (eq value radical)
+ (insert (format "(kangxi-radical\t . %S)\t; %c%s"
+ value
+ (aref ideographic-radicals value)
+ line-breaking))
+ (or radical
+ (setq radical value)))
+ (setq attributes (delq 'kangxi-radical attributes))
+ )
+ (when (and (memq 'kangxi-strokes attributes)
+ (setq value (get-char-attribute char 'kangxi-strokes)))
+ (unless (eq value strokes)
+ (insert (format "(kangxi-strokes\t . %S)%s"
+ value
+ line-breaking))
+ (or strokes
+ (setq strokes value)))
+ (setq attributes (delq 'kangxi-strokes attributes))
+ )
+ (when (and (memq 'japanese-radical attributes)
+ (setq value (get-char-attribute char 'japanese-radical)))
+ (unless (eq value radical)
+ (insert (format "(japanese-radical\t . %S)\t; %c%s"
+ value
+ (aref ideographic-radicals value)
+ line-breaking))
+ (or radical
+ (setq radical value)))
+ (setq attributes (delq 'japanese-radical attributes))
+ )
+ (when (and (memq 'japanese-strokes attributes)
+ (setq value (get-char-attribute char 'japanese-strokes)))
+ (unless (eq value strokes)
+ (insert (format "(japanese-strokes\t . %S)%s"
+ value
+ line-breaking))
+ (or strokes
+ (setq strokes value)))
+ (setq attributes (delq 'japanese-strokes attributes))
+ )
+ (when (and (memq 'cns-radical attributes)
+ (setq value (get-char-attribute char 'cns-radical)))
+ (insert (format "(cns-radical\t . %S)\t; %c%s"
+ value
+ (aref ideographic-radicals value)
+ line-breaking))
+ (setq attributes (delq 'cns-radical attributes))
+ )
+ (when (and (memq 'cns-strokes attributes)
+ (setq value (get-char-attribute char 'cns-strokes)))
+ (unless (eq value strokes)
+ (insert (format "(cns-strokes\t . %S)%s"
+ value
+ line-breaking))
+ (or strokes
+ (setq strokes value)))
+ (setq attributes (delq 'cns-strokes attributes))
+ )
+ (when (and (memq 'shinjigen-1-radical attributes)
+ (setq value (get-char-attribute char 'shinjigen-1-radical)))
+ (unless (eq value radical)
+ (insert (format "(shinjigen-1-radical . %S)\t; %c%s"
+ value
+ (aref ideographic-radicals value)
+ line-breaking))
+ (or radical
+ (setq radical value)))
+ (setq attributes (delq 'shinjigen-1-radical attributes))
+ )
+ (when (and (memq 'total-strokes attributes)
+ (setq value (get-char-attribute char 'total-strokes)))
+ (insert (format "(total-strokes . %S)%s"
+ value
+ line-breaking))
+ (setq attributes (delq 'total-strokes attributes))
+ )
+ (when (and (memq '->ideograph attributes)
+ (setq value (get-char-attribute char '->ideograph)))
+ (insert (format "(->ideograph\t%s)%s"
+ (mapconcat (lambda (code)
+ (cond ((symbolp code)
+ (symbol-name code))
+ ((integerp code)
+ (format "#x%04X" code))
+ (t
+ (format "%s %S"
+ line-breaking code))))
+ value " ")
+ line-breaking))
+ (setq attributes (delq '->ideograph attributes))
+ )
+ (when (and (memq '->decomposition attributes)
+ (setq value (get-char-attribute char '->decomposition)))
+ (insert (format "(->decomposition\t%s)%s"
+ (mapconcat (lambda (code)
+ (cond ((symbolp code)
+ (symbol-name code))
+ ((characterp code)
+ (if readable
+ (format "%S" code)
+ (format "#x%04X"
+ (char-int code))
+ ))
+ ((integerp code)
+ (format "#x%04X" code))
+ (t
+ (format "%s%S" line-breaking code))))
+ value " ")
+ line-breaking))
+ (setq attributes (delq '->decomposition attributes))
+ )
+ (when (and (memq '->uppercase attributes)
+ (setq value (get-char-attribute char '->uppercase)))
+ (insert (format "(->uppercase\t%s)%s"
+ (mapconcat (lambda (code)
+ (cond ((symbolp code)
+ (symbol-name code))
+ ((integerp code)
+ (format "#x%04X" code))
+ (t
+ (format "%s %S"
+ line-breaking code))))
+ value " ")
+ line-breaking))
+ (setq attributes (delq '->uppercase attributes))
+ )
+ (when (and (memq '->lowercase attributes)
+ (setq value (get-char-attribute char '->lowercase)))
+ (insert (format "(->lowercase\t%s)%s"
+ (mapconcat (lambda (code)
+ (cond ((symbolp code)
+ (symbol-name code))
+ ((integerp code)
+ (format "#x%04X" code))
+ (t
+ (format "%s %S"
+ line-breaking code))))
+ value " ")
+ line-breaking))
+ (setq attributes (delq '->lowercase attributes))
+ )
+ (when (and (memq '->titlecase attributes)
+ (setq value (get-char-attribute char '->titlecase)))
+ (insert (format "(->titlecase\t%s)%s"
+ (mapconcat (lambda (code)
+ (cond ((symbolp code)
+ (symbol-name code))
+ ((integerp code)
+ (format "#x%04X" code))
+ (t
+ (format "%s %S"
+ line-breaking code))))
+ value " ")
+ line-breaking))
+ (setq attributes (delq '->titlecase attributes))
+ )
+ (when (and (memq '->mojikyo attributes)
+ (setq value (get-char-attribute char '->mojikyo)))
+ (insert (format "(->mojikyo\t\t. %06d)\t; %c%s"
+ value (decode-char 'mojikyo value)
+ line-breaking))
+ (setq attributes (delq '->mojikyo attributes))
+ )
+ (setq rest ccs-attributes)
+ (while (and rest
+ (progn
+ (setq value (get-char-attribute char (car rest)))
+ (if value
+ (if (>= (length (symbol-name (car rest))) 19)
+ (progn
+ (setq has-long-ccs-name t)
+ nil)
+ t)
+ t)))
+ (setq rest (cdr rest)))
+ (while attributes
+ (setq name (car attributes))
+ (if (setq value (get-char-attribute char name))
+ (cond ((eq name 'jisx0208-1978/4X)
+ (insert (format "(%-18s . #x%04X)%s"
+ name value
+ line-breaking)))
+ ((string-match "^->" (symbol-name name))
+ (insert
+ (format "(%-18s %s)%s"
+ name
+ (mapconcat (lambda (code)
+ (cond ((symbolp code)
+ (symbol-name code))
+ ((integerp code)
+ (format "#x%04X" code))
+ (t
+ (format "%s%S"
+ line-breaking code))))
+ value " ")
+ line-breaking)))
+ ((memq name '(ideograph=
+ original-ideograph-of
+ ancient-ideograph-of
+ vulgar-ideograph-of
+ wrong-ideograph-of
+ simplified-ideograph-of
+ ideographic-variants
+ ideographic-different-form-of))
+ (insert (format "(%-18s%s " name line-breaking))
+ (setq lbs (concat "\n" (make-string (current-column) ?\ ))
+ separator nil)
+ (while (consp value)
+ (setq cell (car value))
+ (if (and (consp cell)
+ (consp (car cell)))
+ (progn
+ (if separator
+ (insert lbs))
+ (char-db-insert-alist cell readable)
+ (setq separator lbs))
+ (if separator
+ (insert separator))
+ (insert (prin1-to-string cell))
+ (setq separator " "))
+ (setq value (cdr value)))
+ (insert ")")
+ (insert line-breaking))
+ ((consp value)
+ (insert (format "(%-18s " name))
+ (setq lbs (concat "\n" (make-string (current-column) ?\ ))
+ separator nil)
+ (while (consp value)
+ (setq cell (car value))
+ (if (and (consp cell)
+ (consp (car cell))
+ (setq ret (condition-case nil
+ (define-char cell)
+ (error nil))))
+ (progn
+ (setq rest cell
+ al nil
+ cal nil)
+ (while rest
+ (setq key (car (car rest)))
+ (if (find-charset key)
+ (setq cal (cons key cal))
+ (setq al (cons key al)))
+ (setq rest (cdr rest)))
+ (if separator
+ (insert lbs))
+ (insert-char-attributes ret
+ readable
+ al cal)
+ (setq separator lbs))
+ (if separator
+ (insert separator))
+ (insert (prin1-to-string cell))
+ (setq separator " "))
+ (setq value (cdr value)))
+ (insert ")")
+ (insert line-breaking))
+ (t
+ (insert (format "(%-18s . %S)%s"
+ name value
+ line-breaking)))
+ ))
+ (setq attributes (cdr attributes)))
+ (while ccs-attributes
+ (setq name (car ccs-attributes))
+ (if (and (eq name (charset-name name))
+ (setq value (get-char-attribute char name)))
+ (insert
+ (format
+ (cond ((memq name '(ideograph-daikanwa ideograph-gt))
+ (if has-long-ccs-name
+ "(%-26s . %05d)\t; %c%s"
+ "(%-18s . %05d)\t; %c%s"))
+ ((eq name 'mojikyo)
+ (if has-long-ccs-name
+ "(%-26s . %06d)\t; %c%s"
+ "(%-18s . %06d)\t; %c%s"))