[Fontconfig] fontconfig: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jun 28 08:49:21 UTC 2021


 src/Makefile.am  |    1 
 src/fcdir.c      |    3 -
 src/fcfreetype.c |   55 +++++++++++++++++++++++++++++++++
 src/fcint.h      |    4 --
 src/fcopentype.c |   91 -------------------------------------------------------
 src/meson.build  |    1 
 6 files changed, 55 insertions(+), 100 deletions(-)

New commits:
commit d62d984e2bfe5b9c7767e8ad657ec93652d52bbd
Author: Akira TAGOH <akira at tagoh.org>
Date:   Mon Jun 28 17:36:11 2021 +0900

    Revert constructing fullname property from family and style properties
    
    This seems making a regression in Java. we will revisit this issue later.
    
    Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/277

diff --git a/src/Makefile.am b/src/Makefile.am
index df3cf17..390ca82 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -151,7 +151,6 @@ libfontconfig_la_SOURCES = \
 	fcname.c \
 	fcobjs.c \
 	fcobjs.h \
-	fcopentype.c \
 	fcpat.c \
 	fcrange.c \
 	fcserialize.c \
diff --git a/src/fcdir.c b/src/fcdir.c
index 06644a0..e332897 100644
--- a/src/fcdir.c
+++ b/src/fcdir.c
@@ -117,9 +117,6 @@ FcFileScanFontConfig (FcFontSet		*set,
 	if (config && !FcConfigSubstitute (config, font, FcMatchScan))
 	    ret = FcFalse;
 
-	if (!FcPatternAddFullname (font))
-	    ret = FcFalse;
-
 	if (FcDebug() & FC_DBG_SCANV)
 	{
 	    printf ("Final font pattern:\n");
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index 4b545bf..ee86eb9 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -1655,6 +1655,61 @@ FcFreeTypeQueryFaceInternal (const FT_Face  face,
 	++nfamily;
     }
 
+    /* Add the fullname into the cache */
+    if (!variable && !nfullname)
+    {
+	FcChar8 *family, *style, *lang;
+	int n = 0;
+	size_t len, i;
+	FcStrBuf sbuf;
+
+	while (FcPatternObjectGetString (pat, FC_FAMILYLANG_OBJECT, n, &lang) == FcResultMatch)
+	{
+	    if (FcStrCmp (lang, (const FcChar8 *) "en") == 0)
+		break;
+	    n++;
+	    lang = NULL;
+	}
+	if (!lang)
+	    n = 0;
+	if (FcPatternObjectGetString (pat, FC_FAMILY_OBJECT, n, &family) != FcResultMatch)
+	    goto bail1;
+	len = strlen ((const char *) family);
+	for (i = len; i > 0; i--)
+	{
+	    if (!isspace (family[i]))
+		break;
+	}
+	family[i] = 0;
+	while (FcPatternObjectGetString (pat, FC_STYLELANG_OBJECT, n, &lang) == FcResultMatch)
+	{
+	    if (FcStrCmp (lang, (const FcChar8 *) "en") == 0)
+		break;
+	    n++;
+	    lang = NULL;
+	}
+	if (!lang)
+	    n = 0;
+	if (FcPatternObjectGetString (pat, FC_STYLE_OBJECT, n, &style) != FcResultMatch)
+	    goto bail1;
+	len = strlen ((const char *) style);
+	for (i = 0; style[i] != 0 && isspace (style[i]); i++)
+	    break;
+	memcpy (style, &style[i], len - i);
+	FcStrBufInit (&sbuf, NULL, 0);
+	FcStrBufString (&sbuf, family);
+	FcStrBufChar (&sbuf, ' ');
+	FcStrBufString (&sbuf, style);
+	if (!FcPatternObjectAddString (pat, FC_FULLNAME_OBJECT, FcStrBufDoneStatic (&sbuf)))
+	{
+	    FcStrBufDestroy (&sbuf);
+	    goto bail1;
+	}
+	FcStrBufDestroy (&sbuf);
+	if (!FcPatternObjectAddString (pat, FC_FULLNAMELANG_OBJECT, (const FcChar8 *) "en"))
+	    goto bail1;
+	++nfullname;
+    }
     /* Add the PostScript name into the cache */
     if (!variable)
     {
diff --git a/src/fcint.h b/src/fcint.h
index 4150a05..612287f 100644
--- a/src/fcint.h
+++ b/src/fcint.h
@@ -1374,10 +1374,6 @@ FcObjectLookupOtherTypeById (FcObject id);
 FcPrivate const FcObjectType *
 FcObjectLookupOtherTypeByName (const char *str);
 
-/* fcopentype.c */
-FcPrivate FcBool
-FcPatternAddFullname (FcPattern *pat);
-
 /* fchash.c */
 FcPrivate FcBool
 FcHashStrCopy (const void  *src,
diff --git a/src/fcopentype.c b/src/fcopentype.c
deleted file mode 100644
index eff3742..0000000
--- a/src/fcopentype.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of the author(s) not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission.  The authors make no
- * representations about the suitability of this software for any purpose.  It
- * is provided "as is" without express or implied warranty.
- *
- * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-#include "fcint.h"
-
-FcBool
-FcPatternAddFullname (FcPattern *pat)
-{
-    FcBool b = FcFalse;
-
-    if (FcRefIsConst (&pat->ref))
-	return FcFalse;
-    if (FcPatternObjectGetBool (pat, FC_VARIABLE_OBJECT, 0, &b) != FcResultMatch || b == FcFalse)
-    {
-	FcChar8 *family, *style, *lang = NULL;
-	int n = 0;
-	size_t len, i;
-	FcStrBuf sbuf;
-
-	while (FcPatternObjectGetString (pat, FC_FAMILYLANG_OBJECT, n, &lang) == FcResultMatch)
-	{
-	    if (FcStrCmp (lang, (const FcChar8 *) "en") == 0)
-		break;
-	    n++;
-	    lang = NULL;
-	}
-	if (!lang)
-	    n = 0;
-	if (FcPatternObjectGetString (pat, FC_FAMILY_OBJECT, n, &family) != FcResultMatch)
-	    return FcFalse;
-	len = strlen ((const char *) family);
-	for (i = len; i > 0; i--)
-	{
-	    if (!isspace (family[i-1]))
-		break;
-	}
-	family[i] = 0;
-	lang = NULL;
-	while (FcPatternObjectGetString (pat, FC_STYLELANG_OBJECT, n, &lang) == FcResultMatch)
-	{
-	    if (FcStrCmp (lang, (const FcChar8 *) "en") == 0)
-		break;
-	    n++;
-	    lang = NULL;
-	}
-	if (!lang)
-	    n = 0;
-	if (FcPatternObjectGetString (pat, FC_STYLE_OBJECT, n, &style) != FcResultMatch)
-	    return FcFalse;
-	len = strlen ((const char *) style);
-	for (i = 0; style[i] != 0 && isspace (style[i]); i++);
-	memcpy (style, &style[i], len - i);
-	FcStrBufInit (&sbuf, NULL, 0);
-	FcStrBufString (&sbuf, family);
-	if (FcStrCmpIgnoreBlanksAndCase(style, (const FcChar8 *) "Regular") != 0)
-	{
-	    FcStrBufChar (&sbuf, ' ');
-	    FcStrBufString (&sbuf, style);
-	}
-	FcPatternObjectDel (pat, FC_FULLNAME_OBJECT);
-	if (!FcPatternObjectAddString (pat, FC_FULLNAME_OBJECT, FcStrBufDoneStatic (&sbuf)))
-	{
-	    FcStrBufDestroy (&sbuf);
-	    return FcFalse;
-	}
-	FcStrBufDestroy (&sbuf);
-	FcPatternObjectDel (pat, FC_FULLNAMELANG_OBJECT);
-	if (!FcPatternObjectAddString (pat, FC_FULLNAMELANG_OBJECT, (const FcChar8 *) "en"))
-	    return FcFalse;
-    }
-
-    return FcTrue;
-}
diff --git a/src/meson.build b/src/meson.build
index 73cb2de..9a6ba20 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -19,7 +19,6 @@ fc_sources = [
   'fcmatrix.c',
   'fcname.c',
   'fcobjs.c',
-  'fcopentype.c',
   'fcpat.c',
   'fcrange.c',
   'fcserialize.c',


More information about the Fontconfig mailing list