summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAkira TAGOH <akira@tagoh.org>2021-06-28 17:36:11 +0900
committerAkira TAGOH <akira@tagoh.org>2021-06-28 17:37:23 +0900
commitd62d984e2bfe5b9c7767e8ad657ec93652d52bbd (patch)
tree4120adbfc1367a1f50d4651f229eda7eb58c599a /src
parentfe2fa4d1f4a0aaf4092c8f5e3e5b40e567c8f2b7 (diff)
downloadfontconfig-d62d984e2bfe5b9c7767e8ad657ec93652d52bbd.tar.gz
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
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am1
-rw-r--r--src/fcdir.c3
-rw-r--r--src/fcfreetype.c55
-rw-r--r--src/fcint.h4
-rw-r--r--src/fcopentype.c91
-rw-r--r--src/meson.build1
6 files changed, 55 insertions, 100 deletions
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',