#ifdef __APPLE__
# define DEFAULT_FONT_FILE "/Library/Fonts/Arial Unicode.ttf"
# define DEFAULT_FAMILY "Arial Unicode MS"
+# define DEFAULT_MONOSPACE_FONT_FILE "/System/Library/Fonts/Monaco.dfont"
+# define DEFAULT_MONOSPACE_FAMILY "Monaco"
#elif defined( WIN32 )
# define DEFAULT_FONT_FILE "arial.ttf" /* Default path font found at run-time */
# define DEFAULT_FAMILY "Arial"
+# define DEFAULT_MONOSPACE_FONT_FILE "cour.ttf"
+# define DEFAULT_MONOSPACE_FAMILY "Courier New"
#elif defined( __OS2__ )
# define DEFAULT_FONT_FILE "/psfonts/tnrwt_k.ttf"
# define DEFAULT_FAMILY "Times New Roman WT K"
+# define DEFAULT_MONOSPACE_FONT_FILE "/psfonts/mtsansdk.ttf"
+# define DEFAULT_MONOSPACE_FAMILY "Monotype Sans Duospace WT K"
#elif defined( HAVE_MAEMO )
# define DEFAULT_FONT_FILE "/usr/share/fonts/nokia/nosnb.ttf"
# define DEFAULT_FAMILY "Nokia Sans Bold"
+# error Missing monospaced fonts
#elif defined( __ANDROID__ )
# define DEFAULT_FONT_FILE "/system/fonts/DroidSans-Bold.ttf"
# define DEFAULT_FAMILY "Droid Sans Bold"
+# define DEFAULT_MONOSPACE_FONT_FILE "/system/fonts/DroidSansMono.ttf"
+# define DEFAULT_MONOSPACE_FAMILY "Droid Sans Mono"
#else
# define DEFAULT_FONT_FILE "/usr/share/fonts/truetype/freefont/FreeSerifBold.ttf"
# define DEFAULT_FAMILY "Serif Bold"
+# define DEFAULT_MONOSPACE_FONT_FILE "/usr/share/fonts/truetype/freefont/FreeMono.ttf"
+# define DEFAULT_MONOSPACE_FAMILY "Monospace"
#endif
/* Freetype */
static void Destroy( vlc_object_t * );
#define FONT_TEXT N_("Font")
+#define MONOSPACE_FONT_TEXT N_("Monospace Font")
#define FAMILY_LONGTEXT N_("Font family for the font you want to use")
#define FONT_LONGTEXT N_("Font file for the font you want to use")
#ifdef HAVE_STYLES
add_font( "freetype-font", DEFAULT_FAMILY, FONT_TEXT, FAMILY_LONGTEXT, false )
+ add_font( "freetype-monofont", DEFAULT_MONOSPACE_FAMILY, MONOSPACE_FONT_TEXT, FAMILY_LONGTEXT, false )
#else
add_loadfile( "freetype-font", DEFAULT_FONT_FILE, FONT_TEXT, FONT_LONGTEXT, false )
+ add_loadfile( "freetype-monofont", DEFAULT_MONOSPACE_FONT_FILE, MONOSPACE_FONT_TEXT, FONT_LONGTEXT, false )
#endif
add_integer( "freetype-fontsize", 0, FONTSIZE_TEXT,
int i_default_font_size;
int i_display_height;
char* psz_fontfamily;
+ char* psz_monofontfamily;
xml_reader_t *p_xml;
#ifdef WIN32
char* psz_win_fonts_path;
return rv;
}
+static int HandleTT(font_stack_t **p_fonts, const char *p_fontfamily )
+{
+ char *psz_unused_fontname = NULL;
+ uint32_t i_font_color = 0xffffff;
+ uint32_t i_karaoke_bg_color = 0x00ffffff;
+ int i_font_size = 24;
+
+ /* Default all attributes to the top font in the stack -- in case not
+ * all attributes are specified in the sub-font
+ */
+ PeekFont( p_fonts,
+ &psz_unused_fontname,
+ &i_font_size,
+ &i_font_color,
+ &i_karaoke_bg_color );
+
+ /* Keep all the parent's font attributes, but change to a monospace font */
+ return PushFont( p_fonts,
+ p_fontfamily,
+ i_font_size,
+ i_font_color,
+ i_karaoke_bg_color );
+}
+
/* Turn any multiple-whitespaces into single spaces */
static void HandleWhiteSpace( char *psz_node )
{
case XML_READER_ENDELEM:
if( !strcasecmp( "font", node ) )
PopFont( &p_fonts );
+ else if( !strcasecmp( "tt", node ) )
+ PopFont( &p_fonts );
else if( !strcasecmp( "b", node ) )
i_style_flags &= ~STYLE_BOLD;
else if( !strcasecmp( "i", node ) )
case XML_READER_STARTELEM:
if( !strcasecmp( "font", node ) )
HandleFontAttributes( p_xml_reader, &p_fonts );
+ else if( !strcasecmp( "tt", node ) )
+ HandleTT( &p_fonts, p_sys->psz_monofontfamily );
else if( !strcasecmp( "b", node ) )
i_style_flags |= STYLE_BOLD;
else if( !strcasecmp( "i", node ) )
filter_sys_t *p_sys;
char *psz_fontfile = NULL;
char *psz_fontfamily = NULL;
- int i_error = 0, fontindex = 0;
+ char *psz_monofontfile = NULL;
+ char *psz_monofontfamily = NULL;
+ int i_error = 0, fontindex = 0, monofontindex = 0;
/* Allocate structure */
p_filter->p_sys = p_sys = malloc( sizeof(*p_sys) );
VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
psz_fontfamily = var_InheritString( p_filter, "freetype-font" );
+ psz_monofontfamily = var_InheritString( p_filter, "freetype-monofont" );
p_sys->i_default_font_size = var_InheritInteger( p_filter, "freetype-fontsize" );
p_sys->i_font_opacity = var_InheritInteger( p_filter,"freetype-opacity" );
p_sys->i_font_opacity = VLC_CLIP( p_sys->i_font_opacity, 0, 255 );
/* */
psz_fontfile = FontConfig_Select( NULL, psz_fontfamily, false, false,
p_sys->i_default_font_size, &fontindex );
+ psz_monofontfile = FontConfig_Select( NULL, psz_monofontfamily, false,
+ false, p_sys->i_default_font_size,
+ &monofontindex );
#elif defined(__APPLE__)
psz_fontfile = MacLegacy_Select( p_filter, psz_fontfamily, false, false, 0, &fontindex );
#elif defined(WIN32)
/* If nothing is found, use the default family */
if( !psz_fontfile )
psz_fontfile = strdup( psz_fontfamily );
+ if( !psz_monofontfile )
+ psz_monofontfile = strdup( psz_monofontfamily );
#else /* !HAVE_STYLES */
/* Use the default file */
psz_fontfile = psz_fontfamily;
+ psz_monofontfile = psz_monofontfamily;
#endif
+ p_sys->psz_monofontfamily = psz_monofontfamily;
/* */
i_error = FT_Init_FreeType( &p_sys->p_library );
#ifdef HAVE_STYLES
free( psz_fontfile );
+ free( psz_monofontfile );
#endif
return VLC_SUCCESS;
if( p_sys->p_library ) FT_Done_FreeType( p_sys->p_library );
#ifdef HAVE_STYLES
free( psz_fontfile );
+ free( psz_monofontfile );
#endif
free( psz_fontfamily );
+ free( psz_monofontfamily );
free( p_sys );
return VLC_EGENERIC;
}