+ (ids-update-index 'in-memory)
+
+ (map-char-attribute
+ (lambda (c v)
+ (unless (equal (setq ret (ideographic-structure-compact v)) v)
+ (princ (format "Compact %04X (%c) : %s -> %s\n"
+ (char-int c)
+ c
+ (ideographic-structure-to-ids v)
+ (ideographic-structure-to-ids ret)))
+ (put-char-attribute c 'ideographic-structure ret)
+ (setq v ret))
+ (unless (setq a-str (get-char-attribute c 'ideographic-structure@apparent))
+ (when (setq a-str (functional-ideographic-structure-to-apparent-structure v))
+ (put-char-attribute c 'ideographic-structure@apparent
+ (ideographic-structure-compact a-str))))
+ nil)
+ 'ideographic-structure)
+
+ (map-char-attribute
+ (lambda (c v)
+ (unless (equal (setq ret (ideographic-structure-compact v)) v)
+ (princ (format "Compact %04X (%c) : [apparent] %s -> %s\n"
+ (char-int c)
+ c
+ (ideographic-structure-to-ids v)
+ (ideographic-structure-to-ids ret)))
+ (put-char-attribute c 'ideographic-structure@apparent ret)
+ (setq v ret))
+ nil)
+ 'ideographic-structure@apparent)
+
+ (map-char-attribute
+ (lambda (c v)
+ (unless (equal (setq ret (ideographic-structure-compact v)) v)
+ (princ (format "Compact %04X (%c) : [apparent/leftmost] %s -> %s\n"
+ (char-int c)
+ c
+ (ideographic-structure-to-ids v)
+ (ideographic-structure-to-ids ret)))
+ (put-char-attribute c 'ideographic-structure@apparent/leftmost ret)
+ (setq v ret))
+ nil)
+ 'ideographic-structure@apparent/leftmost)
+
+ (map-char-attribute
+ (lambda (c v)
+ (unless (equal (setq ret (ideographic-structure-compact v)) v)
+ (princ (format "Compact %04X (%c) : [apparent/rightmost] %s -> %s\n"
+ (char-int c)
+ c
+ (ideographic-structure-to-ids v)
+ (ideographic-structure-to-ids ret)))
+ (put-char-attribute c 'ideographic-structure@apparent/rightmost ret)
+ (setq v ret))
+ nil)
+ 'ideographic-structure@apparent/rightmost)
+
+ (map-char-attribute
+ (lambda (c v)
+ (unless (equal (setq ret (ideographic-structure-compact v)) v)
+ (princ (format "Compact %04X (%c) : %s -> %s\n"
+ (char-int c)
+ c
+ (ideographic-structure-to-ids v)
+ (ideographic-structure-to-ids ret)))
+ (put-char-attribute c 'ideographic-structure ret)
+ (setq v ret))
+ nil)
+ 'ideographic-structure)
+ (map-char-attribute
+ (lambda (c v)
+ (unless (equal (setq ret (ideographic-structure-compact v)) v)
+ (princ (format "Compact %04X (%c) : [apparent] %s -> %s\n"
+ (char-int c)
+ c
+ (ideographic-structure-to-ids v)
+ (ideographic-structure-to-ids ret)))
+ (put-char-attribute c 'ideographic-structure@apparent ret)
+ (setq v ret))
+ nil)
+ 'ideographic-structure@apparent)
+ (map-char-attribute
+ (lambda (c v)
+ (unless (equal (setq ret (ideographic-structure-compact v)) v)
+ (princ (format "Compact %04X (%c) : [apparent/leftmost] %s -> %s\n"
+ (char-int c)
+ c
+ (ideographic-structure-to-ids v)
+ (ideographic-structure-to-ids ret)))
+ (put-char-attribute c 'ideographic-structure@apparent/leftmost ret)
+ (setq v ret))
+ nil)
+ 'ideographic-structure@apparent/leftmost)
+ (map-char-attribute
+ (lambda (c v)
+ (unless (equal (setq ret (ideographic-structure-compact v)) v)
+ (princ (format "Compact %04X (%c) : [apparent/rightmost] %s -> %s\n"
+ (char-int c)
+ c
+ (ideographic-structure-to-ids v)
+ (ideographic-structure-to-ids ret)))
+ (put-char-attribute c 'ideographic-structure@apparent/rightmost ret)
+ (setq v ret))
+ nil)
+ 'ideographic-structure@apparent/rightmost)
+ (princ "done.\n")
+
+ (princ "Updating char-feature `ideographic-structure'...")
+ (save-char-attribute-table 'ideographic-structure)
+ (save-char-attribute-table 'ideographic-structure@apparent)
+ (princ "done.\n")
+
+ (princ "Updating char-feature `ideographic-products'...")