Construct fullname from family and style

OpenType spec says that the Regular descriptor would generally be
omitted from fullname. but some fonts doesn't follow on it.

So decided to construct a fullname from family and style instead of
relying on the meta data in a font.

Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/208
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index 7147569..672c33a 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -1133,12 +1133,10 @@
 
 static const FT_UShort nameid_order[] = {
     TT_NAME_ID_WWS_FAMILY,
-    TT_NAME_ID_PREFERRED_FAMILY,
+    TT_NAME_ID_TYPOGRAPHIC_FAMILY,
     TT_NAME_ID_FONT_FAMILY,
-    TT_NAME_ID_MAC_FULL_NAME,
-    TT_NAME_ID_FULL_NAME,
     TT_NAME_ID_WWS_SUBFAMILY,
-    TT_NAME_ID_PREFERRED_SUBFAMILY,
+    TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY,
     TT_NAME_ID_FONT_SUBFAMILY,
     TT_NAME_ID_TRADEMARK,
     TT_NAME_ID_MANUFACTURER,
@@ -1272,8 +1270,6 @@
     int		    nfamily_lang = 0;
     int		    nstyle = 0;
     int		    nstyle_lang = 0;
-    int		    nfullname = 0;
-    int		    nfullname_lang = 0;
     unsigned int    p, n;
 
     FcChar8	    *style = 0;
@@ -1495,8 +1491,7 @@
 		 * and treat the instance's nameid as FONT_SUBFAMILY.
 		 * Postscript name is automatically handled by FreeType. */
 		if (nameid == TT_NAME_ID_WWS_SUBFAMILY ||
-		    nameid == TT_NAME_ID_PREFERRED_SUBFAMILY ||
-		    nameid == TT_NAME_ID_FULL_NAME)
+		    nameid == TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY)
 		    continue;
 
 		if (nameid == TT_NAME_ID_FONT_SUBFAMILY)
@@ -1512,7 +1507,7 @@
 	    {
 		switch (nameid) {
 		case TT_NAME_ID_WWS_FAMILY:
-		case TT_NAME_ID_PREFERRED_FAMILY:
+		case TT_NAME_ID_TYPOGRAPHIC_FAMILY:
 		case TT_NAME_ID_FONT_FAMILY:
 #if 0	
 		case TT_NAME_ID_UNIQUE_ID:
@@ -1527,22 +1522,8 @@
 		    np = &nfamily;
 		    nlangp = &nfamily_lang;
 		    break;
-		case TT_NAME_ID_MAC_FULL_NAME:
-		case TT_NAME_ID_FULL_NAME:
-		    if (variable)
-			break;
-		    if (FcDebug () & FC_DBG_SCANV)
-			printf ("found full   (n %2d p %d e %d l 0x%04x)",
-				sname.name_id, sname.platform_id,
-				sname.encoding_id, sname.language_id);
-
-		    obj = FC_FULLNAME_OBJECT;
-		    objlang = FC_FULLNAMELANG_OBJECT;
-		    np = &nfullname;
-		    nlangp = &nfullname_lang;
-		    break;
 		case TT_NAME_ID_WWS_SUBFAMILY:
-		case TT_NAME_ID_PREFERRED_SUBFAMILY:
+		case TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY:
 		case TT_NAME_ID_FONT_SUBFAMILY:
 		    if (variable)
 			break;
@@ -1686,7 +1667,7 @@
     }
 
     /* Add the fullname into the cache */
-    if (!variable && !nfullname)
+    if (!variable)
     {
 	FcChar8 *family, *style, *lang;
 	int n = 0;
@@ -1728,8 +1709,11 @@
 	memcpy (style, &style[i], len - i);
 	FcStrBufInit (&sbuf, NULL, 0);
 	FcStrBufString (&sbuf, family);
-	FcStrBufChar (&sbuf, ' ');
-	FcStrBufString (&sbuf, style);
+	if (FcStrCmpIgnoreBlanksAndCase(style, (const FcChar8 *) "Regular") != 0)
+	{
+	    FcStrBufChar (&sbuf, ' ');
+	    FcStrBufString (&sbuf, style);
+	}
 	if (!FcPatternObjectAddString (pat, FC_FULLNAME_OBJECT, FcStrBufDoneStatic (&sbuf)))
 	{
 	    FcStrBufDestroy (&sbuf);
@@ -1738,7 +1722,6 @@
 	FcStrBufDestroy (&sbuf);
 	if (!FcPatternObjectAddString (pat, FC_FULLNAMELANG_OBJECT, (const FcChar8 *) "en"))
 	    goto bail1;
-	++nfullname;
     }
     /* Add the PostScript name into the cache */
     if (!variable)