From: Mischa POSLAWSKY Date: Mon, 2 Apr 2012 20:39:47 +0000 (+0200) Subject: font: flat list of characters, ungrouped X-Git-Tag: v1.5~35 X-Git-Url: http://git.shiar.nl/sheet.git/commitdiff_plain/7198370583edc12c00f9e1dacd7eb084a8f4408b font: flat list of characters, ungrouped --- diff --git a/font.plp b/font.plp index 68f613f..f9b7ac6 100644 --- a/font.plp +++ b/font.plp @@ -50,69 +50,76 @@ for my $os (@ossel) { } } -my @config = qw( - punctuation/common punctuation/marks - latin/sample - symbols/signs1 - math/logic -); -$_ and m{/*+(.+)} and @config = split /[ ]/, $1 for $ENV{PATH_INFO}, $get{q}; -@config = qw(ipa/cons ipa/vowels) if 0; +# parse input -for (@config) { - my ($tablegroup, $tablename) = split m{/}, $_, 2; +my @chars; - print ''; - printf '', "$tablegroup: $tablename"; - say ''; - print '' x 3; - print "" for 2, map { scalar @{$oslist{$_}} } @ossel; - print ''; - print ''; +for ($ENV{PATH_INFO} || $get{q} || ()) { + s{^/}{}; + when ('') { + next; + } + when (qr{/}) { + push @{ $get{'@g'} }, $_; + } + default { + die "unknown parameter: $_\n"; + } +} + +$get{'@g'} //= ['latin/sample']; + +for (map { split / / } @{ $get{'@g'} }) { + my ($tablegroup, $tablename) = split m{/}, $_, 2; my $table = $tables->{$tablegroup}->{$tablename}; - for my $chr (@$table) { - $chr =~ m/^\./ .. 1 or next; - given ($chr) { - when (/^[.]/) { - print "\n"; - next; - } - when ([qw(> - =)]) { - next; - } - } - - my $ex = s/^-//; - my $codepoint = ord $chr; - my $ascii = $codepoint <= 127; - - print "
%s
char'; - print 'name'; - print 'dihtml'; - printf('%s', - (map { - scalar @{$_}, - join(', ', map { $_->{-name} } @font{ @{$_} }), - } $oslist{$_}), - $_, - ) for @ossel; - say '
$chr\n"; - my $info = $glyphs->glyph_info($codepoint); - my ($class, $name, $mnem, $html, $string) = @$info; - print "$_" for sprintf('%X', $codepoint), EscapeHTML($name); - printf '%s', @$_ for ( - [$ascii ? 'l0' : defined $mnem ? 'l4' : 'l1', $mnem // ''], - [$ascii ? 'l0' : defined $html ? 'l4' : 'l1', $html // ''], - (map { - !$font{$_}->{-id} ? [l0 => "$_?"] : - $font{$_}->{$chr} ? [l4 => $font{$_}->{-id}] : [l1 => ''] - } @fontlist), - ); + for (@{$table}) { + m/^[.]/ .. 1 or next; + next if /^[.-]/; + next if $_ eq '>' or $_ eq '='; + push @chars, $_; } - say "
\n"; } -:> - +# output character list + +print ''; +print '' x 3; +print "" for 2, map { scalar @{$oslist{$_}} } @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{$_} }, $_ + for @ossel; + +print '
unicode'; +print 'name'; +print 'dihtml'; +printf '%s', $font{$_}->{-name}, $font{$_}->{-id} // $_ + for @fontlist; +say '
$chr\n"; + my $info = $glyphs->glyph_info($codepoint); + my ($class, $name, $mnem, $html, $string) = @$info; + print "$_" for sprintf('%X', $codepoint), EscapeHTML($name); + printf '%s', @$_ for ( + [$ascii ? 'l0' : defined $mnem ? 'l4' : 'l1', $mnem // ''], + [$ascii ? 'l0' : defined $html ? 'l4' : 'l1', $html // ''], + (map { + !$font{$_}->{-id} ? [l0 => '?'] : + $font{$_}->{$chr} ? [l4 => '✔'] : [l1 => '✘'] + } @fontlist), + ); +} + +say "
\n"; + +:>