Alexandre Julliard : gdi32: Move the font list reordering out of freetype.c.
Alexandre Julliard
julliard at winehq.org
Tue Nov 3 15:55:54 CST 2020
Module: wine
Branch: master
Commit: fc44dcdd03b0ec88f38b988849f4830b92b93879
URL: https://source.winehq.org/git/wine.git/?a=commit;h=fc44dcdd03b0ec88f38b988849f4830b92b93879
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Nov 3 11:25:47 2020 +0100
gdi32: Move the font list reordering out of freetype.c.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/gdi32/font.c | 59 +++++++++++++++++++++++++++++++++++++
dlls/gdi32/freetype.c | 75 ------------------------------------------------
dlls/gdi32/gdi_private.h | 3 ++
3 files changed, 62 insertions(+), 75 deletions(-)
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index cf27f6063ee..26f183e4864 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -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();
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index ea76e90a7f8..50df968226b 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -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();
diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
index 2d1d74e902b..4350be34851 100644
--- a/dlls/gdi32/gdi_private.h
+++ b/dlls/gdi32/gdi_private.h
@@ -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 */
More information about the wine-cvs
mailing list