-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
+ join(' ',
+ $rfc->{$_}
+ ? $vim->{$_} ? 'l4' : 'l1' # vim+rfc or rfc only
+ : $vim->{$_} ? 'l3' : 'l2', # vim only or neither
+ $vimold && $vim->{$_} && !$vimold->{$_} ? 'ex' : (), # new vim feature
+ ),
+ ($uninfo->{ $di->{$_} }->[0] // '') =~ s/ u-di| u-prop| ex//gr, # class
+ $uninfo->{ $di->{$_} }->[4] // (), # string