keyboard: resupport key texts after definition flags
[sheet.git] / font.plp
index 9faa9c10756c106120f046e6a2108b66bf446981..1e1732b9a46bcd21e716a45c76a6ae53ffbdfeb3 100644 (file)
--- a/font.plp
+++ b/font.plp
@@ -25,15 +25,29 @@ use 5.010;
 use Shiar_Sheet::FormatChar;
 my $glyphs = Shiar_Sheet::FormatChar->new;
 
+my %oslist = (
+       win95 => [qw/arial ariuni verdana times/],
+       mac10 => [qw//],
+       oss   => ['dv ss', qw/droid c2k guf/],
+
+       android => ['droid'],
+);
+my @ossel = qw(win95 oss);
+
 my $tables = do 'unicode-table.inc.pl' or die $@ || $!;
 my (%font, @fontlist);
-for my $fontid (qw(d tnr a dv dvs c2k u)) {
-       my ($fontmeta, @fontrange) = do "ttfsupport/$fontid.inc.pl";
-       push @fontlist, $fontid;
-       $font{$fontid} = {
-               -name => $fontmeta->{name},
-               map { (chr $_ => 1) } @fontrange
-       };
+for my $os (@ossel) {
+       my $osfonts = $oslist{$os};
+       for my $fontid (@{$osfonts}) {
+               push @fontlist, $fontid;
+               my ($fontmeta, @fontrange) = do "ttfsupport/$fontid.inc.pl";
+               $fontmeta or next;
+               $font{$fontid} = {
+                       -id   => $fontmeta->{id} || $fontid,
+                       -name => $fontmeta->{name},
+                       map { (chr $_ => 1) } @fontrange
+               };
+       }
 }
 
 my @config = qw(
@@ -47,9 +61,23 @@ $_ and m{/*+(.+)} and @config = split /[ ]/, $1 for $ENV{PATH_INFO}, $get{q};
 for (@config) {
        my ($tablegroup, $tablename) = split m{/}, $_, 2;
 
-       print '<table>';
+       print '<table class=mapped>';
        printf '<caption>%s</caption>', "$tablegroup: $tablename";
        say '';
+       print '<col>' x 3;
+       print "<colgroup span=$_>" for 2, map { scalar @{$oslist{$_}} } @ossel;
+       print '<thead><tr>';
+       print '<td colspan=2>char';
+       print '<td>name';
+       print '<td>di<td>html';
+       printf('<td colspan=%d title="%s">%s',
+               (map {
+                       scalar @{$_},
+                       join(', ', map { $_->{-name} } @font{ @{$_} }),
+               } $oslist{$_}),
+               $_,
+       ) for @ossel;
+       say '</thead>';
        my $table = $tables->{$tablegroup}->{$tablename};
 
        for my $chr (@$table) {
@@ -71,12 +99,14 @@ for (@config) {
                print "<tr><th>$chr\n";
                my $info = $glyphs->glyph_info($codepoint);
                my ($class, $name, $mnem, $html, $string) = @$info;
-               print "<td>$_" for $codepoint, EscapeHTML($name);
+               print "<td>$_" for sprintf('%X', $codepoint), EscapeHTML($name);
                printf '<td class="%s">%s', @$_ for (
                        [$ascii ? 'l0' : defined $mnem ? 'l4' : 'l1', $mnem // ''],
                        [$ascii ? 'l0' : defined $html ? 'l4' : 'l1', $html // ''],
-                       (map { $font{$_}->{$chr} ? [l4 => $font{$_}->{-name}] : [l1 => ''] }
-                               @fontlist),
+                       (map {
+                               !$font{$_}->{-id} ? [l0 => "$_?"] :
+                               $font{$_}->{$chr} ? [l4 => $font{$_}->{-id}] : [l1 => '']
+                       } @fontlist),
                );
        }
        say "</table>\n";