[Fontconfig] fontconfig: Branch 'master' - 4 commits
Keith Packard
keithp at kemper.freedesktop.org
Sun May 4 19:08:49 PDT 2008
conf.d/25-unhint-nonlatin.conf | 119 -----------------------------------------
fc-cache/fc-cache.c | 1
src/fcatomic.c | 2
src/fccharset.c | 6 ++
src/fcfreetype.c | 5 +
src/fcinit.c | 2
src/fcpat.c | 2
src/fcstr.c | 9 ++-
8 files changed, 21 insertions(+), 125 deletions(-)
New commits:
commit 8d0139b0e68b081c9cdbeaa025fb278105ebf50c
Author: Keith Packard <keithp at keithp.com>
Date: Sun May 4 19:08:31 2008 -0700
Freetype 2.3.5 (2007-jul-02) fixes indic font hinting. re-enable (bug 15822)
Autohinting for Indic fonts has been disabled since freetype could not handle
it properly. But since freetype-2.3.5, the hinting problems for indic fonts
have been fixed. Thus this is a request to enable the autohinting in
fontconfig again for all the indic fonts.
diff --git a/conf.d/25-unhint-nonlatin.conf b/conf.d/25-unhint-nonlatin.conf
index 3a00055..3799853 100644
--- a/conf.d/25-unhint-nonlatin.conf
+++ b/conf.d/25-unhint-nonlatin.conf
@@ -125,123 +125,4 @@
</edit>
</match>
- <!--
- We also need to turn off hinting for Indic fonts with a joined baseline.
- -->
- <match target="font">
- <test name="family" compare="eq">
- <string>Mukti Narrow</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
- <match target="font">
- <test name="family" compare="eq">
- <string>Lohit Hindi</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
- <match target="font">
- <test name="family" compare="eq">
- <string>Lohit Bengali</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
- <match target="font">
- <test name="family" compare="eq">
- <string>Lohit Punjabi</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
-<!--
-Gujarti fonts are distorted when hinting is enabled. Turn it off.
--->
- <match target="font">
- <test name="family" compare="eq">
- <string>Lohit Gujarati</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
-<!--
-Disabling hinting for newly added Indic fonts (kn/or/ml/te)
--->
- <match target="font">
- <test name="family" compare="eq">
- <string>Lohit Kannada</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
- <match target="font">
- <test name="family" compare="eq">
- <string>Lohit Oriya</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
- <match target="font">
- <test name="family" compare="eq">
- <string>Lohit Malayalam</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
- <match target="font">
- <test name="family" compare="eq">
- <string>Lohit Telugu</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
-<!--
-And Sinhala
--->
- <match target="font">
- <test name="family" compare="eq">
- <string>LKLUG</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
-<!--
-Old(?) Indic fonts
--->
- <match target="font">
- <test name="family" compare="eq">
- <string>Likhan</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
- <match target="font">
- <test name="family" compare="eq">
- <string>Raghindi</string>
- </test>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
</fontconfig>
commit 3a3f687b759ceb76fc1e6407980a4b2717a47219
Author: Keith Packard <keithp at keithp.com>
Date: Sun May 4 01:27:42 2008 -0700
Add extended, caps, dunhill style mappings.
extended -> expanded.
caps, dunhill -> decorative
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index 4ee8a63..a79308c 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -1016,6 +1016,7 @@ static const FcStringConst widthConsts[] = {
{ (FC8) "extraexpanded", FC_WIDTH_EXTRAEXPANDED },
{ (FC8) "ultraexpanded", FC_WIDTH_ULTRAEXPANDED },
{ (FC8) "expanded", FC_WIDTH_EXPANDED }, /* must be after *expanded */
+ { (FC8) "extended", FC_WIDTH_EXPANDED },
};
#define NUM_WIDTH_CONSTS (int) (sizeof (widthConsts) / sizeof (widthConsts[0]))
@@ -1036,11 +1037,11 @@ static const FcStringConst slantConsts[] = {
static const FcStringConst decorativeConsts[] = {
{ (FC8) "shadow", FcTrue },
- { (FC8) "smallcaps", FcTrue },
+ { (FC8) "caps", FcTrue },
{ (FC8) "antiqua", FcTrue },
{ (FC8) "romansc", FcTrue },
{ (FC8) "embosed", FcTrue },
- { (FC8) "romansmallcaps", FcTrue },
+ { (FC8) "dunhill", FcTrue },
};
#define NUM_DECORATIVE_CONSTS (int) (sizeof (decorativeConsts) / sizeof (decorativeConsts[0]))
commit 13a14cbf56d56c14d53e5f55d7fcc4bdec900994
Author: Keith Packard <keithp at keithp.com>
Date: Sun May 4 01:26:40 2008 -0700
Fix a few memory tracking mistakes.
The built-in memory tracking code in fontconfig relies on a lot of manual
function call tracking. A pain, but it helps debug leaks.
diff --git a/src/fcatomic.c b/src/fcatomic.c
index 9038a5f..8c04510 100644
--- a/src/fcatomic.c
+++ b/src/fcatomic.c
@@ -205,7 +205,7 @@ void
FcAtomicDestroy (FcAtomic *atomic)
{
FcMemFree (FC_MEM_ATOMIC, sizeof (FcAtomic) +
- strlen ((char *) atomic->file) * 4 + 1 +
+ strlen ((char *) atomic->file) * 4 + 4 +
sizeof (NEW_NAME) + sizeof (LCK_NAME) +
sizeof (TMP_NAME));
diff --git a/src/fccharset.c b/src/fccharset.c
index 5da1312..f4042db 100644
--- a/src/fccharset.c
+++ b/src/fccharset.c
@@ -1239,6 +1239,9 @@ FcCharSetFreezerDestroy (FcCharSetFreezer *freezer)
for (ent = freezer->set_hash_table[i]; ent; ent = next)
{
next = ent->next;
+ FcMemFree (FC_MEM_CHARSET, (sizeof (FcCharSetEnt) +
+ ent->set.num * sizeof (FcCharLeaf *) +
+ ent->set.num * sizeof (FcChar16)));
free (ent);
}
}
@@ -1254,7 +1257,10 @@ FcCharSetFreezerDestroy (FcCharSetFreezer *freezer)
}
for (i = 0; i < freezer->leaf_block_count; i++)
+ {
free (freezer->leaf_blocks[i]);
+ FcMemFree (FC_MEM_CHARLEAF, FC_CHAR_LEAF_BLOCK * sizeof (FcCharLeafEnt));
+ }
free (freezer->leaf_blocks);
free (freezer);
diff --git a/src/fcinit.c b/src/fcinit.c
index 96aaa44..0998abc 100644
--- a/src/fcinit.c
+++ b/src/fcinit.c
@@ -141,6 +141,8 @@ FcFini (void)
FcPatternFini ();
FcCacheFini ();
+ if (FcDebug() & FC_DBG_MEMORY)
+ FcMemReport ();
}
/*
diff --git a/src/fcpat.c b/src/fcpat.c
index 9a62ec9..35127f2 100644
--- a/src/fcpat.c
+++ b/src/fcpat.c
@@ -1054,7 +1054,7 @@ FcStrStaticNameFini (void)
next = b->next;
name = (char *) (b + 1);
size = sizeof (struct objectBucket) + strlen (name) + 1;
- FcMemFree (FC_MEM_STATICSTR, size);
+ FcMemFree (FC_MEM_STATICSTR, size + sizeof (int));
free (b);
}
FcObjectBuckets[i] = 0;
diff --git a/src/fcstr.c b/src/fcstr.c
index 1e7b466..f56f823 100644
--- a/src/fcstr.c
+++ b/src/fcstr.c
@@ -1025,11 +1025,14 @@ _FcStrSetAppend (FcStrSet *set, FcChar8 *s)
if (!strs)
return FcFalse;
FcMemAlloc (FC_MEM_STRSET, (set->size + 2) * sizeof (FcChar8 *));
- set->size = set->size + 1;
if (set->num)
memcpy (strs, set->strs, set->num * sizeof (FcChar8 *));
if (set->strs)
+ {
+ FcMemFree (FC_MEM_STRSET, (set->size + 1) * sizeof (FcChar8 *));
free (set->strs);
+ }
+ set->size = set->size + 1;
set->strs = strs;
}
set->strs[set->num++] = s;
@@ -1118,9 +1121,11 @@ FcStrSetDestroy (FcStrSet *set)
for (i = 0; i < set->num; i++)
FcStrFree (set->strs[i]);
- FcMemFree (FC_MEM_STRSET, (set->size) * sizeof (FcChar8 *));
if (set->strs)
+ {
+ FcMemFree (FC_MEM_STRSET, (set->size + 1) * sizeof (FcChar8 *));
free (set->strs);
+ }
FcMemFree (FC_MEM_STRSET, sizeof (FcStrSet));
free (set);
}
commit c6c9400d67ffefa95100d03e6650ea901b05116b
Author: Keith Packard <keithp at keithp.com>
Date: Sun May 4 01:25:04 2008 -0700
Call FcFini to make memory debugging easier
FcFini frees all libary data structures so valgrind should report 0
allocations in use when the program exits.
diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c
index 54add90..cd664fa 100644
--- a/fc-cache/fc-cache.c
+++ b/fc-cache/fc-cache.c
@@ -457,6 +457,7 @@ main (int argc, char **argv)
* library, and there aren't any signals flying around here.
*/
FcConfigDestroy (config);
+ FcFini ();
sleep (2);
if (verbose)
printf ("%s: %s\n", argv[0], ret ? "failed" : "succeeded");
More information about the Fontconfig
mailing list