[PATCH 2/7] gdi32: Introduce ft_face_get_family/style_name helpers.
Rémi Bernon
rbernon at codeweavers.com
Fri Sep 4 13:07:15 CDT 2020
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/gdi32/freetype.c | 43 +++++++++++++++++++++++++------------------
1 file changed, 25 insertions(+), 18 deletions(-)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 38d59e3fd9b..2f04b76ef44 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -1482,6 +1482,26 @@ static WCHAR *get_face_name(FT_Face ft_face, FT_UShort name_id, LANGID language_
return NULL;
}
+static WCHAR *ft_face_get_family_name( FT_Face ft_face, LANGID langid )
+{
+ WCHAR *family_name;
+
+ if ((family_name = get_face_name( ft_face, TT_NAME_ID_FONT_FAMILY, langid )))
+ return family_name;
+
+ return towstr( CP_ACP, ft_face->family_name );
+}
+
+static WCHAR *ft_face_get_style_name( FT_Face ft_face, LANGID langid )
+{
+ WCHAR *style_name;
+
+ if ((style_name = get_face_name( ft_face, TT_NAME_ID_FONT_SUBFAMILY, langid )))
+ return style_name;
+
+ return towstr( CP_ACP, ft_face->style_name );
+}
+
static inline BOOL faces_equal( const Face *f1, const Face *f2 )
{
if (strcmpiW( f1->StyleName, f2->StyleName )) return FALSE;
@@ -1907,16 +1927,10 @@ static WCHAR *prepend_at(WCHAR *family)
static void get_family_names( FT_Face ft_face, WCHAR **name, WCHAR **english, BOOL vertical )
{
- *english = get_face_name( ft_face, TT_NAME_ID_FONT_FAMILY, MAKELANGID(LANG_ENGLISH,SUBLANG_DEFAULT) );
- if (!*english) *english = towstr( CP_ACP, ft_face->family_name );
+ *english = ft_face_get_family_name( ft_face, MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT) );
+ *name = ft_face_get_family_name( ft_face, GetSystemDefaultLCID() );
- *name = get_face_name( ft_face, TT_NAME_ID_FONT_FAMILY, GetSystemDefaultLCID() );
- if (!*name)
- {
- *name = *english;
- *english = NULL;
- }
- else if (!strcmpiW( *name, *english ))
+ if (!strcmpiW( *name, *english ))
{
HeapFree( GetProcessHeap(), 0, *english );
*english = NULL;
@@ -2088,9 +2102,7 @@ static Face *create_face( FT_Face ft_face, FT_Long face_index, const char *file,
Face *face = HeapAlloc( GetProcessHeap(), 0, sizeof(*face) );
face->refcount = 1;
- face->StyleName = get_face_name( ft_face, TT_NAME_ID_FONT_SUBFAMILY, GetSystemDefaultLangID() );
- if (!face->StyleName) face->StyleName = towstr( CP_ACP, ft_face->style_name );
-
+ face->StyleName = ft_face_get_style_name( ft_face, GetSystemDefaultLangID() );
face->FullName = get_face_name( ft_face, TT_NAME_ID_FULL_NAME, GetSystemDefaultLangID() );
if (flags & ADDFONT_VERTICAL_FONT)
face->FullName = prepend_at( face->FullName );
@@ -7955,12 +7967,7 @@ static BOOL get_outline_text_metrics(GdiFont *font)
lenfam = (strlenW(font->name) + 1) * sizeof(WCHAR);
family_nameW = strdupW(font->name);
- style_nameW = get_face_name( ft_face, TT_NAME_ID_FONT_SUBFAMILY, GetSystemDefaultLangID() );
- if (!style_nameW)
- {
- FIXME("failed to read style_nameW for font %s!\n", wine_dbgstr_w(font->name));
- style_nameW = towstr( CP_ACP, ft_face->style_name );
- }
+ style_nameW = ft_face_get_style_name( ft_face, GetSystemDefaultLangID() );
lensty = (strlenW(style_nameW) + 1) * sizeof(WCHAR);
face_nameW = get_face_name( ft_face, TT_NAME_ID_FULL_NAME, GetSystemDefaultLangID() );
--
2.28.0
More information about the wine-devel
mailing list