gdi32: Move the font list reordering out of freetype.c.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
de63a647d5
commit
fc44dcdd03
|
@ -225,6 +225,42 @@ static const WCHAR Gulim[] = {'G','u','l','i','m',0};
|
|||
static const WCHAR PMingLiU[] = {'P','M','i','n','g','L','i','U',0};
|
||||
static const WCHAR Batang[] = {'B','a','t','a','n','g',0};
|
||||
|
||||
static const WCHAR arial[] = {'A','r','i','a','l',0};
|
||||
static const WCHAR bitstream_vera_sans[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','a','n','s',0};
|
||||
static const WCHAR bitstream_vera_sans_mono[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','a','n','s',' ','M','o','n','o',0};
|
||||
static const WCHAR bitstream_vera_serif[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','e','r','i','f',0};
|
||||
static const WCHAR courier_new[] = {'C','o','u','r','i','e','r',' ','N','e','w',0};
|
||||
static const WCHAR liberation_mono[] = {'L','i','b','e','r','a','t','i','o','n',' ','M','o','n','o',0};
|
||||
static const WCHAR liberation_sans[] = {'L','i','b','e','r','a','t','i','o','n',' ','S','a','n','s',0};
|
||||
static const WCHAR liberation_serif[] = {'L','i','b','e','r','a','t','i','o','n',' ','S','e','r','i','f',0};
|
||||
static const WCHAR times_new_roman[] = {'T','i','m','e','s',' ','N','e','w',' ','R','o','m','a','n',0};
|
||||
|
||||
static const WCHAR * const default_serif_list[] =
|
||||
{
|
||||
times_new_roman,
|
||||
liberation_serif,
|
||||
bitstream_vera_serif,
|
||||
NULL
|
||||
};
|
||||
static const WCHAR * const default_fixed_list[] =
|
||||
{
|
||||
courier_new,
|
||||
liberation_mono,
|
||||
bitstream_vera_sans_mono,
|
||||
NULL
|
||||
};
|
||||
static const WCHAR * const default_sans_list[] =
|
||||
{
|
||||
arial,
|
||||
liberation_sans,
|
||||
bitstream_vera_sans,
|
||||
NULL
|
||||
};
|
||||
|
||||
const WCHAR *default_serif = times_new_roman;
|
||||
const WCHAR *default_fixed = courier_new;
|
||||
const WCHAR *default_sans = arial;
|
||||
|
||||
static const struct nls_update_font_list
|
||||
{
|
||||
UINT ansi_cp, oem_cp;
|
||||
|
@ -691,6 +727,28 @@ static void dump_gdi_font_list(void)
|
|||
}
|
||||
}
|
||||
|
||||
static const WCHAR *set_default_family( const WCHAR * const *name_list )
|
||||
{
|
||||
struct gdi_font_family *family;
|
||||
const WCHAR * const *entry;
|
||||
|
||||
for (entry = name_list; *entry; entry++)
|
||||
{
|
||||
if (!(family = find_family_from_name( *entry ))) continue;
|
||||
list_remove( &family->entry );
|
||||
list_add_head( &font_list, &family->entry );
|
||||
return *entry;
|
||||
}
|
||||
return *name_list;
|
||||
}
|
||||
|
||||
static void reorder_font_list(void)
|
||||
{
|
||||
default_serif = set_default_family( default_serif_list );
|
||||
default_fixed = set_default_family( default_fixed_list );
|
||||
default_sans = set_default_family( default_sans_list );
|
||||
}
|
||||
|
||||
struct gdi_font_face *create_face( const WCHAR *style, const WCHAR *fullname, const WCHAR *file,
|
||||
UINT index, FONTSIGNATURE fs, DWORD ntmflags, DWORD version,
|
||||
DWORD flags, const struct bitmap_font_size *size )
|
||||
|
@ -3187,6 +3245,7 @@ void font_init(void)
|
|||
init_font_options();
|
||||
update_codepage();
|
||||
WineEngInit( &font_funcs );
|
||||
reorder_font_list();
|
||||
load_gdi_font_subst();
|
||||
load_gdi_font_replacements();
|
||||
load_system_links();
|
||||
|
|
|
@ -263,46 +263,8 @@ static const WCHAR winnt_font_reg_key[] = {'S','o','f','t','w','a','r','e','\\',
|
|||
static const WCHAR external_fonts_reg_key[] = {'S','o','f','t','w','a','r','e','\\','W','i','n','e','\\',
|
||||
'F','o','n','t','s','\\','E','x','t','e','r','n','a','l',' ','F','o','n','t','s','\0'};
|
||||
|
||||
/* Interesting and well-known (frequently-assumed!) font names */
|
||||
static const WCHAR arial[] = {'A','r','i','a','l',0};
|
||||
static const WCHAR bitstream_vera_sans[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','a','n','s',0};
|
||||
static const WCHAR bitstream_vera_sans_mono[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','a','n','s',' ','M','o','n','o',0};
|
||||
static const WCHAR bitstream_vera_serif[] = {'B','i','t','s','t','r','e','a','m',' ','V','e','r','a',' ','S','e','r','i','f',0};
|
||||
static const WCHAR courier_new[] = {'C','o','u','r','i','e','r',' ','N','e','w',0};
|
||||
static const WCHAR liberation_mono[] = {'L','i','b','e','r','a','t','i','o','n',' ','M','o','n','o',0};
|
||||
static const WCHAR liberation_sans[] = {'L','i','b','e','r','a','t','i','o','n',' ','S','a','n','s',0};
|
||||
static const WCHAR liberation_serif[] = {'L','i','b','e','r','a','t','i','o','n',' ','S','e','r','i','f',0};
|
||||
static const WCHAR times_new_roman[] = {'T','i','m','e','s',' ','N','e','w',' ','R','o','m','a','n',0};
|
||||
static const WCHAR SymbolW[] = {'S','y','m','b','o','l','\0'};
|
||||
|
||||
static const WCHAR *default_serif_list[] =
|
||||
{
|
||||
times_new_roman,
|
||||
liberation_serif,
|
||||
bitstream_vera_serif,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const WCHAR *default_fixed_list[] =
|
||||
{
|
||||
courier_new,
|
||||
liberation_mono,
|
||||
bitstream_vera_sans_mono,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const WCHAR *default_sans_list[] =
|
||||
{
|
||||
arial,
|
||||
liberation_sans,
|
||||
bitstream_vera_sans,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const WCHAR *default_serif = times_new_roman;
|
||||
static const WCHAR *default_fixed = courier_new;
|
||||
static const WCHAR *default_sans = arial;
|
||||
|
||||
/* Registry font cache key and value names */
|
||||
static const WCHAR wine_fonts_key[] = {'S','o','f','t','w','a','r','e','\\','W','i','n','e','\\',
|
||||
'F','o','n','t','s',0};
|
||||
|
@ -2205,41 +2167,6 @@ static void init_font_list(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
static BOOL move_to_front(const WCHAR *name)
|
||||
{
|
||||
Family *family, *cursor2;
|
||||
LIST_FOR_EACH_ENTRY_SAFE(family, cursor2, &font_list, Family, entry)
|
||||
{
|
||||
if (!strncmpiW( family->family_name, name, LF_FACESIZE - 1 ))
|
||||
{
|
||||
list_remove(&family->entry);
|
||||
list_add_head(&font_list, &family->entry);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static const WCHAR *set_default(const WCHAR **name_list)
|
||||
{
|
||||
const WCHAR **entry = name_list;
|
||||
|
||||
while (*entry)
|
||||
{
|
||||
if (move_to_front(*entry)) return *entry;
|
||||
entry++;
|
||||
}
|
||||
|
||||
return *name_list;
|
||||
}
|
||||
|
||||
static void reorder_font_list(void)
|
||||
{
|
||||
default_serif = set_default( default_serif_list );
|
||||
default_fixed = set_default( default_fixed_list );
|
||||
default_sans = set_default( default_sans_list );
|
||||
}
|
||||
|
||||
/*************************************************************
|
||||
* WineEngInit
|
||||
*
|
||||
|
@ -2272,8 +2199,6 @@ BOOL WineEngInit( const struct font_backend_funcs **funcs )
|
|||
else
|
||||
load_font_list_from_cache(hkey_font_cache);
|
||||
|
||||
reorder_font_list();
|
||||
|
||||
if(disposition == REG_CREATED_NEW_KEY)
|
||||
update_reg_entries();
|
||||
|
||||
|
|
|
@ -479,6 +479,9 @@ extern struct gdi_font *create_gdi_font( const struct gdi_font_face *face, const
|
|||
const LOGFONTW *lf ) DECLSPEC_HIDDEN;
|
||||
extern void *get_GSUB_vert_feature( struct gdi_font *font ) DECLSPEC_HIDDEN;
|
||||
extern void font_init(void) DECLSPEC_HIDDEN;
|
||||
extern const WCHAR *default_serif DECLSPEC_HIDDEN;
|
||||
extern const WCHAR *default_fixed DECLSPEC_HIDDEN;
|
||||
extern const WCHAR *default_sans DECLSPEC_HIDDEN;
|
||||
|
||||
/* freetype.c */
|
||||
|
||||
|
|
Loading…
Reference in New Issue