index: release v1.18 with only altgr index linked
[sheet.git] / latin.plp
index bbd256b959591f0f635e252aa2116faeab15081c..578d858f73c2b14890ce2a720763a18e9654f8b5 100644 (file)
--- a/latin.plp
+++ b/latin.plp
@@ -2,7 +2,7 @@
 
 Html({
        title => 'latin alphabet cheat sheet',
 
 Html({
        title => 'latin alphabet cheat sheet',
-       version => '1.3',
+       version => '1.7',
        description => [
        ],
        keywords => [qw'
        description => [
        ],
        keywords => [qw'
@@ -17,83 +17,9 @@ Html({
 
 :>
 <style>
 
 :>
 <style>
-       @font-face {
-               font-family: Suetterlin; /* R. G. Arens */
-               src: url("/suetterlin.ttf");
-       }
-       #sütterlin td { font-family: Suetterlin }
-       #ita2 td,
-       #tap-code td,
-       #short-tap td {
-               white-space: normal;
-               word-spacing: 5em; /* force line break between words */
-       }
-       #tap-code td,
-       #short-tap td {
-               line-height: 1ex;
-       }
-       #ita2 td {
-               font-size: 50%;
-       }
-       #cards td {
-               font-family: Symbola, "DejaVu Sans", serif, sans;
-       }
-       #pigpen {
-               stroke-linecap: square;
-       }
-       #nyctographs,
-       #old-roman-cursive {
-               stroke-linecap: round;
-               stroke-linejoin: round;
-       }
-       td {
-               white-space: nowrap;
-       }
-       th {
-               width: auto !important;
-       }
-
-       .sample {
+       td svg {
                vertical-align: middle;
                vertical-align: middle;
-               text-align: left;
-               padding: 1px 0.3em;
-       }
-       #old-roman-cursive .sample span {
-               margin-right: -10px;
-       }
-       #tap-code .sample,
-       #short-tap .sample {
-               font-size: 80%;
-       }
-       #ita2 .sample,
-       #tap-code .sample,
-       #short-tap .sample {
-               word-spacing: 0;
-       }
-       #ita2 .sample span,
-       #tap-code .sample span,
-       #short-tap .sample span {
-               margin-right: 1ex;
-               white-space: nowrap;
-       }
-       #sutton-asl .sample span,
-       #maritime-flags .sample span,
-       #morse .sample span {
-               margin-right: 0.5ex;
        }
        }
-       #pigpen .sample svg {
-               margin-right: 0.1em;
-       }
-       #nyctographs .sample svg {
-               background: rgba(0,0,0, .1);
-               padding: 0.1em;
-               margin-right: 0.2em;
-       }
-       #unistrokes svg path {
-               stroke-linecap: round;
-               stroke-linejoin: round;
-       }
-
        svg path:not([fill]) {
                stroke: currentColor;
                fill: none;
        svg path:not([fill]) {
                stroke: currentColor;
                fill: none;
@@ -102,11 +28,15 @@ Html({
                fill: currentColor;
        }
 
                fill: currentColor;
        }
 
-       td {
-               vertical-align: top;
+       .sample {
+               text-align: left;
+               padding: 1px 0.3em;
        }
        }
-       td svg {
-               vertical-align: middle;
+       td.sample {
+               width: auto;
+       }
+       th {
+               white-space: nowrap; /* prevent resize by sample */
        }
 </style>
 
        }
 </style>
 
@@ -117,29 +47,45 @@ or <span title="fuck yeah!">'mercan</span>) letters A–Z.
 Also see <a href="/writing">related alphabets</a>
 and <a href="/chars/abc">font comparison</a>.</p>
 
 Also see <a href="/writing">related alphabets</a>
 and <a href="/chars/abc">font comparison</a>.</p>
 
-<div>
-
 <:
 <:
-use List::Util qw( pairs );
-
-my @table = do 'writing-latn.inc.pl';
-if ($! or $@) {
-       Alert("Table data not found", $@ || $!);
+my $table = Data('writing-latn');
+{
+       say '<div>';
+       say '<style>';
+       while (my ($id, $info) = each %$table) {
+               ref $info eq 'HASH' or next;
+               my $style = $info->{style} or next;
+               ref $style or $style = [$style];
+               say "\t", !/^@/ && "#$id ", $_ for @{$style};
+       }
+       say "</style>\n";
 }
 }
-else {
-       my %VOWELCOLS = (map { ($_ => 1) } 0, 4, 8, 14, 20, 24);
-       say '<table class="glyphs">';
-       say '<thead><tr><th># <small>ASCII − 64</small>';
-       print '<td>', $_ for 1 .. 26;
-       say '</thead>';
 
 
-       for my $row (pairs @table) {
-               my ($title, $cells) = @{$row};
-               printf '<tr id="%s">', (lc $title) =~ s/<[^>]+>//gr =~ s/\s+/-/gr;
-               say '<th>', $title;
+my %VOWELCOLS = (map { ($_ => 1) } 0, 4, 8, 14, 20, 24);
+say '<table class="glyphs">';
+say '<thead>';
+printtr('order');
+say '</thead>';
+printtr('default');
+say "</table></div>";
+
+sub printtr {
+       for my $id (@_) {
+               my $info = $table->{$id};
+
+               if (ref $info eq 'ARRAY') {
+                       printtr(@{$info});
+                       next;
+               }
+
+               printf '<tr id="%s">', $id;
+               my $th = 'th';
+               $th .= sprintf ' title="%s"', $_ for $info->{title} || ();
+               say "<$th>", $info->{name} // ucfirst $id;
+
                my $colspan = 1;
                my $col = 0;
                my $colspan = 1;
                my $col = 0;
-               for (@{$cells}) {
+               for (@{ $info->{list} }) {
                        $col++;
                        if ($_ eq '>') {
                                $colspan++;
                        $col++;
                        if ($_ eq '>') {
                                $colspan++;
@@ -166,11 +112,11 @@ else {
                        say;
                }
        }
                        say;
                }
        }
-       say "</table>\n";
 }
 
 }
 
-:></div>
-
+:>
 <script type="text/javascript" src="/latinsample.js"></script>
 <script type="text/javascript" src="/latinsample.js"></script>
-<script type="text/javascript"> prependinput(document.getElementById('intro')) </script>
+<script type="text/javascript"><!--
+       prependinput(document.getElementById('intro'));
+//--></script>