index: release v1.18 with only altgr index linked
[sheet.git] / latin.plp
index 89afb61358b194ecb4f5672ddf5c364de7beddbf..578d858f73c2b14890ce2a720763a18e9654f8b5 100644 (file)
--- a/latin.plp
+++ b/latin.plp
 
 Html({
        title => 'latin alphabet cheat sheet',
-       version => 'v1.0',
+       version => '1.7',
        description => [
        ],
        keywords => [qw'
                latin roman alphabet script letter unicode font glyph abc
-               writing comparison character sample test language
+               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'],
+       stylesheet => [qw( light dark red mono )],
+       data => ['writing-latn.inc.pl'],
 });
 
 :>
-<h1>Latin alphabet</h1>
+<style>
+       td svg {
+               vertical-align: middle;
+       }
+       svg path:not([fill]) {
+               stroke: currentColor;
+               fill: none;
+       }
+       svg circle:not([fill]) {
+               fill: currentColor;
+       }
+
+       .sample {
+               text-align: left;
+               padding: 1px 0.3em;
+       }
+       td.sample {
+               width: auto;
+       }
+       th {
+               white-space: nowrap; /* prevent resize by sample */
+       }
+</style>
 
-<p>Also see <a href="/writing">other alphabets</a>
-and <a href="/unicode">common chars</a>.</p>
+<h1>Latin alphabet</h1>
 
-<div class="-diinfo">
+<p id=intro>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="/chars/abc">font comparison</a>.</p>
 
 <:
-use Shiar_Sheet::FormatChar;
-my $glyphs = Shiar_Sheet::FormatChar->new;
-unless (exists $get{v}) {
-       $glyphs->{unicode}--;
-       $glyphs->{digraph}--;
+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";
 }
 
-my @t = (qw{
-       .>Latin      a b c d e f g h i j k l m n o p q r s t u v w x y z
-       .>Braille    ⠁ ⠃ ⠉ ⠙ ⠑ ⠋ ⠛ ⠓ ⠊ ⠚ ⠅ ⠇ ⠍ ⠝ ⠕ ⠏ ⠟ ⠗ ⠎ ⠞ ⠥ ⠧ ⠺ ⠭ ⠽ ⠵
-       .>Morse      ‧‑ ‑‧‧‧ ‑‧‑‧ ‑‧‧ ‧ ‧‧‐‧ ‐‐‧ ‧‧‧‧ ‧‧ ‧‐‐‐ ‐‧‐ ‧‐‧‧ ‐‐
-                    ‐‧ ‐‐‐ ‧‐‐‧ ‐‐‧‐ ‧‐‧ ‧‧‧ ‐ ‧‧‐ ‧‧‧‐ ‧‐‐ ‐‧‧‐ ‐‧‐‐ ‐‐‧‧
-});
-print $glyphs->table(exists $get{uc} ? [map {s/\s.//; uc} @t] : \@t);
+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;
+               }
 
-print "</div>\n";
+               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;
+               for (@{ $info->{list} }) {
+                       $col++;
+                       if ($_ eq '>') {
+                               $colspan++;
+                               next;
+                       }
+                       my @class;
+                       push @class ,'l0' if $VOWELCOLS{$col - $colspan};
+                       push @class, $_ ? 'ex' : 'u-invalid' if s/^-//;
+
+                       print "\t<td";
+                       if ($col > 26) {
+                               # special character for sample generation
+                               print ' hidden';  # sample only
+                       }
+                       else {
+                               print ' title=', chr($col + ord('A') - $colspan);
+                       }
+                       if ($colspan > 1) {
+                               print " colspan=$colspan";
+                               $colspan = 1;
+                       }
+                       printf ' class="%s"', "@class" if @class;
+                       print '>';
+                       say;
+               }
+       }
+}
+
+:>
+<script type="text/javascript" src="/latinsample.js"></script>
+<script type="text/javascript"><!--
+       prependinput(document.getElementById('intro'));
+//--></script>