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@xxxxxxxxx> 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', _______________________________________________ Fontconfig mailing list Fontconfig@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/fontconfig