mirror of
https://github.com/nicoverbruggen/gnu-freefont.git
synced 2025-08-07 17:50:09 +02:00
Add source files
This commit is contained in:
117
src/tools/utility/KerningNumerals.pl
Executable file
117
src/tools/utility/KerningNumerals.pl
Executable file
@ -0,0 +1,117 @@
|
||||
#!/usr/bin/perl
|
||||
=pod
|
||||
|
||||
=head1 KerningNumerals.pl
|
||||
|
||||
Move kerning information from ASCII numerals (U+0030...) to characters in
|
||||
the Adobe corporate use area (U+F6xx).
|
||||
|
||||
By: Primož Peterlin, 2003
|
||||
|
||||
$Id: KerningNumerals.pl,v 1.2 2003-05-15 12:04:41 peterlin Exp $
|
||||
|
||||
=cut
|
||||
|
||||
sub numerically { $a <=> $b; }
|
||||
|
||||
if ($#ARGV != 0) {
|
||||
print $#ARGV;
|
||||
die "Usage: $0 file.sfd\n";
|
||||
}
|
||||
|
||||
open(INFILE, $ARGV[0]) || die "Failed to open file: $ARGV[0]\n";
|
||||
|
||||
while (<INFILE>) {
|
||||
if (/^Kerns:/) {
|
||||
# Old-style kerning information
|
||||
chomp;
|
||||
# Cut off the first seven characters ("Kerns: ")
|
||||
substr($_,0,7) = "";
|
||||
@values = split;
|
||||
# Construct the hash $kern{$code}
|
||||
for ($i = 0; $i <= $#values; $i += 2) {
|
||||
$code = $values[$i];
|
||||
# Recode ASCII numerals to Adobe corporate use values
|
||||
if ($code == 48) {
|
||||
$code = 63033;
|
||||
} elsif ($code == 49) {
|
||||
$code = 63196;
|
||||
} elsif ($code == 50) {
|
||||
$code = 63034;
|
||||
} elsif ($code == 51) {
|
||||
$code = 63035;
|
||||
} elsif ($code == 52) {
|
||||
$code = 63036;
|
||||
} elsif ($code == 53) {
|
||||
$code = 63037;
|
||||
} elsif ($code == 54) {
|
||||
$code = 63038;
|
||||
} elsif ($code == 55) {
|
||||
$code = 63039;
|
||||
} elsif ($code == 56) {
|
||||
$code = 63040;
|
||||
} elsif ($code == 57) {
|
||||
$code = 63041;
|
||||
}
|
||||
$kern{$code} = $values[$i+1];
|
||||
}
|
||||
print "Kerns:";
|
||||
foreach $code (sort numerically keys(%kern)) {
|
||||
print " ",$code," ",$kern{$code};
|
||||
}
|
||||
print "\n";
|
||||
# Clean-up
|
||||
foreach $code (keys(%kern)) {
|
||||
delete $kern{$code};
|
||||
}
|
||||
} elsif (/^KernsSLIF:/) {
|
||||
# New-style kerning information
|
||||
chomp;
|
||||
# Cut off the first eleven characters ("KernsSLIF: ")
|
||||
substr($_,0,11) = "";
|
||||
@values = split;
|
||||
# Construct the hash $kern{$code}
|
||||
for ($i = 0; $i <= $#values; $i += 4) {
|
||||
$code = $values[$i];
|
||||
# Recode ASCII numerals to Adobe corporate use values
|
||||
if ($code == 48) {
|
||||
$code = 63033;
|
||||
} elsif ($code == 49) {
|
||||
$code = 63196;
|
||||
} elsif ($code == 50) {
|
||||
$code = 63034;
|
||||
} elsif ($code == 51) {
|
||||
$code = 63035;
|
||||
} elsif ($code == 52) {
|
||||
$code = 63036;
|
||||
} elsif ($code == 53) {
|
||||
$code = 63037;
|
||||
} elsif ($code == 54) {
|
||||
$code = 63038;
|
||||
} elsif ($code == 55) {
|
||||
$code = 63039;
|
||||
} elsif ($code == 56) {
|
||||
$code = 63040;
|
||||
} elsif ($code == 57) {
|
||||
$code = 63041;
|
||||
}
|
||||
$kern{$code} = $values[$i+1];
|
||||
$unx{$code} = $values[$i+2];
|
||||
$uny{$code} = $values[$i+3];
|
||||
}
|
||||
print "KernsSLIF:";
|
||||
foreach $code (sort numerically keys(%kern)) {
|
||||
print " ",$code," ",$kern{$code}," ",$unx{$code}," ",$uny{$code};
|
||||
}
|
||||
print "\n";
|
||||
# Clean-up
|
||||
foreach $code (keys(%kern)) {
|
||||
delete $kern{$code};
|
||||
}
|
||||
} else {
|
||||
# All other lines
|
||||
print;
|
||||
}
|
||||
}
|
||||
|
||||
close(INFILE);
|
Reference in New Issue
Block a user