diff -Naur MPlayer-0.90.orig/cfg-common.h MPlayer-0.90/cfg-common.h
--- MPlayer-0.90.orig/cfg-common.h	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/cfg-common.h	2003-06-12 14:23:14.000000000 +0200
@@ -192,6 +192,7 @@
 #endif
 #ifdef USE_OSD
 	{"font", &font_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
+	{"subfont", &sub_font_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
 	{"ffactor", &font_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 10.0, NULL},
  	{"subpos", &sub_pos, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
 	{"subalign", &sub_alignment, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL},
diff -Naur MPlayer-0.90.orig/libvo/font_load_ft.c MPlayer-0.90/libvo/font_load_ft.c
--- MPlayer-0.90.orig/libvo/font_load_ft.c	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/libvo/font_load_ft.c	2003-06-12 16:36:50.000000000 +0200
@@ -928,7 +928,7 @@
 {
     FT_Vector kern;
     
-    if (!vo_font->dynamic) return 0;
+    if (!desc->dynamic) return 0;
     if (prevc < 0 || c < 0) return 0;
     if (desc->font[prevc] != desc->font[c]) return 0;
     if (desc->font[prevc] == -1 || desc->font[c] == -1) return 0;
diff -Naur MPlayer-0.90.orig/libvo/font_load.h MPlayer-0.90/libvo/font_load.h
--- MPlayer-0.90.orig/libvo/font_load.h	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/libvo/font_load.h	2003-06-12 14:29:15.000000000 +0200
@@ -61,6 +61,7 @@
 } font_desc_t;
 
 extern font_desc_t* vo_font;
+extern font_desc_t* sub_font;
 
 #ifdef HAVE_FREETYPE
 
diff -Naur MPlayer-0.90.orig/libvo/sub.c MPlayer-0.90/libvo/sub.c
--- MPlayer-0.90.orig/libvo/sub.c	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/libvo/sub.c	2003-06-12 16:41:54.000000000 +0200
@@ -32,6 +32,7 @@
 
 //static int vo_font_loaded=-1;
 font_desc_t* vo_font=NULL;
+font_desc_t* sub_font=NULL;
 
 unsigned char* vo_osd_text=NULL;
 int sub_unicode=0;
@@ -317,7 +318,7 @@
    
    obj->flags|=OSDFLAG_CHANGED|OSDFLAG_VISIBLE;
 
-   if(!vo_sub || !vo_font || !sub_visibility){
+   if(!vo_sub || !sub_font || !sub_visibility){
        obj->flags&=~OSDFLAG_VISIBLE;
        return;
    }
@@ -327,8 +328,8 @@
 
       // too long lines divide into a smaller ones
       i=k=lasth=0;
-      h=vo_font->height;
-      xsize=-vo_font->charspace;
+      h=sub_font->height;
+      xsize=-sub_font->charspace;
       lastStripPosition=-1;
       l=vo_sub->lines;
 
@@ -338,7 +339,7 @@
 	  len=strlen(t)-1;
 	  
 //	  printf("sub(%d) '%s'\n",len,t);
-//	  if(len<0) memy -=h; // according to max of vo_font->pic_a[font]->h 
+//	  if(len<0) memy -=h; // according to max of sub_font->pic_a[font]->h 
 //	  else
 
 	  prevc = -1;
@@ -360,12 +361,12 @@
 		 mp_msg(MSGT_OSD,MSGL_WARN,"\nMAX_UCS exceeded!\n");
 	      }
 	      if (!c) c++; // avoid UCS 0
-	      render_one_glyph(vo_font, c);
+	      render_one_glyph(sub_font, c);
 	      if (c==' '){
 		 lastk=k;
 		 lastStripPosition=j;
 		 lastxsize=xsize;
- 	      } else if ((!suboverlap_enabled) && ((font = vo_font->font[c]) >= 0)) {
+ 	      } else if ((!suboverlap_enabled) && ((font = sub_font->font[c]) >= 0)) {
  		/*
  		   With overlapping subtitles, we need to comment this out,
  		   beacuse that part of the code creates subtitles with the
@@ -379,12 +380,12 @@
  		   which affects both blank and non-blank lines.
  		   *sfalco*
  		 */
-		  if (vo_font->pic_a[font]->h > h){
-		     h=vo_font->pic_a[font]->h;
+		  if (sub_font->pic_a[font]->h > h){
+		     h=sub_font->pic_a[font]->h;
 		  }
 	      }
 	      obj->params.subtitle.utbl[k++]=c;
-	      xsize+=vo_font->width[c]+vo_font->charspace+kerning(vo_font,prevc,c);
+	      xsize+=sub_font->width[c]+sub_font->charspace+kerning(sub_font,prevc,c);
 	      if (dxs*sub_width_p/100<xsize){
 		  prevc = -1;
 		 if (lastStripPosition>0){
@@ -392,7 +393,7 @@
 		    xsize=lastxsize;
 		    k=lastk;
 		 } else {
-		    xsize -=vo_font->width[c]+vo_font->charspace+kerning(vo_font,prevc,c);; // go back
+		    xsize -=sub_font->width[c]+sub_font->charspace+kerning(sub_font,prevc,c);; // go back
 		    k--; // cut line here
 		    while (t[j] && t[j]!=' ') j++; // jump to the nearest space
 		 }
@@ -401,7 +402,7 @@
 		  continue;
 	      }
 	      if (h>obj->y){ // out of the screen so end parsing
-		 obj->y -= lasth - vo_font->height; // correct the y position
+		 obj->y -= lasth - sub_font->height; // correct the y position
 		 l=0;
 		 break;
 	      }
@@ -413,12 +414,12 @@
 		 l=0; len=j; // end parsing
 	      } else if(l || j<len){ // not the last line or not the last char
 		 lastStripPosition=-1;
-		 xsize=-vo_font->charspace;
+		 xsize=-sub_font->charspace;
 		 lasth=h;
-		 h=vo_font->height;
+		 h=sub_font->height;
 	      }
-//	      printf("h: %d -> %d  \n",vo_font->height,h);
-	      obj->y -=h; // according to max of vo_font->pic_a[font]->h 
+//	      printf("h: %d -> %d  \n",sub_font->height,h);
+	      obj->y -=h; // according to max of sub_font->pic_a[font]->h 
 	      prevc = -1;
 	  }
       }
@@ -430,8 +431,8 @@
        *sfalco*
      */
     if(suboverlap_enabled &&
-       vo_font->font[40]>=0 && vo_font->pic_a[vo_font->font[40]])
-	obj->y -= vo_font->pic_a[vo_font->font[40]]->h - vo_font->height;
+       sub_font->font[40]>=0 && sub_font->pic_a[sub_font->font[40]])
+	obj->y -= sub_font->pic_a[sub_font->font[40]]->h - sub_font->height;
 
     h = dys - obj->y;
     if (sub_alignment == 2)
