digraphs: page footer
[sheet.git] / rfc1345convert
index 6edfa7445083ea4588365224c05927102eb6f0a2..412bac14cbbd7cc50afc017301d627f158733dbe 100644 (file)
@@ -46,10 +46,26 @@ for (@t) {
        $di{$mnem} = hex $char;
 }
 
+# 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{$_}) } keys %di;
+       map {
+               $_ => Unicode::UCD::charinfo($di{$_})
+                       || { block => '?', category => 'Xn', name => '', script => '' }
+       } keys %di;
 };
 
 # add custom categories for certain blocks
@@ -58,6 +74,9 @@ for (values %info) {
        $_->{category} .= ' Xl' if $_->{block} eq 'Latin-1 Supplement';
 }
 
+# mark unofficial extras as such
+$info{$_}->{category} .= ' Xz' for @extra;
+
 # output perl code of hash
 # (assume no backslashes or curlies, so we can just q{} w/o escaping)
 print "{\n";