[Fontconfig] fontconfig: Branch 'master' - 4 commits
Keith Packard
keithp at kemper.freedesktop.org
Mon Mar 12 10:32:58 PDT 2007
INSTALL | 2 +-
README | 36 ++++++++++++++++++++++++++++++++++--
configure.in | 2 +-
fc-glyphname/fc-glyphname.c | 2 +-
fontconfig/fontconfig.h | 2 +-
src/fcfreetype.c | 21 +++++++++++++++++----
src/fcpat.c | 10 +++++++---
7 files changed, 62 insertions(+), 13 deletions(-)
New commits:
diff-tree c80a08d6bf08a27ede95035f3f02cd5abfa2cafd (from fa741cd4fffbbaa5d4ba9a15f53550ac7817cc92)
Author: Keith Packard <keithp at neko.keithp.com>
Date: Mon Mar 12 10:32:23 2007 -0700
Work around FreeType bug when glyph name buffer is too small.
Recent versions of FreeType do not correctly deal with glyph name buffers
that are too small; work around this by declaring a buffer that can hold any
PS name (127 bytes).
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index e2bcb15..c79ab3b 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -2413,6 +2413,19 @@ FcGlyphNameToUcs4 (FcChar8 *name)
}
/*
+ * Work around a bug in some FreeType versions which fail
+ * to correctly bounds check glyph name buffers and overwrite
+ * the stack. As Postscript names have a limit of 127 characters,
+ * this should be sufficient.
+ */
+
+#if FC_GLYPHNAME_MAXLEN < 127
+# define FC_GLYPHNAME_BUFLEN 127
+#else
+# define FC_GLYPHNAME_BUFLEN FC_GLYPHNAME_MAXLEN
+#endif
+
+/*
* Search through a font for a glyph by name. This is
* currently a linear search as there doesn't appear to be
* any defined order within the font
@@ -2421,11 +2434,11 @@ static FT_UInt
FcFreeTypeGlyphNameIndex (FT_Face face, const FcChar8 *name)
{
FT_UInt gindex;
- FcChar8 name_buf[FC_GLYPHNAME_MAXLEN + 2];
+ FcChar8 name_buf[FC_GLYPHNAME_BUFLEN + 2];
for (gindex = 0; gindex < (FT_UInt) face->num_glyphs; gindex++)
{
- if (FT_Get_Glyph_Name (face, gindex, name_buf, FC_GLYPHNAME_MAXLEN+1) == 0)
+ if (FT_Get_Glyph_Name (face, gindex, name_buf, FC_GLYPHNAME_BUFLEN+1) == 0)
if (!strcmp ((char *) name, (char *) name_buf))
return gindex;
}
@@ -2715,11 +2728,11 @@ FcFreeTypeCharSetAndSpacing (FT_Face fac
*/
if (FcFreeTypeUseNames (face))
{
- FcChar8 name_buf[FC_GLYPHNAME_MAXLEN + 2];
+ FcChar8 name_buf[FC_GLYPHNAME_BUFLEN + 2];
for (glyph = 0; glyph < (FT_UInt) face->num_glyphs; glyph++)
{
- if (FT_Get_Glyph_Name (face, glyph, name_buf, FC_GLYPHNAME_MAXLEN+1) == 0)
+ if (FT_Get_Glyph_Name (face, glyph, name_buf, FC_GLYPHNAME_BUFLEN+1) == 0)
{
ucs4 = FcGlyphNameToUcs4 (name_buf);
if (ucs4 != 0xffff &&
diff-tree fa741cd4fffbbaa5d4ba9a15f53550ac7817cc92 (from 9b74b78fe87f75f7026bfb23ab43ef347e109ca6)
Author: Keith Packard <keithp at neko.keithp.com>
Date: Mon Mar 12 10:30:51 2007 -0700
rehash increment could be zero, causing rehash infinite loop.
Bump the rehash value by one so that it is always positive.
diff --git a/fc-glyphname/fc-glyphname.c b/fc-glyphname/fc-glyphname.c
index faaa63b..d4d0b99 100644
--- a/fc-glyphname/fc-glyphname.c
+++ b/fc-glyphname/fc-glyphname.c
@@ -206,7 +206,7 @@ insert (FcGlyphName *gn, FcGlyphName **t
i = (int) (h % hash);
while (table[i])
{
- if (!r) r = (int) (h % rehash);
+ if (!r) r = (int) (h % rehash + 1);
i += r;
if (i >= hash)
i -= hash;
diff-tree 9b74b78fe87f75f7026bfb23ab43ef347e109ca6 (from 2373f904265a05761039cfc5fe305bf588e831c5)
Author: Stephan Kulow <coolo at novell.com>
Date: Mon Mar 12 10:21:35 2007 -0700
Make FcPatternDuplicate copy the binding instead of always using Strong.
I noticed that Qt always uses a different font than fc-match advertises.
Debugging the issue, I found that a call that looks pretty innocent is
changing all weak bindings to strong bindings and as such changes the
semantic of the match: FcPatternDuplicate.
diff --git a/src/fcpat.c b/src/fcpat.c
index 052874f..4179694 100644
--- a/src/fcpat.c
+++ b/src/fcpat.c
@@ -925,10 +925,14 @@ FcPatternDuplicate (const FcPattern *ori
for (i = 0; i < orig->num; i++)
{
for (l = FcPatternEltValues(e + i); l; l = FcValueListNext(l))
- if (!FcPatternObjectAdd (new, e[i].object,
- FcValueCanonicalize(&l->value),
- FcTrue))
+ {
+ if (!FcPatternObjectAddWithBinding (new, e[i].object,
+ FcValueCanonicalize(&l->value),
+ l->binding,
+ FcTrue))
goto bail1;
+
+ }
}
return new;
diff-tree 2373f904265a05761039cfc5fe305bf588e831c5 (from e3b65ee06808cda296215b88111a259a200cc37c)
Author: Keith Packard <keithp at neko.keithp.com>
Date: Sat Dec 2 16:09:47 2006 -0800
Update for version 2.4.2
diff --git a/INSTALL b/INSTALL
index 1c8d3e3..4ea9080 100644
--- a/INSTALL
+++ b/INSTALL
@@ -19,7 +19,7 @@ important steps:
Set the date
Append the short log
- git-log --pretty=short 2.4.xx | git-shortlog
+ git-log --pretty=short 2.4.xx.. | git-shortlog
3. Commit those changes
diff --git a/README b/README
index 2c2fe0a..6bc94f2 100644
--- a/README
+++ b/README
@@ -1,12 +1,44 @@
Fontconfig
Font configuration and customization library
- Version 2.4.1
- 2006-09-15
+ Version 2.4.2
+ 2006-12-02
Check INSTALL for compilation and installation instructions.
Report bugs to https://bugs.freedesktop.org in the fontconfig module.
+2.4.2
+
+Han-Wen Nienhuys:
+ FcStrCanonFileName buggy for mingw. (bug 8311)
+ More fixes for Win32 building (bug 8311)
+
+Kean Johnston:
+ Don't use varargs CPP macros in fccache.c. (bug 8733)
+
+Keith Packard:
+ Remove documentation for non-existant FcConfigNormalizeFontDir.
+ Build fontconfig.def from header files when needed.
+ Detect and use available random number generator (bug 8308)
+ Add sparc64 architecture string.
+ FcStrCanonAbsoluteFilename should be static.
+ Use explicit platform/nameid order when scanning ttf files.
+ Warn (and recover) from config file without <cachedir> elements.
+ Avoid writing uninitialized structure pad bytes to cache files.
+ Fix grep pattern in makealias to work on non-Gnu grep (bug 8368).
+ Add FcFreeTypeQueryFace external API. Bug #7311.
+ Segfault scanning non-font files. Disallow scan edit of user vars. (#8767)
+ Add space between type and formal in devel man pages (bug 8935)
+
+Mike FABIAN:
+ Do not clean cache files for different architectures
+
+Peter Breitenlohner:
+ A VPATH build of fontconfig-2.4.1 fails for various reasons. Bug 8933.
+ Use <literal> instead of <sgmltag> when documenting fonts.conf. Bug 8935.
+ Fix fc-cat documentation (bug 8935).
+
+
2.4.1
Keith Packard:
diff --git a/configure.in b/configure.in
index ef37acd..5e3392f 100644
--- a/configure.in
+++ b/configure.in
@@ -33,7 +33,7 @@ dnl This is the package version number,
dnl version. This same version number must appear in fontconfig/fontconfig.h
dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
dnl not possible to extract the version number here from fontconfig.h
-AM_INIT_AUTOMAKE(fontconfig, 2.4.1)
+AM_INIT_AUTOMAKE(fontconfig, 2.4.2)
AM_MAINTAINER_MODE
dnl libtool versioning
diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
index 26412a3..f055cdb 100644
--- a/fontconfig/fontconfig.h
+++ b/fontconfig/fontconfig.h
@@ -53,7 +53,7 @@ typedef int FcBool;
#define FC_MAJOR 2
#define FC_MINOR 4
-#define FC_REVISION 1
+#define FC_REVISION 2
#define FC_VERSION ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
More information about the Fontconfig
mailing list