-printf "q{%s}=>[%s],\n", $_, join(',',
- $di->{$_}, # original code point
- (map {"'$_'"} @{ $uninfo->{ chr $di->{$_} } // [] }), # optional additional arguments
+printf "q{%s}=>[%s],\n", s/(?=[\\}])/\\/gr, join(',',
+ ord $di->{$_}, # original code point
+ map {"'$_'"}
+ $uninfo->{ $di->{$_} }->[1] // '', # name
+ $vim->{$_}
+ ? $rfc->{$_} ? 'u-di' : 'u-prop' # vim+rfc or vim only
+ : $rfc->{$_} ? 'ex' : 'u-prop ex', # rfc only or neither
+ ($uninfo->{ $di->{$_} }->[0] // '') =~ s/ u-di| u-prop| ex//gr, # class
+ $uninfo->{ $di->{$_} }->[4] // (), # string