From 5a291467a78b59bc9240f2d4ca2f14590e2e936c Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 21 Sep 2020 14:48:43 +0900 Subject: [PATCH] Add Regular style when no meta data available to guess a style This makes sure that fullname can be constructed at least even if a style is missing and "Regular" is omitted for fullname so this change won't affect in that case. Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/259 --- src/fcfreetype.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/fcfreetype.c b/src/fcfreetype.c index 0001f38..3bdf92b 100644 --- a/src/fcfreetype.c +++ b/src/fcfreetype.c @@ -1625,13 +1625,26 @@ FcFreeTypeQueryFaceInternal (const FT_Face face, ++nfamily; } - if (!variable && !nstyle && face->style_name && - FcStrCmpIgnoreBlanksAndCase ((FcChar8 *) face->style_name, (FcChar8 *) "") != 0) + if (!variable && !nstyle) { - if (FcDebug () & FC_DBG_SCANV) - printf ("using FreeType style \"%s\"\n", face->style_name); + const FcChar8 *style_regular = (const FcChar8 *) "Regular"; + const FcChar8 *ss; - if (!FcPatternObjectAddString (pat, FC_STYLE_OBJECT, (FcChar8 *) face->style_name)) + if (face->style_name && + FcStrCmpIgnoreBlanksAndCase ((FcChar8 *) face->style_name, (FcChar8 *) "") != 0) + { + if (FcDebug () & FC_DBG_SCANV) + printf ("using FreeType style \"%s\"\n", face->style_name); + + ss = (const FcChar8 *) face->style_name; + } + else + { + if (FcDebug () & FC_DBG_SCANV) + printf ("applying default style Regular\n"); + ss = style_regular; + } + if (!FcPatternObjectAddString (pat, FC_STYLE_OBJECT, ss)) goto bail1; if (!FcPatternObjectAddString (pat, FC_STYLELANG_OBJECT, (FcChar8 *) "en")) goto bail1;