X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/1b59bfbf3962b74b973bde67c3de5b20dd5e7b58..2a99bcdadec88d7483903e2c8420ad3e78fcb805:/chars.plp diff --git a/chars.plp b/chars.plp index 869366c..d4cf06b 100644 --- a/chars.plp +++ b/chars.plp @@ -2,47 +2,47 @@ Html({ title => 'character support sheet', - version => 'v1.0', + version => '1.0', keywords => [qw' unicode glyph char character reference common ipa symbol sign mark table digraph '], stylesheet => [qw'light dark mono circus red'], data => [qw( unicode-cover.inc.pl ttfsupport unicode-char.inc.pl )], + raw => <<'EOT', + +EOT }); -use 5.010; use Shiar_Sheet::FormatChar; my $glyphs = Shiar_Sheet::FormatChar->new; -my %oslist = ( - win95 => [qw( arial ariuni verdana times )], # microsoft - mac10 => [qw( )], # apple - android => [qw( droidsans )], # google - oss => [qw( dvsans c2k unifont )], -); -my @ossel = qw( win95 oss android ); +my $groupinfo = do 'unicode-cover.inc.pl' or die $@ || $!; -my (%font, @fontlist); -for my $os (@ossel) { - my $osfonts = $oslist{$os}; - for my $fontid (@{$osfonts}) { - push @fontlist, $fontid; +my @ossel = @{ $groupinfo->{osdefault} }; +my @fontlist = map { $_->{file} } + @{ $groupinfo->{fonts} }[ map { @{ $groupinfo->{os}->{$_} } } @ossel ]; + +my %font; +for my $fontid (@fontlist) { my ($fontmeta, @fontrange) = do "ttfsupport/$fontid.inc.pl"; $fontmeta or next; $font{$fontid} = { - -id => $fontmeta->{id} || $fontid, - -name => $fontmeta->{name}, + (map { (-$_ => $fontmeta->{$_}) } keys %{$fontmeta}), map { (chr $_ => 1) } @fontrange }; - } } # parse input my ($title, $parent) = ('Character overview'); my $query = eval { - for ($ENV{PATH_INFO} || ()) { - s{^/}{}; + for ($Request || ()) { return $_ if m{^[0-9 +-]+$}; my ($cat, $name) = split m{/}, $_, 2 or die "invalid query\n"; @@ -50,20 +50,19 @@ my $query = eval { ($cat, $name) = ('table', $cat); } - my $groupinfo = do 'unicode-cover.inc.pl' or die $@ || $!; my $row = $groupinfo->{$cat}->{$name} or die "unknown character group $cat/$name\n"; $title = ucfirst EscapeHTML($name).' characters'; $parent = $cat; - return EscapeHTML($row->{-query}); + return EscapeHTML($row->{query}); } } || $get{q}; say "

$title

"; if (!$query) { - say "

Unicode group not specified: $@

"; + Alert('Unicode group not specified', $@); exit; }; @@ -97,37 +96,41 @@ for (map { split /[^\d-]/ } $query) { # output character list say '
'; -print ''; +print '
'; print '' x 3; -print "" for 2, map { scalar @{$oslist{$_}} } @ossel; +print "" + for 2, map { scalar @{ $groupinfo->{os}->{$_} } } @ossel; print ''; print ''; print ''; for my $chr (@chars) { my $codepoint = ord $chr; my $ascii = $codepoint <= 127; - print "
character'; print 'input'; -printf '%s fonts', scalar @{ $oslist{$_} }, $_ +printf '%s', scalar @{ $groupinfo->{os}->{$_} }, $_ for @ossel; print '
unicode'; print 'name'; print 'dihtml'; -printf '%s', $font{$_}->{-name}, $font{$_}->{-id} // $_ - for @fontlist; +printf('%s', map { EscapeHTML($_) } + join("\n", $font{$_}->{-name}, $font{$_}->{-description}), + $font{$_}->{-abbr}, +) for @fontlist; say '
$chr\n"; + say '
', $chr; my $info = $glyphs->glyph_info($codepoint); - my ($class, $name, $mnem, $html, $string) = @$info; + my ($class, $name, $mnem, $entity, $string) = @$info; print "$_" for sprintf('%X', $codepoint), EscapeHTML($name || '?'); printf '%s', @$_ for ( - [$ascii ? 'l0' : defined $mnem ? $class =~ /\bu-di\b/ ? 'l4' : 'l3' : 'l1', $mnem // ''], - [$ascii ? 'l0' : defined $html ? 'l4' : 'l1', $html // ''], + [$ascii ? 'l0' : defined $mnem ? $class =~ /\bu-di\b/ ? 'l4' : 'l3' : 'l1', + EscapeHTML($mnem) // ''], + [$ascii ? 'l0' : defined $entity ? 'l4' : 'l1', $entity // ''], (map { - !$font{$_}->{-id} ? [l0 => '?'] : + !defined $font{$_}->{-name} ? [l0 => '?'] : $font{$_}->{$chr} ? [l4 => '✔'] : [l1 => '✘'] } @fontlist), );