+# personal addendums
+my @extra;
+if (-r 'shiar.inc.txt') {
+ open my $include, '<:utf8', 'shiar.inc.txt';
+ for (readline $include) {
+ m{^([!"%'-Z_a-z]{2}) (.)} or next;
+ warn("$1 already defined"), next if defined $di{$1};
+ $di{$1} = ord $2;
+ push @extra, $1;
+ }
+}
+warn $@ if $@;
+
+# optionally get unicode character information
+my %info = eval {
+ require Unicode::UCD;
+ map {
+ $_ => Unicode::UCD::charinfo($di{$_})
+ || { block => '?', category => 'Xn', name => '', script => '' }
+ } keys %di;
+};
+
+# add custom categories for certain blocks
+for (values %info) {
+ $_->{category} .= ' Xa' if $_->{block} eq 'Basic Latin';
+ $_->{category} .= ' Xl' if $_->{block} eq 'Latin-1 Supplement';
+}
+
+# mark unofficial extras as such
+$info{$_}->{category} .= ' Xz' for @extra;
+