diff --git a/.gitignore b/.gitignore index e6e0978..f656da5 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ fontconfig-2.8.0.tar.gz /fontconfig-2.10.2.tar.bz2 /fontconfig-2.10.91.tar.bz2 /fontconfig-2.10.92.tar.bz2 +/fontconfig-2.10.93.tar.bz2 diff --git a/fontconfig-929372.patch b/fontconfig-929372.patch deleted file mode 100644 index 1173d49..0000000 --- a/fontconfig-929372.patch +++ /dev/null @@ -1,63 +0,0 @@ -diff --git a/src/fcmatch.c b/src/fcmatch.c -index 68f39ae..2d7b798 100644 ---- a/src/fcmatch.c -+++ b/src/fcmatch.c -@@ -227,9 +227,10 @@ typedef enum _FcMatcherPriorityDummy { - #undef FC_OBJECT - - #undef PRI1 --#define PRI1(n) \ -- PRI_ ## n ## _STRONG, \ -- PRI_ ## n ## _WEAK -+#define PRI1(n) \ -+ PRI_ ## n, \ -+ PRI_ ## n ## _STRONG = PRI_ ## n, \ -+ PRI_ ## n ## _WEAK = PRI_ ## n - - typedef enum _FcMatcherPriority { - PRI1(HASH), -@@ -237,9 +238,8 @@ typedef enum _FcMatcherPriority { - PRI1(FOUNDRY), - PRI1(CHARSET), - PRI_FAMILY_STRONG, -- PRI_LANG_STRONG, - PRI_POSTSCRIPT_NAME_STRONG, -- PRI_LANG_WEAK, -+ PRI1(LANG), - PRI_FAMILY_WEAK, - PRI_POSTSCRIPT_NAME_WEAK, - PRI1(SPACING), -@@ -910,8 +910,7 @@ FcFontSetSort (FcConfig *config FC_UNUSED, - * If this node matches any language, go check - * which ones and satisfy those entries - */ -- if (nodeps[f]->score[PRI_LANG_STRONG] < 2000 || -- nodeps[f]->score[PRI_LANG_WEAK] < 2000) -+ if (nodeps[f]->score[PRI_LANG] < 2000) - { - for (i = 0; i < nPatternLang; i++) - { -@@ -935,13 +934,6 @@ FcFontSetSort (FcConfig *config FC_UNUSED, - } - patternLangSat[i] = FcTrue; - satisfies = FcTrue; -- /* adjust score to ensure it's not more than 10000.0 -- * which would means the lang didn't satisfy the requirements -- */ -- if (nodeps[f]->score[PRI_LANG_STRONG] > 10000.0) -- nodeps[f]->score[PRI_LANG_STRONG] = 10000.0; -- if (nodeps[f]->score[PRI_LANG_WEAK] > 10000.0) -- nodeps[f]->score[PRI_LANG_WEAK] = 10000.0; - break; - } - } -@@ -949,8 +941,7 @@ FcFontSetSort (FcConfig *config FC_UNUSED, - } - if (!satisfies) - { -- nodeps[f]->score[PRI_LANG_STRONG] = 10000.0; -- nodeps[f]->score[PRI_LANG_WEAK] = 10000.0; -+ nodeps[f]->score[PRI_LANG] = 10000.0; - } - } - diff --git a/fontconfig-fix-woff.patch b/fontconfig-fix-woff.patch deleted file mode 100644 index a3600c0..0000000 --- a/fontconfig-fix-woff.patch +++ /dev/null @@ -1,157 +0,0 @@ -diff --git a/src/fcfreetype.c b/src/fcfreetype.c -index 8a037c0..5e8990d 100644 ---- a/src/fcfreetype.c -+++ b/src/fcfreetype.c -@@ -1104,7 +1104,10 @@ FcFreeTypeQueryFace (const FT_Face face, - char psname[256]; - const char *tmp; - -- FcChar8 *hashstr; -+ FcChar8 *hashstr = NULL; -+ char *fontdata = NULL; -+ FT_Error err; -+ FT_ULong len = 0, alen; - - pat = FcPatternCreate (); - if (!pat) -@@ -1662,12 +1665,34 @@ FcFreeTypeQueryFace (const FT_Face face, - if (!FcPatternAddBool (pat, FC_DECORATIVE, decorative)) - goto bail1; - -- hashstr = FcHashGetSHA256DigestFromFile (file); -+ err = FT_Load_Sfnt_Table (face, 0, 0, NULL, &len); -+ if (err == FT_Err_Ok) -+ { -+ alen = (len + 63) & ~63; -+ fontdata = malloc (alen); -+ if (!fontdata) -+ goto bail1; -+ err = FT_Load_Sfnt_Table (face, 0, 0, (FT_Byte *)fontdata, &len); -+ if (err != FT_Err_Ok) -+ goto bail1; -+ memset (&fontdata[len], 0, alen - len); -+ hashstr = FcHashGetSHA256DigestFromMemory (fontdata, len); -+ } -+ else if (err == FT_Err_Invalid_Face_Handle) -+ { -+ /* font may not support SFNT. falling back to -+ * read the font data from file directly -+ */ -+ hashstr = FcHashGetSHA256DigestFromFile (file); -+ } -+ else -+ { -+ goto bail1; -+ } - if (!hashstr) - goto bail1; - if (!FcPatternAddString (pat, FC_HASH, hashstr)) - goto bail1; -- free (hashstr); - - /* - * Compute the unicode coverage for the font -@@ -1756,6 +1781,10 @@ FcFreeTypeQueryFace (const FT_Face face, - bail2: - FcCharSetDestroy (cs); - bail1: -+ if (hashstr) -+ free (hashstr); -+ if (fontdata) -+ free (fontdata); - FcPatternDestroy (pat); - bail0: - return NULL; -diff --git a/src/fchash.c b/src/fchash.c -index 827b20f..92585a6 100644 ---- a/src/fchash.c -+++ b/src/fchash.c -@@ -220,7 +220,7 @@ FcHashGetSHA256DigestFromFile (const FcChar8 *filename) - - ret = FcHashInitSHA256Digest (); - if (!ret) -- return NULL; -+ goto bail0; - - while (!feof (fp)) - { -@@ -261,5 +261,60 @@ FcHashGetSHA256DigestFromFile (const FcChar8 *filename) - - bail0: - fclose (fp); -+ - return NULL; - } -+ -+FcChar8 * -+FcHashGetSHA256DigestFromMemory (const char *fontdata, -+ size_t length) -+{ -+ char ibuf[64]; -+ FcChar32 *ret; -+ size_t i = 0; -+ -+ ret = FcHashInitSHA256Digest (); -+ if (!ret) -+ return NULL; -+ -+ while (i <= length) -+ { -+ if ((length - i) < 64) -+ { -+ long v; -+ size_t n; -+ -+ /* add a padding */ -+ n = length - i; -+ if (n > 0) -+ memcpy (ibuf, &fontdata[i], n); -+ memset (&ibuf[n], 0, 64 - n); -+ ibuf[n] = 0x80; -+ if ((64 - n) < 9) -+ { -+ /* process a block once */ -+ FcHashComputeSHA256Digest (ret, ibuf); -+ memset (ibuf, 0, 64); -+ } -+ /* set input size at the end */ -+ v = length * 8; -+ ibuf[63 - 0] = v & 0xff; -+ ibuf[63 - 1] = (v >> 8) & 0xff; -+ ibuf[63 - 2] = (v >> 16) & 0xff; -+ ibuf[63 - 3] = (v >> 24) & 0xff; -+ ibuf[63 - 4] = (v >> 32) & 0xff; -+ ibuf[63 - 5] = (v >> 40) & 0xff; -+ ibuf[63 - 6] = (v >> 48) & 0xff; -+ ibuf[63 - 7] = (v >> 56) & 0xff; -+ FcHashComputeSHA256Digest (ret, ibuf); -+ break; -+ } -+ else -+ { -+ FcHashComputeSHA256Digest (ret, &fontdata[i]); -+ } -+ i += 64; -+ } -+ -+ return FcHashSHA256ToString (ret); -+} -diff --git a/src/fcint.h b/src/fcint.h -index c45075e..8919958 100644 ---- a/src/fcint.h -+++ b/src/fcint.h -@@ -818,9 +818,14 @@ FcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s); - FcPrivate FcChar8 * - FcHashGetSHA256Digest (const FcChar8 *input_strings, - size_t len); -+ - FcPrivate FcChar8 * - FcHashGetSHA256DigestFromFile (const FcChar8 *filename); - -+FcPrivate FcChar8 * -+FcHashGetSHA256DigestFromMemory (const char *fontdata, -+ size_t length); -+ - /* fcinit.c */ - FcPrivate FcConfig * - FcInitLoadOwnConfig (FcConfig *config); diff --git a/fontconfig.spec b/fontconfig.spec index 9af8b58..5f61e55 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -2,8 +2,8 @@ Summary: Font configuration and customization library Name: fontconfig -Version: 2.10.92 -Release: 3%{?dist} +Version: 2.10.93 +Release: 1%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code # fc-case/CaseFolding.txt is in the UCD @@ -16,8 +16,6 @@ Source1: 25-no-bitmap-fedora.conf # https://bugzilla.redhat.com/show_bug.cgi?id=140335 Patch0: fontconfig-2.8.0-sleep-less.patch -Patch1: %{name}-929372.patch -Patch2: %{name}-fix-woff.patch BuildRequires: expat-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -137,6 +135,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Mon May 20 2013 Akira TAGOH - 2.10.93-1 +- New upstream release. + * Thu Apr 11 2013 Akira TAGOH - 2.10.92-3 - Fix a web font issue in firefox. (#946859) diff --git a/sources b/sources index 3b0944c..b9a95d2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -d69aa42da134038d2145d8f31a085620 fontconfig-2.10.92.tar.bz2 +0f8e5c63c2d6931626185c02802375a3 fontconfig-2.10.93.tar.bz2