Index: trunk/Ohana/src/kapa/graph/PSRotFont.c
===================================================================
--- trunk/Ohana/src/kapa/graph/PSRotFont.c	(revision 5610)
+++ trunk/Ohana/src/kapa/graph/PSRotFont.c	(revision 5611)
@@ -1,4 +1,4 @@
 # include "Ximage.h"
-# include "alphabet.h"
+# define NROTCHARS 256
 
 /* writes commands to print string at location and angle using
@@ -6,10 +6,16 @@
 void PSRotText (FILE *f, int x, int y, char *string, int pos, double angle) {
 
-  char *c, *segment, basefont[64];
+  char *c, *segment, basename[64], *currentname;
   int i, N, code;
   int dX, dY, Xoff, Yoff, X, Y, Nseg, NSEG, YoffBase;
-  double cs, sn, fscale;
-  int basesize;
-    
+  double cs, sn, fscale, currentscale;
+  int basesize, currentsize;
+  RotFont *currentfont;
+  
+  currentname = GetRotFont (&currentsize);
+  currentfont = GetRotFontData (&currentscale);
+  strcpy (basename, currentname);
+  basesize = currentsize;
+
   /* strip off leading whitespace */
   for (c = string; (*c == ' ') || (*c == '\t'); c++);
@@ -24,5 +30,5 @@
   if (!strcmp (currentname, "symbol")) fscale = 1.2;
   dX = fscale*RotStrlen (c);
-  dY = activefont[65].ascent;
+  dY = currentfont[65].ascent;
   
   /* apply appropriate offset */
@@ -44,8 +50,5 @@
   Y = y - Xoff*sn + Yoff*cs;
 
-  basesize = currentsize;
-  strcpy (basefont, currentname);
-
-  PSSetFont (f, currentsize);
+  PSSetFont (f, currentname, currentsize);
   fprintf (f, "gsave\n");
   fprintf (f, " %d %d moveto %f rotate\n", X, Y, -angle);
@@ -61,5 +64,5 @@
   for (i = 0; i < strlen (c); i++) {
     N = (int)(c[i]);
-    if ((N < 0) || (N >= NROT)) continue;
+    if ((N < 0) || (N >= NROTCHARS)) continue;
 
     /* check for special characters */
@@ -69,8 +72,9 @@
 	PSDumpRotSegment (f, segment, &Nseg);
 	SetRotFont (currentname, (int)(0.8*currentsize));
-	Yoff = 0.75*activescale*dY;
+	currentfont = GetRotFontData (&currentscale);
+	Yoff = 0.75*currentscale*dY;
 	fprintf (f, "0 %d rmoveto\n", Yoff);
 	YoffBase += Yoff;
-	PSSetFont (f, currentsize);
+	PSSetFont (f, currentname, currentsize);
 	continue;
       }
@@ -79,8 +83,9 @@
 	PSDumpRotSegment (f, segment, &Nseg);
 	SetRotFont (currentname, (int)(0.8*currentsize));
-	Yoff = -0.5*activescale*dY;
+	currentfont = GetRotFontData (&currentscale);
+	Yoff = -0.5*currentscale*dY;
 	fprintf (f, "0 %d rmoveto\n", Yoff);
 	YoffBase += Yoff;
-	PSSetFont (f, currentsize);
+	PSSetFont (f, currentname, currentsize);
 	continue;
       }
@@ -89,7 +94,8 @@
 	PSDumpRotSegment (f, segment, &Nseg);
 	SetRotFont (currentname, basesize);
+	currentfont = GetRotFontData (&currentscale);
 	fprintf (f, "0 %d rmoveto\n", -YoffBase);
 	YoffBase = 0;
-	PSSetFont (f, currentsize);
+	PSSetFont (f, currentname, currentsize);
 	continue;
       }
@@ -118,17 +124,21 @@
 	if (c[i+1] == 'h') {
 	  SetRotFont ("helvetica", currentsize);
-	  PSSetFont (f, currentsize);
+	  currentfont = GetRotFontData (&currentscale);
+	  PSSetFont (f, currentname, currentsize);
 	}
 	if (c[i+1] == 't') {
 	  SetRotFont ("times", currentsize);
-	  PSSetFont (f, currentsize);
+	  currentfont = GetRotFontData (&currentscale);
+	  PSSetFont (f, currentname, currentsize);
 	}
 	if (c[i+1] == 'c') {
 	  SetRotFont ("courier", currentsize);
-	  PSSetFont (f, currentsize);
+	  currentfont = GetRotFontData (&currentscale);
+	  PSSetFont (f, currentname, currentsize);
 	}
 	if (c[i+1] == 's') {
 	  SetRotFont ("symbol", currentsize);
-	  PSSetFont (f, currentsize);
+	  currentfont = GetRotFontData (&currentscale);
+	  PSSetFont (f, currentname, currentsize);
 	}
 	i++;
@@ -144,5 +154,5 @@
   fprintf (f, "stroke grestore\n");
   free (segment);
-  SetRotFont (basefont, basesize);
+  SetRotFont (basename, basesize);
 }
 
@@ -154,12 +164,12 @@
 }
 
-void PSSetFont (FILE *f, int size) {
-  if (!strcmp (currentname, "times")) 
+void PSSetFont (FILE *f, char *name, int size) {
+  if (!strcmp (name, "times")) 
     fprintf (f, "/Times-Roman findfont %d scalefont setfont\n", size);
-  if (!strcmp (currentname, "helvetica")) 
+  if (!strcmp (name, "helvetica")) 
     fprintf (f, "/Helvetica findfont %d scalefont setfont\n", size);
-  if (!strcmp (currentname, "courier")) 
+  if (!strcmp (name, "courier")) 
     fprintf (f, "/Courier findfont %d scalefont setfont\n", size);
-  if (!strcmp (currentname, "symbol")) 
+  if (!strcmp (name, "symbol")) 
     fprintf (f, "/Symbol findfont %d scalefont setfont\n", size);
 }
