<(common.inc.plp)><:
Html({
title => 'latin alphabet cheat sheet',
version => '1.7',
description => [
],
keywords => [qw'
latin roman alphabet script letter unicode font glyph abc
code encoding spelling symbol writing comparison character
secret cursive fraktur blind braille morse deaf asl hand
barcode bar color semaphore flag
'],
data => ['writing-latn.inc.pl'],
});
:>
<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;
}
</style>
<h1>Latin alphabet</h1>
<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>
<:
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 %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;
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) {
print ' hidden';
}
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>