diff options
Diffstat (limited to 'Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl')
-rwxr-xr-x | Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl new file mode 100755 index 00000000000..a537e25a07e --- /dev/null +++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl @@ -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); |