diff options
Diffstat (limited to 'media-libs/fontconfig/files/fontconfig-2.10.92-ft-face2.patch')
-rw-r--r-- | media-libs/fontconfig/files/fontconfig-2.10.92-ft-face2.patch | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/media-libs/fontconfig/files/fontconfig-2.10.92-ft-face2.patch b/media-libs/fontconfig/files/fontconfig-2.10.92-ft-face2.patch new file mode 100644 index 000000000000..62735675275c --- /dev/null +++ b/media-libs/fontconfig/files/fontconfig-2.10.92-ft-face2.patch @@ -0,0 +1,177 @@ +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 |