Tools(listFontWithLang.pl): Remove padmaa from sans-list, it is serif font

Also display intervalls of character sets (unicode points)
This commit is contained in:
Kornel Benko 2020-05-30 14:29:39 +02:00
parent 1bf18368cf
commit 26788fdd9f
2 changed files with 40 additions and 22 deletions

View File

@ -47,7 +47,7 @@ sub makeHelp(); # Create help-string to describe options
my %optionsDef = ();
#option|param|type|aliases|comment
my $helpFormat = " %-8s|%-9s|%-7s|%-17s|%s\n";
my $helpFormat = " %-8.8s|%-9.9s|%-7.7s|%-17.17s|%s\n";
sub handleOptions($)
{
@ -66,6 +66,7 @@ sub handleOptions($)
$optionsDef{h}->{Sort} = 0;
$optionsDef{v}->{fieldname} = "verbose";
$optionsDef{v}->{alias} = ["verbose"];
$optionsDef{v}->{comment} = "Display recognized params";
$optionsDef{v}->{Sort} = 1;
my %options = ("help" => 0);
@ -75,15 +76,17 @@ sub handleOptions($)
while( my( $option, $value, $pretty ) = Getopt::Mixed::nextOption()) {
if (defined($optionsDef{$option})) {
my $fieldname = $optionsDef{$option}->{fieldname};
if (exists($options{$fieldname})) {
if (exists($options{$fieldname}) && ($option ne "h")) {
print "Option $option already set\n";
print "Value \"$value\" would overwrite ";
if (ref($options{$fieldname}) eq "ARRAY") {
print "\"" . join(',', @{$options{$fieldname}}) . "\"\n";
}
else {
print "\"$options{$fieldname}\"\n";
}
if (defined($options{$fieldname})) {
print "Value \"$value\" would overwrite ";
if (ref($options{$fieldname}) eq "ARRAY") {
print "\"" . join(',', @{$options{$fieldname}}) . "\"\n";
}
else {
print "\"$options{$fieldname}\"\n";
}
}
$option = "h";
$fieldname = "help";
}
@ -213,6 +216,10 @@ sub makeHelp()
$comment = $e->{comment};
}
$opts .= sprintf($helpFormat, $ex, $needed, $partype, $aliases, $comment);
if (defined($e->{comment2})) {
my $fill = "_" x 20;
$opts .= sprintf($helpFormat, $fill, $fill, $fill, $fill, $e->{comment2});
}
}
return($opts);
}

View File

@ -44,6 +44,7 @@ sub ismathfont($$);
sub correctstyle($);
sub decimalUnicode($);
sub contains($$);
sub sprintIntervalls($);
# Following fields for a parameter can be defined:
# fieldname: Name of entry in %options
@ -81,9 +82,10 @@ my @optionsDef = (
{fieldname => "Math",
comment => "Select fonts probably containing math glyphs"},],
["c",
{fieldname => "Contains",
{fieldname => "Contains", alias => ["contains"],
type => "=s", listsep => ',',
comment => "Select fonts containing all these (possibly comma separated) glyphs",}],
comment => "Select fonts containing all these (possibly comma separated) glyphs",
comment2 => "____example: -c=\"0-9,u+32-u+x7f\"",}],
["l",
{fieldname => "Lang",
type => "=s", alias=>["lang"],
@ -148,6 +150,9 @@ if (defined($options{Contains})) {
if (defined($last)) {
push(@{$options{Contains}}, [$first, $last]);
}
if (exists($options{verbose})) {
print "Checking for unicode-points: " . &sprintIntervalls($options{Contains}) . "\n";
}
}
my $cmd = "fc-list";
@ -275,7 +280,7 @@ my %sansFonts = (
"m" => qr/^m(\+ |anchu|anjari|arcellus|ashq|eera|etal|igmix|igu|ikachan|intspirit|ona|onlam|ono(fonto|id|isome|noki)|ontserrat|otoyal|ukti|usica)/i,
"n" => qr/^(nachlieli|nada|nafees|nagham|nanum(barunpen|square)|nice)/i,
"o" => qr/^(ocr|okolaks|opendyslexic|ostorah|ouhud|over|oxygen)/i,
"p" => qr/^(padauk|padmaa|pagul|paktype|pakenham|palladio|petra|phetsarath|play\b|poiret|port\b|primer\b|prociono|pt\b|purisa)/i,
"p" => qr/^(padauk|pagul|paktype|pakenham|palladio|petra|phetsarath|play\b|poiret|port\b|primer\b|prociono|pt\b|purisa)/i,
"q" => qr/^(qt(ancient|helvet|avanti|doghaus|eratype|eurotype|floraline|frank|fritz|future|greece|howard|letter|optimum)|quercus)/i,
"r" => qr/^(rachana|radio\b|raleway|ricty|roboto|rosario)/i,
"s" => qr/^(salem|samanata|sawasdee|shado|sharja|simple|sophia|soul|source|switzera)/i,
@ -440,16 +445,7 @@ if (open(FI, "$cmd |")) {
$props .= '(' . join(',', sort keys %usedlangs) . ')';
}
if (exists($options{PrintCharset})) {
my @out = ();
for my $rE (@charlist) {
if ($rE->[0] != $rE->[1]) {
push(@out, $rE->[0] . '-' . $rE->[1]);
}
else {
push(@out, $rE->[0]);
}
}
$props .= '(' . join(',', @out) . ')';
$props .= '(' . &sprintIntervalls(\@charlist) . ')';
}
if (exists($options{PrintScripts}) || defined($options{Scripts}) || defined($options{NScripts}) || exists($options{Math})) {
my @scripts = ();
@ -947,3 +943,18 @@ sub contains($$)
}
return 0;
}
sub sprintIntervalls($)
{
my ($rList) = @_;
my @out = ();
for my $rE (@{$rList}) {
if ($rE->[0] != $rE->[1]) {
push(@out, $rE->[0] . '-' . $rE->[1]);
}
else {
push(@out, $rE->[0]);
}
}
return join(',', @out);
}