Listing of unitab.plx

#!/usr/bin/perl
use warnings; use strict; use utf8;
binmode STDOUT, ':utf8';

my %kb = (
    'ЕЎ' => [ ',c' , '' ],
    'Е ' => [ ',c' , '' ],
    'Е‹' => [ ',j' , '' ],
    'ЕЉ' => [ ',J' , '' ],
    'бё«' => [ ',h' , '' ],
    'бёЄ' => [ ',H' , '' ],
    'б№Ј' => [ ',s' , '' ],
    'б№ў' => [ ',S' , '' ],
    'б№­' => [ ',t' , '' ],
    'Ṭ' => [ ',T' , '' ],
    'Е›' => [ 'S,s', '' ],
    'Ељ' => [ 'S,S', '' ],
    'в‚Ђ' => [ ',0' , '' ],
    'в‚Ѓ' => [ ',1' , '' ],
    'в‚‚' => [ ',2' , '' ],
    'в‚ѓ' => [ ',3' , '' ],
    'в‚„' => [ ',4' , '' ],
    'в‚…' => [ ',5' , '' ],
    '₆' => [ ',6' , '' ],
    '₇' => [ ',7' , '' ],
    'в‚€' => [ ',8' , '' ],
    '₉' => [ ',9' , '' ],
    'в‚“' => [ ',x' , '' ],
    'Г—' => [ ',X' , '' ],
    'Кѕ' => [ ',)' , '' ],
    'Кї' => [ ',(' , '' ],
    'вёў' => [ ',[' , '' ],
    'вёЈ' => [ ',]' , '' ],
    'Кі' => [ ',r' , '' ],
    );

my %names = ();
open(N,"/usr/local/share/cdl/lib/data/NamesList.txt") || die;
while (<N>) {
    if (/^(\S+)\s+(.*?)$/) {
        chomp;
        my($u,$n) = ($1,$2);
        $n =~ s/\s+\(Sami\)\s*//;
        $names{$u} = $n;
    }
}
close(N);

my $chars = <<EOC;
áéíúÁÉÍÚśŚ
àèìùÀÈÌÙ
ДЃД“Д«Е«ДЂД’ДЄЕЄ
âêîûÂÊÎÛ
ЕЎЕ 
ṣṢṭṬ
бё«бёЄ
Е‹ЕЉ
Г—
Кѕ
Кї
₀₁₂₃₄₅₆₇₈₉ₓ
⸢⸣⸤⸥
Кі
EOC

$chars =~ tr/\n//d;

print <<EOT;
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Unicode for Cuneiform Transliteration</title>
<link rel="stylesheet" type="text/css" href="/cdlsite.css"/>
<link rel="stylesheet" type="text/css" href="/xdf.css"/>
<script src="/xdf.js" type="text/javascript"> </script>
</head>
<body>
<div class="sanstoc">
<div class="body">

<h1>Unicode Characters for Cuneiform Transliteration</h1>

<p>This page lists the essential Unicode characters for
transliterating Sumero-Akkadian cuneiform.  Several families of fonts
containing all of these characters are available from <a
href="/fonts.html">the fonts page</a>.

<table>
<thead><tr><th class="center ungkam">LITERAL</th><th>U+</th><th>UNICODE NAME</th><th>KEYS<sup>1</sup></th></tr></thead>
EOT
foreach my $c (split(/(.)/,$chars)) {
    if ($c) {
        my $u = sprintf "%04X", ord $c;
        my $k = $kb{$c};
        my $kbtd = '';
        if ($k && $$k[0]) {
            $kbtd = "<td class=\"center\">$$k[0]</td>";
        }
        print "<tr class=\"vcenter\"><td class=\"center ungkam\">$c</td><td>$u</td><td class=\"fixed\">$names{$u}</td>$kbtd</tr>\n";
    }
}
print <<EOT;
</table>
</div>
<p><sup>1</sup>A collection of keyboards supporting Unicode transliterations
implements a consistent set of input conventions across operating
systems.  The keystrokes in the 'KEYS' column above are composed of
the comma character (<code>,</code>) or the shifted comma character
(<code>S,</code>).  In each case the comma or shift-comma is followed
by the character typed to produce a unicode result.</p>
<p>For complete details please see <a href="keyboards.html">the keyboards
page</a>.</p>
</div>
</body>
</html>
EOT

1;