latin: prevent line wrapping of code39 bars
[sheet.git] / latin.plp
index 68e6a83b03462d2b9ff93faf4e93dfd57d8a8860..6de3fa5ce9e5eccf12a1686e2af2a4807cf51ec6 100644 (file)
--- a/latin.plp
+++ b/latin.plp
@@ -2,13 +2,14 @@
 
 Html({
        title => 'latin alphabet cheat sheet',
-       version => '1.2',
+       version => '1.3',
        description => [
        ],
        keywords => [qw'
                latin roman alphabet script letter unicode font glyph abc
-               writing comparison character sample test language spelling
-               cursive fraktur blind deaf
+               code encoding spelling symbol writing comparison character
+               secret cursive fraktur blind braille morse deaf asl hand
+               barcode bar color semaphore flag
        '],
        stylesheet => [qw'light dark red'],
        data => ['writing-latn.inc.pl'],
@@ -20,26 +21,72 @@ Html({
                font-family: Suetterlin; /* R. G. Arens */
                src: url("/suetterlin.ttf");
        }
-       .glyphs tr:first-child+tr+tr td { font-family: Suetterlin }
+       #sütterlin td { font-family: Suetterlin }
+       #tap-code td,
+       #tap-simplified td {
+               line-height: 1ex;
+       }
+       #old-roman-cursive {
+               stroke-linecap: round;
+               stroke-linejoin: round;
+       }
+       #code-39 {
+               white-space: nowrap;
+       }
+
+       svg path:not([fill]) {
+               stroke: currentColor;
+               fill: none;
+       }
+
+       td {
+               vertical-align: top;
+       }
+       td > svg {
+               vertical-align: middle;
+       }
 </style>
 
 <h1>Latin alphabet</h1>
 
-<p>Also see <a href="/writing">other alphabets</a>
+<p>Variant encodings of the common ASCII (latin, roman,
+or <span title="fuck yeah!">'mercan</span>) letters A–Z.
+Also see <a href="/writing">related alphabets</a>
 and <a href="/unicode">common chars</a>.</p>
 
-<div class="-diinfo">
+<div>
 
 <:
+use List::Util qw( pairs );
+
 my @table = do 'writing-latn.inc.pl';
 if ($! or $@) {
-       printf "<p class=error>Table data not found: <em>%s</em>.</p>\n", $@ || $!;
+       Alert("Table data not found", $@ || $!);
 }
 else {
-       print '<table class="glyphs">';
-       print ref $_ ne 'ARRAY' ? "<tr><th>$_" : map {/^<td/ ? $_ : "<td>$_"} @$_ for @table;
-       print "</table>\n\n";
+       say '<table class="glyphs">';
+       for my $row (pairs @table) {
+               my ($title, $cells) = @{$row};
+               printf '<tr id="%s">', (lc $title) =~ s/<[^>]+>//gr =~ s/\s+/-/gr;
+               say '<th>', $title;
+               my $colspan = 1;
+               for (@{$cells}) {
+                       if ($_ eq '>') {
+                               $colspan++;
+                               next;
+                       }
+                       print "\t<td";
+                       if ($colspan > 1) {
+                               print " colspan=$colspan";
+                               $colspan = 1;
+                       }
+                       print ' class=', $_ ? 'ex' : 'u-invalid' if s/^-//;
+                       print '>';
+                       say;
+               }
+       }
+       say "</table>\n";
 }
 
-print "</div>\n";
+:></div>