+
+static int SetFontSize( filter_t *p_filter, int i_size )
+{
+ filter_sys_t *p_sys = p_filter->p_sys;
+
+ if( i_size && i_size == p_sys->i_font_size ) return VLC_SUCCESS;
+
+ if( !i_size )
+ {
+ vlc_value_t val;
+
+ if( !p_sys->i_default_font_size &&
+ p_sys->i_display_height == (int)p_filter->fmt_out.video.i_height )
+ return VLC_SUCCESS;
+
+ if( p_sys->i_default_font_size )
+ {
+ i_size = p_sys->i_default_font_size;
+ }
+ else
+ {
+ var_Get( p_filter, "freetype-rel-fontsize", &val );
+ i_size = (int)p_filter->fmt_out.video.i_height / val.i_int;
+ p_filter->p_sys->i_display_height =
+ p_filter->fmt_out.video.i_height;
+ }
+ if( i_size <= 0 )
+ {
+ msg_Warn( p_filter, "Invalid fontsize, using 12" );
+ i_size = 12;
+ }
+
+ msg_Dbg( p_filter, "Using fontsize: %i", i_size );
+ }
+
+ p_sys->i_font_size = i_size;
+
+ if( FT_Set_Pixel_Sizes( p_sys->p_face, 0, i_size ) )
+ {
+ msg_Err( p_filter, "couldn't set font size to %d", i_size );
+ return VLC_EGENERIC;
+ }
+
+ return VLC_SUCCESS;
+}