X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/6721f1111bc49b8ee5efc0b39d74321c1393cdfb..67ae97362cec317f2cfc3ae97f9d3810f70d615c:/tools/mkfontinfo diff --git a/tools/mkfontinfo b/tools/mkfontinfo index 0f0857d..deada09 100755 --- a/tools/mkfontinfo +++ b/tools/mkfontinfo @@ -23,9 +23,6 @@ for my $fontfile (glob 'ttfsupport/*'.$incsuffix) { }; } - when (qr{^[a-z]+(?:/|\z)}) { - } - my %charlist; my $chartables = do 'unicode-table.inc.pl' or warn $@ || $!; @@ -38,6 +35,7 @@ if ($chartables) { $includerows ||= m/^[.]/ or next; next if /^[.-]/; next if $_ eq '>' or $_ eq '='; + s/^\\//; # escape push @{ $charlist{table}->{"$tablegroup/$tablename"} }, $_; push @{ $charlist{table}->{$tablegroup} }, $_; } @@ -48,6 +46,17 @@ if ($chartables) { } } +eval { + require HTML::Entities; + our %char2entity; + HTML::Entities->import('%char2entity'); + while (my ($char, $entity) = each %char2entity) { + $entity =~ /[a-zA-Z]/ or next; # only actual aliases + push @{ $charlist{table}->{html} }, $char; + } + 1; +} or warn "Could not include count for html entities: $@"; + use Unicode::UCD 'charinfo'; for my $code (0 .. 256**2) { my $charinfo = charinfo($code) or next; @@ -63,12 +72,31 @@ for my $chars (values %{$_}) { ($_ => scalar grep { $fontcover->{$_} } @{$chars}); } keys %font; $row{-count} = scalar @{$chars}; -# $row{-chars} = [ map { ord } sort @{$chars} ]; + + $row{-query} = eval { + my @query = map { ord } sort @{$chars}; + my $i = 0; + while ($i < @query) { + my $j = $i + 1; + my $v = $query[$i]; + while ($j < @query) { + $v++; + last if $query[$j] != $v; + $j++; + } + if ($j - $i > 2) { + splice(@query, $i, $j - $i, "$query[$i]-$query[$j-1]"); + } + $i++; + } + return join '+', @query; + }; $chars = \%row; } } +say "# automatically generated by $0"; say 'use utf8;'; say '+'.pp(\%charlist);