diff -Naur MPlayer-0.90rc3/cfg-common.h MPlayer-0.90rc3-new/cfg-common.h --- MPlayer-0.90rc3/cfg-common.h 2003-01-19 01:21:39.000000000 +0100 +++ MPlayer-0.90rc3-new/cfg-common.h 2003-02-09 13:14:52.000000000 +0100 @@ -191,6 +191,7 @@ {"subpos", &sub_pos, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL}, {"subalign", &sub_alignment, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL}, {"subwidth", &sub_width_p, CONF_TYPE_INT, CONF_RANGE, 10, 100, NULL}, + {"subjustify", &sub_justify, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL}, #ifdef HAVE_FREETYPE {"subfont-encoding", &subtitle_font_encoding, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"subfont-text-scale", &text_font_scale_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0, 100, NULL}, diff -Naur MPlayer-0.90rc3/libvo/sub.c MPlayer-0.90rc3-new/libvo/sub.c --- MPlayer-0.90rc3/libvo/sub.c 2003-01-19 21:13:49.000000000 +0100 +++ MPlayer-0.90rc3-new/libvo/sub.c 2003-02-09 13:14:26.000000000 +0100 @@ -42,6 +42,7 @@ int sub_visibility=1; int sub_bg_color=0; /* subtitles background color */ int sub_bg_alpha=0; +int sub_justify=1; /* 0=left, 1=center, 2=right */ // return the real height of a char: static inline int get_height(int c,int h){ @@ -406,9 +407,21 @@ break; } obj->params.subtitle.utbl[k++]=0; - obj->params.subtitle.xtbl[obj->params.subtitle.lines++]=(dxs-xsize)/2; - if(xmin>(dxs-xsize)/2) xmin=(dxs-xsize)/2; - if(xmax<(dxs+xsize)/2) xmax=(dxs+xsize)/2; + + if (sub_justify==1) { + obj->params.subtitle.xtbl[obj->params.subtitle.lines++]=(dxs-xsize)/2; + if(xmin>(dxs-xsize)/2) xmin=(dxs-xsize)/2; + if(xmax<(dxs+xsize)/2) xmax=(dxs+xsize)/2; + } else if (sub_justify==0) { + obj->params.subtitle.xtbl[obj->params.subtitle.lines++]=dxs*(100-sub_width_p)/200; + xmin=dxs*(100-sub_width_p)/200; + if (xmaxparams.subtitle.xtbl[obj->params.subtitle.lines++]=dxs-dxs*(100-sub_width_p)/200-xsize; + xmax=dxs-dxs*(100-sub_width_p)/200; + if (xmin>xmax-xsize) xmin=xmax-xsize; + } + if (obj->params.subtitle.lines==MAX_UCSLINES||k>MAX_UCS){ l=0; len=j; // end parsing } else if(l || j