diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2013-09-03 16:10:12 -0300 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2013-09-03 16:10:12 -0300 |
commit | 037bcb846a6662420bd0f5d1edaad58bda4c86a7 (patch) | |
tree | 82494884d013c7b2cc9cd5df16c54cae0712d472 /extra/fontconfig | |
parent | 830afd54d0d990fdb982292bed4c97f577dc195d (diff) | |
parent | 3aa73e2018f321c9ccff8eca801b1c2fa9f18fa8 (diff) |
Merge branch 'master' of ssh://vparabola/home/parabola/abslibre-pre-mips64el
Conflicts:
community/darkhttpd/PKGBUILD
community/gnome-panel/PKGBUILD
community/gpicview/PKGBUILD
community/iftop/PKGBUILD
community/lazarus/PKGBUILD
community/netsurf/PKGBUILD
community/polkit-gnome/PKGBUILD
community/texvc/PKGBUILD
community/unbound/PKGBUILD
community/xfmedia/PKGBUILD
core/glibc/PKGBUILD
extra/arora/PKGBUILD
extra/cairo/PKGBUILD
extra/graphviz/PKGBUILD
extra/libmng/PKGBUILD
extra/mesa/PKGBUILD
extra/nx/PKGBUILD
extra/qt4/PKGBUILD
extra/qt5/PKGBUILD
extra/sqlite/PKGBUILD
libre/midori-libre/PKGBUILD
~fauno/distccd-zeroconf/PKGBUILD
~fauno/kyotocabinet/PKGBUILD
~fauno/kyototycoon/PKGBUILD
Diffstat (limited to 'extra/fontconfig')
-rw-r--r-- | extra/fontconfig/PKGBUILD | 14 | ||||
-rw-r--r-- | extra/fontconfig/git_fixes.diff | 732 |
2 files changed, 5 insertions, 741 deletions
diff --git a/extra/fontconfig/PKGBUILD b/extra/fontconfig/PKGBUILD index 611ae6a84..95fca93c5 100644 --- a/extra/fontconfig/PKGBUILD +++ b/extra/fontconfig/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 186044 2013-05-20 18:22:18Z andyrtr $ +# $Id: PKGBUILD 193795 2013-09-01 09:03:59Z andyrtr $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=fontconfig -pkgver=2.10.93 +pkgver=2.10.95 pkgrel=1 pkgdesc="A library for configuring and customizing font access" arch=(i686 x86_64 'mips64el') @@ -12,10 +12,9 @@ depends=('expat' 'freetype2') options=('!libtool') install=fontconfig.install source=(http://www.fontconfig.org/release/$pkgname-$pkgver.tar.bz2 - 29-replace-bitmap-fonts.conf git_fixes.diff) -sha256sums=('ea901f278848829ed9937d76fb0ce63ad362d7d5b9e75aa6a6b78bfef42e529c' - '2325c478783659e8fce79f5754119934d6ce21f81552f878b740c7b18f9fe0d6' - '7dc98137405ee0e5f98f3266a760a4da27d78e3c2bc7b7ef4db6b481df3c39f0') + 29-replace-bitmap-fonts.conf) +sha256sums=('abc0ecb9fb083d8705c140c8c0d13cc294c56faa1fee0e31e3f3eb98062a5e7b' + '2325c478783659e8fce79f5754119934d6ce21f81552f878b740c7b18f9fe0d6') # a nice page to test font matching: # http://zipcon.net/~swhite/docs/computers/browsers/fonttest.html @@ -23,9 +22,6 @@ sha256sums=('ea901f278848829ed9937d76fb0ce63ad362d7d5b9e75aa6a6b78bfef42e529c' build() { cd "$srcdir/$pkgname-$pkgver" - # post release fixes - #patch -Np1 -i ${srcdir}/git_fixes.diff - # make sure there's no rpath trouble and sane .so versioning - FC and Gentoo do this as well libtoolize -f autoreconf -fi diff --git a/extra/fontconfig/git_fixes.diff b/extra/fontconfig/git_fixes.diff deleted file mode 100644 index 209cba64c..000000000 --- a/extra/fontconfig/git_fixes.diff +++ /dev/null @@ -1,732 +0,0 @@ -From 8fd0ed60a62cb7f36b2ade1bd16a66671eaf79da Mon Sep 17 00:00:00 2001 -From: Akira TAGOH <akira@tagoh.org> -Date: Mon, 01 Apr 2013 09:16:28 +0000 -Subject: Bug 62980 - matching native fonts with even :lang=en - -Fix the matcher modified by 4eab908c8679a797ac7016b77a93ee41bb11b0fc -to deal with both strong and weak of FC_LANG as the same location in the score ---- -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; - } - } - --- -cgit v0.9.0.2-2-gbebe -From 18bf57c70aafcad031c0b43756b754dcaf6a756a Mon Sep 17 00:00:00 2001 -From: Sebastian Freundt <hroptatyr@fresse.org> -Date: Sun, 07 Apr 2013 00:02:58 +0000 -Subject: build-chain, replace INCLUDES directive by AM_CPPFLAGS - -As of automake-13.1 the INCLUDES directive is no longer supported. -An automake run will return with an error. - -This changeset simply follows automake's advice to replace INCLUDES -by AM_CPPFLAGS. ---- -diff --git a/Tools.mk b/Tools.mk -index 56766da..f0fa0ec 100644 ---- a/Tools.mk -+++ b/Tools.mk -@@ -32,7 +32,7 @@ TOOL=./$(DIR)$(EXEEXT_FOR_BUILD) - - EXTRA_DIST = $(TARG) $(TMPL) $(TSRC) $(DIST) - --INCLUDES = \ -+AM_CPPFLAGS = \ - -I$(builddir) \ - -I$(srcdir) \ - -I$(top_builddir)/src \ -@@ -43,7 +43,7 @@ INCLUDES = \ - $(WARN_CFLAGS) - - $(TOOL): $(TSRC) $(ALIAS_FILES) -- $(AM_V_GEN) $(CC_FOR_BUILD) -o $(TOOL) $< $(INCLUDES) -+ $(AM_V_GEN) $(CC_FOR_BUILD) -o $(TOOL) $< $(AM_CPPFLAGS) - - $(TARG): $(TMPL) $(TSRC) $(DEPS) - $(AM_V_GEN) $(MAKE) $(TOOL) && \ -diff --git a/fc-cache/Makefile.am b/fc-cache/Makefile.am -index 7f7d1b1..0e10786 100644 ---- a/fc-cache/Makefile.am -+++ b/fc-cache/Makefile.am -@@ -36,7 +36,7 @@ uninstall-local: - -$(RM) -rf "$(DESTDIR)$(fc_cachedir)" - endif - --INCLUDES=-I${top_srcdir} -I${top_srcdir}/src $(WARN_CFLAGS) -+AM_CPPFLAGS=-I${top_srcdir} -I${top_srcdir}/src $(WARN_CFLAGS) - - bin_PROGRAMS=fc-cache - -diff --git a/fc-cat/Makefile.am b/fc-cat/Makefile.am -index b426723..04c1cc4 100644 ---- a/fc-cat/Makefile.am -+++ b/fc-cat/Makefile.am -@@ -27,7 +27,7 @@ FC_CAT_SRC=${top_srcdir}/fc-cat - - SGML = ${FC_CAT_SRC}/fc-cat.sgml - --INCLUDES=-I${top_srcdir} $(WARN_CFLAGS) -+AM_CPPFLAGS=-I${top_srcdir} $(WARN_CFLAGS) - - bin_PROGRAMS=fc-cat - -diff --git a/fc-list/Makefile.am b/fc-list/Makefile.am -index b2c499d..c58540e 100644 ---- a/fc-list/Makefile.am -+++ b/fc-list/Makefile.am -@@ -29,7 +29,7 @@ SGML = ${FC_LIST_SRC}/fc-list.sgml - - bin_PROGRAMS=fc-list - --INCLUDES=-I${top_srcdir} $(WARN_CFLAGS) -+AM_CPPFLAGS=-I${top_srcdir} $(WARN_CFLAGS) - - BUILT_MANS=fc-list.1 - -diff --git a/fc-match/Makefile.am b/fc-match/Makefile.am -index 0e9e8fd..84afb8b 100644 ---- a/fc-match/Makefile.am -+++ b/fc-match/Makefile.am -@@ -29,7 +29,7 @@ FC_MATCH_SRC=${top_srcdir}/fc-match - - SGML = ${FC_MATCH_SRC}/fc-match.sgml - --INCLUDES=-I${top_srcdir} $(WARN_CFLAGS) -+AM_CPPFLAGS=-I${top_srcdir} $(WARN_CFLAGS) - - BUILT_MANS=fc-match.1 - -diff --git a/fc-pattern/Makefile.am b/fc-pattern/Makefile.am -index 92b0433..c456247 100644 ---- a/fc-pattern/Makefile.am -+++ b/fc-pattern/Makefile.am -@@ -29,7 +29,7 @@ FC_PATTERN_SRC=${top_srcdir}/fc-pattern - - SGML = ${FC_PATTERN_SRC}/fc-pattern.sgml - --INCLUDES=-I${top_srcdir} $(WARN_CFLAGS) -+AM_CPPFLAGS=-I${top_srcdir} $(WARN_CFLAGS) - - BUILT_MANS=fc-pattern.1 - -diff --git a/fc-query/Makefile.am b/fc-query/Makefile.am -index b3ea1e6..73b3f11 100644 ---- a/fc-query/Makefile.am -+++ b/fc-query/Makefile.am -@@ -29,7 +29,7 @@ FC_QUERY_SRC=${top_srcdir}/fc-query - - SGML = ${FC_QUERY_SRC}/fc-query.sgml - --INCLUDES=-I${top_srcdir} $(FREETYPE_CFLAGS) $(WARN_CFLAGS) -+AM_CPPFLAGS=-I${top_srcdir} $(FREETYPE_CFLAGS) $(WARN_CFLAGS) - - BUILT_MANS=fc-query.1 - -diff --git a/fc-scan/Makefile.am b/fc-scan/Makefile.am -index 2063405..471a42f 100644 ---- a/fc-scan/Makefile.am -+++ b/fc-scan/Makefile.am -@@ -29,7 +29,7 @@ FC_SCAN_SRC=${top_srcdir}/fc-scan - - SGML = ${FC_SCAN_SRC}/fc-scan.sgml - --INCLUDES=-I${top_srcdir} $(FREETYPE_CFLAGS) $(WARN_CFLAGS) -+AM_CPPFLAGS=-I${top_srcdir} $(FREETYPE_CFLAGS) $(WARN_CFLAGS) - - BUILT_MANS=fc-scan.1 - -diff --git a/fc-validate/Makefile.am b/fc-validate/Makefile.am -index 54edec2..782cead 100644 ---- a/fc-validate/Makefile.am -+++ b/fc-validate/Makefile.am -@@ -29,7 +29,7 @@ FC_VALIDATE_SRC=${top_srcdir}/fc-validate - - SGML = ${FC_VALIDATE_SRC}/fc-validate.sgml - --INCLUDES=-I${top_srcdir} $(FREETYPE_CFLAGS) $(WARN_CFLAGS) -+AM_CPPFLAGS=-I${top_srcdir} $(FREETYPE_CFLAGS) $(WARN_CFLAGS) - - BUILT_MANS=fc-validate.1 - -diff --git a/src/Makefile.am b/src/Makefile.am -index 9fd7dd8..066cc03 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -70,7 +70,7 @@ uninstall-ms-import-lib: - - endif - --INCLUDES = \ -+AM_CPPFLAGS = \ - -I$(top_srcdir) \ - -I$(top_srcdir)/src \ - $(FREETYPE_CFLAGS) \ --- -cgit v0.9.0.2-2-gbebe -From 9299155b5247255d6b6687448173056c3ca8d09b Mon Sep 17 00:00:00 2001 -From: Akira TAGOH <akira@tagoh.org> -Date: Tue, 09 Apr 2013 02:34:35 +0000 -Subject: Ensure closing fp on error - ---- -diff --git a/src/fchash.c b/src/fchash.c -index 827b20f..4ea5f37 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)) - { --- -cgit v0.9.0.2-2-gbebe -From c93a8b8b54afe33e5ecf9870723543cb4058fa94 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH <akira@tagoh.org> -Date: Tue, 09 Apr 2013 03:46:30 +0000 -Subject: Obtain fonts data via FT_Face instead of opening a file directly - ---- -diff --git a/src/fcfreetype.c b/src/fcfreetype.c -index 8a037c0..1eecfdb 100644 ---- a/src/fcfreetype.c -+++ b/src/fcfreetype.c -@@ -1662,7 +1662,7 @@ FcFreeTypeQueryFace (const FT_Face face, - if (!FcPatternAddBool (pat, FC_DECORATIVE, decorative)) - goto bail1; - -- hashstr = FcHashGetSHA256DigestFromFile (file); -+ hashstr = FcHashGetSHA256DigestFromFace (face); - if (!hashstr) - goto bail1; - if (!FcPatternAddString (pat, FC_HASH, hashstr)) -diff --git a/src/fchash.c b/src/fchash.c -index 4ea5f37..043d94b 100644 ---- a/src/fchash.c -+++ b/src/fchash.c -@@ -29,6 +29,9 @@ - #include "fcint.h" - #include <stdio.h> - #include <string.h> -+#include <ft2build.h> -+#include FT_TRUETYPE_TABLES_H -+#include FT_TRUETYPE_TAGS_H - - #define ROTRN(w, v, n) ((((FcChar32)v) >> n) | (((FcChar32)v) << (w - n))) - #define ROTR32(v, n) ROTRN(32, v, n) -@@ -204,41 +207,50 @@ FcHashGetSHA256Digest (const FcChar8 *input_strings, - } - - FcChar8 * --FcHashGetSHA256DigestFromFile (const FcChar8 *filename) -+FcHashGetSHA256DigestFromFace (const FT_Face face) - { -- FILE *fp = fopen ((const char *)filename, "rb"); -- char ibuf[64]; -+ char ibuf[64], *buf = NULL; - FcChar32 *ret; -- size_t len; -- struct stat st; -+ FT_Error err; -+ FT_ULong len = 0, alen, i = 0; - -- if (!fp) -+ err = FT_Load_Sfnt_Table (face, 0, 0, NULL, &len); -+ if (err != FT_Err_Ok) - return NULL; -- -- if (FcStat (filename, &st)) -+ alen = (len + 63) & ~63; -+ buf = malloc (alen); -+ if (!buf) -+ return NULL; -+ err = FT_Load_Sfnt_Table (face, 0, 0, (FT_Byte *)buf, &len); -+ if (err != FT_Err_Ok) - goto bail0; -+ memset (&buf[len], 0, alen - len); - - ret = FcHashInitSHA256Digest (); - if (!ret) - goto bail0; - -- while (!feof (fp)) -+ while (i <= len) - { -- if ((len = fread (ibuf, sizeof (char), 64, fp)) < 64) -+ if ((len - i) < 64) - { - long v; -+ int n; - - /* add a padding */ -- memset (&ibuf[len], 0, 64 - len); -- ibuf[len] = 0x80; -- if ((64 - len) < 9) -+ n = len - i; -+ if (n > 0) -+ memcpy (ibuf, &buf[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 = (long)st.st_size * 8; -+ v = len * 8; - ibuf[63 - 0] = v & 0xff; - ibuf[63 - 1] = (v >> 8) & 0xff; - ibuf[63 - 2] = (v >> 16) & 0xff; -@@ -252,14 +264,18 @@ FcHashGetSHA256DigestFromFile (const FcChar8 *filename) - } - else - { -- FcHashComputeSHA256Digest (ret, ibuf); -+ FcHashComputeSHA256Digest (ret, &buf[i]); - } -+ i += 64; - } -- fclose (fp); -+ if (buf) -+ free (buf); - - return FcHashSHA256ToString (ret); - - bail0: -- fclose (fp); -+ if (buf) -+ free (buf); -+ - return NULL; - } -diff --git a/src/fcint.h b/src/fcint.h -index c45075e..703b983 100644 ---- a/src/fcint.h -+++ b/src/fcint.h -@@ -47,6 +47,8 @@ - #include "fcdeprecate.h" - #include "fcmutex.h" - #include "fcatomic.h" -+#include <ft2build.h> -+#include FT_FREETYPE_H - - #ifndef FC_CONFIG_PATH - #define FC_CONFIG_PATH "fonts.conf" -@@ -819,7 +821,7 @@ FcPrivate FcChar8 * - FcHashGetSHA256Digest (const FcChar8 *input_strings, - size_t len); - FcPrivate FcChar8 * --FcHashGetSHA256DigestFromFile (const FcChar8 *filename); -+FcHashGetSHA256DigestFromFace (const FT_Face face); - - /* fcinit.c */ - FcPrivate FcConfig * --- -cgit v0.9.0.2-2-gbebe -From fc5a589abad0e8285f7d95007ebda76536e8fa7d Mon Sep 17 00:00:00 2001 -From: Akira TAGOH <akira@tagoh.org> -Date: Tue, 09 Apr 2013 08:18:43 +0000 -Subject: Revert the previous change and rework to not export freetype API outside fcfreetype.c - ---- -diff --git a/src/fcfreetype.c b/src/fcfreetype.c -index 1eecfdb..22064b3 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,22 @@ FcFreeTypeQueryFace (const FT_Face face, - if (!FcPatternAddBool (pat, FC_DECORATIVE, decorative)) - goto bail1; - -- hashstr = FcHashGetSHA256DigestFromFace (face); -+ err = FT_Load_Sfnt_Table (face, 0, 0, NULL, &len); -+ if (err != FT_Err_Ok) -+ goto bail1; -+ 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); - if (!hashstr) - goto bail1; - if (!FcPatternAddString (pat, FC_HASH, hashstr)) - goto bail1; -- free (hashstr); - - /* - * Compute the unicode coverage for the font -@@ -1756,6 +1769,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 043d94b..1ef1e16 100644 ---- a/src/fchash.c -+++ b/src/fchash.c -@@ -29,9 +29,6 @@ - #include "fcint.h" - #include <stdio.h> - #include <string.h> --#include <ft2build.h> --#include FT_TRUETYPE_TABLES_H --#include FT_TRUETYPE_TAGS_H - - #define ROTRN(w, v, n) ((((FcChar32)v) >> n) | (((FcChar32)v) << (w - n))) - #define ROTR32(v, n) ROTRN(32, v, n) -@@ -207,40 +204,28 @@ FcHashGetSHA256Digest (const FcChar8 *input_strings, - } - - FcChar8 * --FcHashGetSHA256DigestFromFace (const FT_Face face) -+FcHashGetSHA256DigestFromMemory (const char *fontdata, -+ size_t length) - { -- char ibuf[64], *buf = NULL; -+ char ibuf[64]; - FcChar32 *ret; -- FT_Error err; -- FT_ULong len = 0, alen, i = 0; -- -- err = FT_Load_Sfnt_Table (face, 0, 0, NULL, &len); -- if (err != FT_Err_Ok) -- return NULL; -- alen = (len + 63) & ~63; -- buf = malloc (alen); -- if (!buf) -- return NULL; -- err = FT_Load_Sfnt_Table (face, 0, 0, (FT_Byte *)buf, &len); -- if (err != FT_Err_Ok) -- goto bail0; -- memset (&buf[len], 0, alen - len); -+ size_t i = 0; - - ret = FcHashInitSHA256Digest (); - if (!ret) -- goto bail0; -+ return NULL; - -- while (i <= len) -+ while (i <= length) - { -- if ((len - i) < 64) -+ if ((length - i) < 64) - { - long v; -- int n; -+ size_t n; - - /* add a padding */ -- n = len - i; -+ n = length - i; - if (n > 0) -- memcpy (ibuf, &buf[i], n); -+ memcpy (ibuf, &fontdata[i], n); - memset (&ibuf[n], 0, 64 - n); - ibuf[n] = 0x80; - if ((64 - n) < 9) -@@ -250,7 +235,7 @@ FcHashGetSHA256DigestFromFace (const FT_Face face) - memset (ibuf, 0, 64); - } - /* set input size at the end */ -- v = len * 8; -+ v = length * 8; - ibuf[63 - 0] = v & 0xff; - ibuf[63 - 1] = (v >> 8) & 0xff; - ibuf[63 - 2] = (v >> 16) & 0xff; -@@ -264,18 +249,10 @@ FcHashGetSHA256DigestFromFace (const FT_Face face) - } - else - { -- FcHashComputeSHA256Digest (ret, &buf[i]); -+ FcHashComputeSHA256Digest (ret, &fontdata[i]); - } - i += 64; - } -- if (buf) -- free (buf); - - return FcHashSHA256ToString (ret); -- --bail0: -- if (buf) -- free (buf); -- -- return NULL; - } -diff --git a/src/fcint.h b/src/fcint.h -index 703b983..a662dbf 100644 ---- a/src/fcint.h -+++ b/src/fcint.h -@@ -47,8 +47,6 @@ - #include "fcdeprecate.h" - #include "fcmutex.h" - #include "fcatomic.h" --#include <ft2build.h> --#include FT_FREETYPE_H - - #ifndef FC_CONFIG_PATH - #define FC_CONFIG_PATH "fonts.conf" -@@ -821,7 +819,8 @@ FcPrivate FcChar8 * - FcHashGetSHA256Digest (const FcChar8 *input_strings, - size_t len); - FcPrivate FcChar8 * --FcHashGetSHA256DigestFromFace (const FT_Face face); -+FcHashGetSHA256DigestFromMemory (const char *fontdata, -+ size_t length); - - /* fcinit.c */ - FcPrivate FcConfig * --- -cgit v0.9.0.2-2-gbebe -From 77419a4dfdf41ed34dd03e74d0e4e6f89dbc65e1 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH <akira@tagoh.org> -Date: Wed, 10 Apr 2013 02:14:39 +0000 -Subject: documented FC_HASH and FC_POSTSCRIPT_NAME - ---- -diff --git a/doc/fontconfig-devel.sgml b/doc/fontconfig-devel.sgml -index 05c5c09..a7b8530 100644 ---- a/doc/fontconfig-devel.sgml -+++ b/doc/fontconfig-devel.sgml -@@ -196,6 +196,9 @@ convenience for the application's rendering mechanism. - default value of familylang, - stylelang and fullnamelang - prgname FC_PRGNAME String Name of the running program -+ hash FC_HASH String SHA256 hash value of the font data -+ with "sha256:" prefix. -+ postscriptname FC_POSTSCRIPT_NAME String Font name in PostScript - </programlisting> - </sect2> - </sect1> --- -cgit v0.9.0.2-2-gbebe -From 03216ccf4ca0808f9c7b9513efcaeb7f4058b575 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH <akira@tagoh.org> -Date: Wed, 10 Apr 2013 09:41:22 +0000 -Subject: Bug 63329 - make check fails: .. contents:: :depth: 2 - -Add back FcHashGetSHA256DigestFromFile() and fall back to it -when font isn't SFNT-based font because FT_Load_Sfnt_Table -fails with FT_Err_Invalid_Face_Handle. ---- -diff --git a/src/fcfreetype.c b/src/fcfreetype.c -index 22064b3..5e8990d 100644 ---- a/src/fcfreetype.c -+++ b/src/fcfreetype.c -@@ -1666,17 +1666,29 @@ FcFreeTypeQueryFace (const FT_Face face, - goto bail1; - - err = FT_Load_Sfnt_Table (face, 0, 0, NULL, &len); -- if (err != FT_Err_Ok) -- goto bail1; -- 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) -+ 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; -- memset (&fontdata[len], 0, alen - len); -- hashstr = FcHashGetSHA256DigestFromMemory (fontdata, len); -+ } - if (!hashstr) - goto bail1; - if (!FcPatternAddString (pat, FC_HASH, hashstr)) -diff --git a/src/fchash.c b/src/fchash.c -index 1ef1e16..92585a6 100644 ---- a/src/fchash.c -+++ b/src/fchash.c -@@ -204,6 +204,68 @@ FcHashGetSHA256Digest (const FcChar8 *input_strings, - } - - FcChar8 * -+FcHashGetSHA256DigestFromFile (const FcChar8 *filename) -+{ -+ FILE *fp = fopen ((const char *)filename, "rb"); -+ char ibuf[64]; -+ FcChar32 *ret; -+ size_t len; -+ struct stat st; -+ -+ if (!fp) -+ return NULL; -+ -+ if (FcStat (filename, &st)) -+ goto bail0; -+ -+ ret = FcHashInitSHA256Digest (); -+ if (!ret) -+ goto bail0; -+ -+ while (!feof (fp)) -+ { -+ if ((len = fread (ibuf, sizeof (char), 64, fp)) < 64) -+ { -+ long v; -+ -+ /* add a padding */ -+ memset (&ibuf[len], 0, 64 - len); -+ ibuf[len] = 0x80; -+ if ((64 - len) < 9) -+ { -+ /* process a block once */ -+ FcHashComputeSHA256Digest (ret, ibuf); -+ memset (ibuf, 0, 64); -+ } -+ /* set input size at the end */ -+ v = (long)st.st_size * 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, ibuf); -+ } -+ } -+ fclose (fp); -+ -+ return FcHashSHA256ToString (ret); -+ -+bail0: -+ fclose (fp); -+ -+ return NULL; -+} -+ -+FcChar8 * - FcHashGetSHA256DigestFromMemory (const char *fontdata, - size_t length) - { -diff --git a/src/fcint.h b/src/fcint.h -index a662dbf..8919958 100644 ---- a/src/fcint.h -+++ b/src/fcint.h -@@ -818,6 +818,10 @@ 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); --- -cgit v0.9.0.2-2-gbebe |