@@ -452,7 +453,7 @@
     obj->bbox.x1=xmin;
     obj->bbox.x2=xmax;
     obj->bbox.y1=obj->y;
-//    obj->bbox.y2=obj->y+obj->params.subtitle.lines*vo_font->height;
+//    obj->bbox.y2=obj->y+obj->params.subtitle.lines*sub_font->height;
     obj->flags|=OSDFLAG_BBOX;
 
     alloc_buf(obj);
@@ -464,19 +465,19 @@
  	 x=obj->params.subtitle.xtbl[i++]; 
 	 prevc = -1;
 	 while ((c=obj->params.subtitle.utbl[j++])){
-	       x += kerning(vo_font,prevc,c);
-	       if ((font=vo_font->font[c])>=0)
+	       x += kerning(sub_font,prevc,c);
+	       if ((font=sub_font->font[c])>=0)
 		  draw_alpha_buf(obj,x,y,
-			     vo_font->width[c],
-			     vo_font->pic_a[font]->h+y<obj->dys ? vo_font->pic_a[font]->h : obj->dys-y,
-			     vo_font->pic_b[font]->bmp+vo_font->start[c],
-			     vo_font->pic_a[font]->bmp+vo_font->start[c],
-			     vo_font->pic_a[font]->w);
-	       x+=vo_font->width[c]+vo_font->charspace;
+			     sub_font->width[c],
+			     sub_font->pic_a[font]->h+y<obj->dys ? sub_font->pic_a[font]->h : obj->dys-y,
+			     sub_font->pic_b[font]->bmp+sub_font->start[c],
+			     sub_font->pic_a[font]->bmp+sub_font->start[c],
+			     sub_font->pic_a[font]->w);
+	       x+=sub_font->width[c]+sub_font->charspace;
                prevc = c;
 	 }
          if (!--l) break;
-         y+=vo_font->height;
+         y+=sub_font->height;
     }
     
 }
diff -Naur MPlayer-0.90.orig/mencoder.c MPlayer-0.90/mencoder.c
--- MPlayer-0.90.orig/mencoder.c	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/mencoder.c	2003-06-12 15:48:58.000000000 +0200
@@ -160,6 +160,7 @@
 
 // sub:
 char *font_name=NULL;
+char *sub_font_name=NULL;
 float font_factor=0.75;
 char *sub_name=NULL;
 float sub_delay=0;
diff -Naur MPlayer-0.90.orig/mplayer.c MPlayer-0.90/mplayer.c
--- MPlayer-0.90.orig/mplayer.c	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/mplayer.c	2003-06-12 14:41:23.000000000 +0200
@@ -263,6 +263,7 @@
 
 // sub:
 char *font_name=NULL;
+char *sub_font_name=NULL;
 float font_factor=0.75;
 char *sub_name=NULL;
 float sub_delay=0;
@@ -971,6 +972,10 @@
        if(!vo_font)
        vo_font=read_font_desc(DATADIR"/font/font.desc",font_factor,verbose>1);
   }
+  if (sub_font_name)
+       sub_font = read_font_desc(sub_font_name, font_factor, verbose>1);
+  else
+       sub_font = vo_font;
 #ifdef HAVE_FREETYPE
   if (!vo_font)
 	init_freetype();
diff -Naur MPlayer-0.90.orig/mplayer.h MPlayer-0.90/mplayer.h
--- MPlayer-0.90.orig/mplayer.h	2003-04-29 21:57:38.000000000 +0200
+++ MPlayer-0.90/mplayer.h	2003-06-12 14:41:50.000000000 +0200
@@ -24,6 +24,7 @@
 extern int osd_visible;
 
 extern char * font_name;
+extern char * sub_font_name;
 extern float  font_factor;
 extern float movie_aspect;
 extern float force_fps;
