+# XXX
+my %trans = (
+ 0xE001 => 0, # join lines: not accepted
+ 0xE004 => 0, # umlaut is no different from diaeresis 0x0308
+ 0xE005 => 0x0344, # discouraged
+ 0xE006 => 0x0300,
+ 0xE007 => 0x0301,
+ 0xE008 => 0x0302,
+ 0xE009 => 0x0303,
+ 0xE00A => 0x0304,
+ 0xE00B => 0x0306,
+ 0xE00C => 0x0307,
+ 0xE00D => 0x0308,
+ 0xE00E => 0x030A,
+ 0xE00F => 0x030B,
+ 0xE010 => 0x030C,
+ 0xE011 => 0x0327,
+ 0xE012 => 0x0328,
+ 0xE013 => 0x0332,
+ 0xE014 => 0x0333,
+ 0xE015 => 0x0338,
+ 0xE016 => 0x0345,
+ 0xE017 => 0x0314,
+ 0xE018 => 0x0313,
+ 0xE019 => 0x1FFE,
+ 0xE01A => 0x1FBF,
+ 0xE01B => 0x03D0, # middle beta = curled beta?
+ 0xE01C => 0x25CB,
+ 0xE01D => 0x0192,
+ 0xE01E => 0x0292,
+ 0xE01F => 0x33C2, # am, compatibility char
+ 0xE020 => 0x33D8, # pm, compatibility char
+ 0xE021 => 0x2121,
+ 0xE022 => 0xFE8E,
+ 0xE023 => 0, # dutch guilder 0192 is already encoded, and not very useful anyway
+ 0xE024 => 0x0393,
+ 0xE025 => 0x20D7, # also 20D1; non-spacing
+ 0xE026 => 0x1FEF,
+ 0xE027 => 0x1FC0,
+ 0xE028 => 0x01F0, #but uppercase
+);
+for (values %di) {
+ $_ >= 0xE000 or next;
+ $_ = $trans{$_} if defined $trans{$_};
+}
+
+# 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 $@;
+