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
This commit is contained in:
parent
fe2fa4d1f4
commit
d62d984e2b
|
@ -151,7 +151,6 @@ libfontconfig_la_SOURCES = \
|
||||||
fcname.c \
|
fcname.c \
|
||||||
fcobjs.c \
|
fcobjs.c \
|
||||||
fcobjs.h \
|
fcobjs.h \
|
||||||
fcopentype.c \
|
|
||||||
fcpat.c \
|
fcpat.c \
|
||||||
fcrange.c \
|
fcrange.c \
|
||||||
fcserialize.c \
|
fcserialize.c \
|
||||||
|
|
|
@ -117,9 +117,6 @@ FcFileScanFontConfig (FcFontSet *set,
|
||||||
if (config && !FcConfigSubstitute (config, font, FcMatchScan))
|
if (config && !FcConfigSubstitute (config, font, FcMatchScan))
|
||||||
ret = FcFalse;
|
ret = FcFalse;
|
||||||
|
|
||||||
if (!FcPatternAddFullname (font))
|
|
||||||
ret = FcFalse;
|
|
||||||
|
|
||||||
if (FcDebug() & FC_DBG_SCANV)
|
if (FcDebug() & FC_DBG_SCANV)
|
||||||
{
|
{
|
||||||
printf ("Final font pattern:\n");
|
printf ("Final font pattern:\n");
|
||||||
|
|
|
@ -1655,6 +1655,61 @@ FcFreeTypeQueryFaceInternal (const FT_Face face,
|
||||||
++nfamily;
|
++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 */
|
/* Add the PostScript name into the cache */
|
||||||
if (!variable)
|
if (!variable)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1374,10 +1374,6 @@ FcObjectLookupOtherTypeById (FcObject id);
|
||||||
FcPrivate const FcObjectType *
|
FcPrivate const FcObjectType *
|
||||||
FcObjectLookupOtherTypeByName (const char *str);
|
FcObjectLookupOtherTypeByName (const char *str);
|
||||||
|
|
||||||
/* fcopentype.c */
|
|
||||||
FcPrivate FcBool
|
|
||||||
FcPatternAddFullname (FcPattern *pat);
|
|
||||||
|
|
||||||
/* fchash.c */
|
/* fchash.c */
|
||||||
FcPrivate FcBool
|
FcPrivate FcBool
|
||||||
FcHashStrCopy (const void *src,
|
FcHashStrCopy (const void *src,
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -19,7 +19,6 @@ fc_sources = [
|
||||||
'fcmatrix.c',
|
'fcmatrix.c',
|
||||||
'fcname.c',
|
'fcname.c',
|
||||||
'fcobjs.c',
|
'fcobjs.c',
|
||||||
'fcopentype.c',
|
|
||||||
'fcpat.c',
|
'fcpat.c',
|
||||||
'fcrange.c',
|
'fcrange.c',
|
||||||
'fcserialize.c',
|
'fcserialize.c',
|
||||||
|
|
Loading…
Reference in New Issue