summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl')
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl117
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);