4 title => 'latin alphabet cheat sheet',
9 latin roman alphabet script letter unicode font glyph abc
10 code encoding spelling symbol writing comparison character
11 secret cursive fraktur blind braille morse deaf asl hand
12 barcode bar color semaphore flag
14 data => ['writing-latn.inc.pl'],
20 vertical-align: middle;
22 svg path:not([fill]) {
26 svg circle:not([fill]) {
38 white-space: nowrap; /* prevent resize by sample */
42 <h1>Latin alphabet</h1>
44 <p id=intro>Variant encodings of the common ASCII (latin, roman,
45 or <span title="fuck yeah!">'mercan</span>) letters A–Z.
46 Also see <a href="/writing">related alphabets</a>
47 and <a href="/chars/abc">font comparison</a>.</p>
50 my $table = Data('writing-latn');
54 while (my ($id, $info) = each %$table) {
55 ref $info eq 'HASH' or next;
56 my $style = $info->{style} or next;
57 ref $style or $style = [$style];
58 say "\t", !/^@/ && "#$id ", $_ for @{$style};
63 my %VOWELCOLS = (map { ($_ => 1) } 0, 4, 8, 14, 20, 24);
64 say '<table class="glyphs">';
73 my $info = $table->{$id};
75 if (ref $info eq 'ARRAY') {
80 printf '<tr id="%s">', $id;
82 $th .= sprintf ' title="%s"', $_ for $info->{title} || ();
83 say "<$th>", $info->{name} // ucfirst $id;
87 for (@{ $info->{list} }) {
94 push @class ,'l0' if $VOWELCOLS{$col - $colspan};
95 push @class, $_ ? 'ex' : 'u-invalid' if s/^-//;
99 # special character for sample generation
100 print ' hidden'; # sample only
103 print ' title=', chr($col + ord('A') - $colspan);
106 print " colspan=$colspan";
109 printf ' class="%s"', "@class" if @class;
117 <script type="text/javascript" src="/latinsample.js"></script>
118 <script type="text/javascript"><!--
119 prependinput(document.getElementById('intro'));