Commit Graph

1094 Commits

Author SHA1 Message Date
Behdad Esfahbod da8233b0f2 Fixup previous commit 2014-07-06 18:26:03 -04:00
Behdad Esfahbod bb27d6969c Remove HASH from matching priorities
We deprecated FC_HASH, so doesn't make sense to sort on it.
2014-07-06 18:10:49 -04:00
Behdad Esfahbod 5674b8a663 Comments 2014-07-06 17:42:33 -04:00
Akira TAGOH 5b22776999 Fix a crash when no sysroot is given and failed to load the default fonts.conf 2014-07-04 18:04:52 +09:00
Behdad Esfahbod f5b4b2c1ed Fix charset unparse after recent changes 2014-07-04 01:43:47 -04:00
Behdad Esfahbod 940d27a197 Minor 2014-07-03 21:15:25 -04:00
Behdad Esfahbod e708e97c35 Change charset parse/unparse format to be human readable
Previous format was unusable.  New format is ranges of hex values.
To choose space character and Latin capital letters for example:

$ fc-pattern ':charset=20 41-5a'
Pattern has 1 elts (size 16)
	charset:
	0000: 00000000 00000001 07fffffe 00000000 00000000 00000000 00000000 00000000
(s)
2014-07-03 17:54:11 -04:00
Akira TAGOH dab60e4476 Rework for 5004e8e01f
Don't read/write from/to the XDG dirs even if XDG_*_HOME is set
and the home directory is disabled.
2014-06-30 15:12:32 +09:00
Akira TAGOH 5004e8e01f Don't read/write from/to the XDG dirs if the home directory is disabled 2014-06-30 12:39:31 +09:00
Akira TAGOH 6c3c2603b9 Fix a segfault
introduced by the previous commit d17f556153
2014-06-18 19:13:06 +09:00
Akira TAGOH d17f556153 Read the config files and fonts on the sysroot when --sysroot is given to fc-cache
Fix for e96d776088

https://bugs.freedesktop.org/show_bug.cgi?id=59456
2014-06-17 20:11:02 +09:00
Behdad Esfahbod 8f62ccaa96 Remove unused FcHash code now that FC_HASH is deprecated 2014-06-12 17:02:10 -04:00
Behdad Esfahbod 75abdaf5c8 Deprecate FC_HASH and don't compute it
It was added without proper measurement and a fuzzy possible
use-case (font servers) in mind, but reality check shows that
this significantly slows down caching.  As such, deprecate it
and do NOT compute hash during caching.

Makes caching two to three times faster (ignoring the 2 second
delay in fc-cache).
2014-06-12 17:02:10 -04:00
Akira TAGOH f44bfad235 Workaround another race condition issue
See https://bugzilla.redhat.com/show_bug.cgi?id=921706
2014-06-05 19:06:02 +09:00
Behdad Esfahbod 58acd993cb Allow passing NULL for file to FcFreeTypeQueryFace() 2014-05-16 15:08:52 -06:00
Behdad Esfahbod 3f992254f2 Rewrite hashing to use FT_Stream directly
This is more robust but introduces a small change in behavior:
For .pcf.gz fonts, the new code calculates the hash of the uncompressed
font data whereas the original code was calculating the hash of the
compressed data.

No big deal IMO.
2014-05-16 15:02:58 -06:00
Behdad Esfahbod 8284df49ef Further simplify hash code 2014-05-16 14:23:56 -06:00
Behdad Esfahbod 748e77e89f Simplify hash code 2014-05-16 14:10:06 -06:00
Behdad Esfahbod e4d8847eee Remove unused code 2014-05-16 13:45:44 -06:00
Akira TAGOH 48c8b7938a Allow the modification on FcTypeVoid with FcTypeLangSet and FcTypeCharSet
FcTypeVoid is likely to happen when 'lang' and 'charset'
is deleted by 'delete' or 'delete_all' mode in edit.
Without this change, any modification on them are simply
ignored.

This is useful to make a lot of changes, particularly
when one wants to add a few and delete a lot say.
2014-05-13 21:22:17 +09:00
Akira TAGOH fff91eee7d Fix a build issue with freetype <2.5.1 2014-03-26 12:22:02 +09:00
Akira TAGOH 3cd573fc1f Bug 71287 - size specific design selection support in OS/2 table version 5
This feature requires the FreeType 2.5.1 or later at the build time.

Besides <range> element allows <double> elements with this changes.

This may breaks the cache but not bumping in this change sets at this moment.
please be aware if you want to try it and run fc-cache before/after to
avoid the weird thing against it.
2014-03-26 12:19:04 +09:00
Akira TAGOH 39a2f1e8f9 Fallback to lstat() in case the filesystem doesn't support d_type in struct dirent 2014-03-05 18:29:29 +09:00
Akira TAGOH e310d2fac2 Fix incompatible API on AIX with random_r and initstate_r
https://bugs.freedesktop.org/show_bug.cgi?id=74603
2014-02-06 19:40:01 +09:00
Akira TAGOH 7d75653285 Add missing #include <sys/statvfs.h> in fcstat.c
https://bugs.freedesktop.org/show_bug.cgi?id=74602
2014-02-06 17:29:19 +09:00
Akira TAGOH 80081555fd Fix a crash issue when empty strings are set to the BDF properties 2014-01-31 11:10:02 +09:00
Akira TAGOH 5918d5bea5 Add missing license headers
https://bugs.freedesktop.org/show_bug.cgi?id=73401
2014-01-17 13:05:25 +09:00
Akira TAGOH 7a6622f25c Improve the performance issue on rescanning directories 2013-12-20 11:57:16 +09:00
Akira TAGOH 5c725f2f58 Fix a build issue on platforms where doesn't support readlink() 2013-12-16 17:44:37 +09:00
Behdad Esfahbod fee834a9c9 Bug 72380 - Never drop first font when trimming
Let me show it with an example.

Currently:

$ fc-match symbol
symbol.ttf: "Symbol" "Regular"

$ fc-match symbol --sort | head -n 1
Symbol.pfb: "Symbol" "Regular"

$ fc-match symbol --sort --all | head -n 1
symbol.ttf: "Symbol" "Regular"

I want to make sure the above three commands all return the same font.
Ie.  I want to make sure FcFontMatch() always returns the first font
from FcFontSort().  As such, never trim first font.
2013-12-09 21:22:49 -05:00
Akira TAGOH 5152115349 Simplify to validate the availability of posix_fadvise 2013-12-02 18:43:10 +09:00
Akira TAGOH 38acb08d97 Fix typo
Use FcTypeUnknown instead of -1 with type casting.
This seems missed when it was changed.

Patch from brian porter
2013-11-11 11:53:09 +09:00
Alan Coopersmith 0b7f42f777 Avoid null pointer dereference in FcNameParse if malloc fails
Reported by parfait 1.3:
Error: Null pointer dereference (CWE 476)
   Read from null pointer t
        at line 423 of src/fcname.c in function 'FcNameParse'.
          Function _FcObjectLookupOtherTypeByName may return constant 'NULL'
           at line 63, called at line 122 of src/fcobjs.c in function
           'FcObjectLookupOtherTypeByName'.
          Function FcObjectLookupOtherTypeByName may return constant 'NULL'
           at line 122, called at line 67 of src/fcname.c in function
           'FcNameGetObjectType'.
          Function FcNameGetObjectType may return constant 'NULL' at line 67,
           called at line 422 in function 'FcNameParse'.
          Null pointer introduced at line 63 of src/fcobjs.c in function
           '_FcObjectLookupOtherTypeByName'.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-11-05 11:44:23 +09:00
Alan Coopersmith 5b8380d52e Avoid memory leak when NULL path passed to FcStrBuildFilename
Reported by parfait 1.3:
   Memory leak of pointer sset allocated with FcStrSetCreate()
        at line 933 of src/fcstr.c in function 'FcStrBuildFilename'.
          sset allocated at line 927 with FcStrSetCreate().
          sset leaks when sset != NULL at line 932.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2013-11-05 11:43:41 +09:00
Akira TAGOH aa22e6e639 Warn if no <test> nor <edit> elements in <match>
This corrects an error message being reported at
  https://bugs.freedesktop.org/show_bug.cgi?id=71085
  Bug 71085 - "out of memory" errors on empty match element in fonts.conf

and somewhat works as a workaround for
  https://bugs.freedesktop.org/show_bug.cgi?id=59438
  Bug 59438 - Fix <alias> inside <match>
2013-10-31 21:48:27 +09:00
Akira TAGOH 525a135ccf Change the default weight on match to FC_WEIGHT_NORMAL 2013-10-28 11:54:04 +09:00
Akira TAGOH 06b388523d Fix build issue on Debian/kFreeBSD 7.0
There are posix_fadvise(2) but not POSIX_FADV_WILLNEED.
Patch from Ryo ONODERA.
2013-10-21 11:50:55 +09:00
Akira TAGOH 0203055520 Workaround the race condition issue on updating cache 2013-10-02 16:34:34 +09:00
Akira TAGOH 43f768b53f avoid reading config.h twice
config.h is read from fcint.h now so having a line of the sort of #include "config.h"
is duplicate.

Bug 69833 - Incorrect SIZEOF_VOID_P and ALIGNOF_DOUBLE definitions causes nasty warnings on MacOSX when building fat libraries
2013-09-26 17:51:15 +09:00
Akira TAGOH 8a174b6c51 Fix a crash when FcPattern is set to null on FcFontSetList() and FcFontList() 2013-09-24 11:14:57 +09:00
Akira TAGOH 5e6b8894ea Copy all values from the font to the pattern if the pattern doesn't have the element 2013-09-18 17:33:45 +09:00
Akira TAGOH a61e145304 Fix memory leaks in FcFreeTypeQueryFace 2013-09-09 19:59:31 +09:00
Akira TAGOH 3e5f70a16a Do not create a config dir for migration when no config files nor dirs 2013-09-02 20:51:46 +09:00
Akira TAGOH 272a99217b Fix a crash 2013-08-31 10:43:13 +09:00
Akira TAGOH fba9efecd2 Fix a wrong edit position when 'kind' is different 2013-08-26 12:47:07 +09:00
Akira TAGOH 223c1384c9 Fix a crash when non-builtin objects are edited 2013-08-24 13:46:44 +09:00
Akira TAGOH 6c664d533d Fix a typo 2013-08-24 13:46:40 +09:00
Behdad Esfahbod f3bb3f19c9 Fix assertion
Apparently some AIX versions have 64bit pointers yet 32bit double
alignment.  Fix assertion.
2013-08-21 14:31:55 -04:00
Behdad Esfahbod ec3f0af6f0 Minor 2013-08-21 14:27:16 -04:00
Akira TAGOH 084cf7c44e Bug 16818 - fontformat in match pattern is not respected? 2013-08-14 12:51:26 +09:00
Akira TAGOH 45221ab12f Bug 67845 - Match on FC_SCALABLE 2013-08-07 12:19:33 +09:00
Akira TAGOH 041deb0cc5 warn deprecated only when migration failed 2013-08-07 12:05:32 +09:00
Akira TAGOH d52daa0024 Bug 67809 - Invalid read/write with valgrind when assigning something twice 2013-08-06 15:09:23 +09:00
Akira TAGOH a51d2767ce Fix wrong edit position 2013-08-06 13:05:53 +09:00
Akira TAGOH 04bd904632 trivial code optimization 2013-07-09 16:43:26 +09:00
Akira TAGOH d420e1df98 Rework to apply the intermixed test and edit elements in one-pass 2013-07-04 19:51:03 +09:00
Akira TAGOH 1162515a98 Add FC_UNUSED to FC_ASSERT_STATIC macro to avoid compiler warning 2013-07-03 11:56:58 +09:00
Akira TAGOH cbf06d7d3c Use INT_MAX instead of unreliable hardcoding value 2013-07-02 19:04:36 +09:00
Akira TAGOH 0907589a79 Fix the behavior of intermixed tests end edits in match
to get the following recipe working:

<match>
  <test1 .../>
  <edit1 .../>
  <test2 .../>
  <edit2 .../>
</match>

as:

<match>
  <test1 .../>
  </edit1 .../>
</match>
<match>
  <test1 .../>
  <test2 .../>
  <edit2 .../>
</match>
2013-06-28 15:54:38 +09:00
Akira TAGOH 197d06c49b Add FcTypeUnknown to FcType to avoid comparison of constant -1
This change reverts 9acc14c34a
because it doesn't work as expected when building
with -fshort-enums which is default for older arms ABIs

Thanks for pointing this out, Thomas Klausner, Valery Ushakov, and Martin Husemann
2013-06-28 15:04:11 +09:00
Akira TAGOH 38ab7ab2fb Fix a incompatible pointer warning on NetBSD 2013-06-27 13:10:27 +09:00
Akira TAGOH 8603e58695 Fix a shift count overflow on 32bit box 2013-06-27 12:30:56 +09:00
Akira TAGOH 9acc14c34a Fix a comparison of constant warning with clang 2013-06-26 12:03:38 +09:00
Akira TAGOH cd9b1033a6 Bug 64906 - FcNameParse() should ignore leading whitespace in parameters
After this change, the following works as expected:
$ FC_DEBUG=4 fc-match ":family=foo bar, sans-serif"
...
FcConfigSubstitute Pattern has 3 elts (size 16)
        family: "foo bar"(s) "sans-serif"(s)
...
2013-05-24 13:57:23 +09:00
Akira TAGOH 1cad82cde2 Bug 63922 - FcFreeTypeQueryFace fails on postscripts fonts loaded from memory
Workaround to not failing even when the hash is unable to generate from fonts.
This change also contains to ignore the case if the hash isn't in either both
patterns.
2013-05-16 16:49:14 +09:00
Akira TAGOH 0f9aa8759d Fix missing OSAtomicCompareAndSwapPtrBarrier() on Mac OS X 10.4
based on hb-atomic-private.hh in harfbuzz
2013-05-16 14:58:35 +09:00
Akira TAGOH f6244d2cf2 Use the glob matching for filename
Regex is expensive to compare filenames. we already have the glob matching
and it works enough in this case.

Prior to this change, renaming FcConfigGlobMatch() to FcStrGlobMatch() and moving to fcstr.c
2013-05-08 11:57:49 +09:00
Akira TAGOH 03216ccf4c 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.
2013-04-10 18:41:22 +09:00
Akira TAGOH fc5a589aba Revert the previous change and rework to not export freetype API outside fcfreetype.c 2013-04-09 17:18:43 +09:00
Akira TAGOH c93a8b8b54 Obtain fonts data via FT_Face instead of opening a file directly 2013-04-09 12:46:30 +09:00
Akira TAGOH 9299155b52 Ensure closing fp on error 2013-04-09 11:34:35 +09:00
Sebastian Freundt 18bf57c70a 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.
2013-04-08 11:40:58 +09:00
Akira TAGOH 8fd0ed60a6 Bug 62980 - matching native fonts with even :lang=en
Fix the matcher modified by 4eab908c86
to deal with both strong and weak of FC_LANG as the same location in the score
2013-04-01 18:16:28 +09:00
Akira TAGOH b561ff2016 Bug 38737 - Wishlist: support FC_POSTSCRIPT_NAME
Add the PostScript name into the cache and the matcher.
Scoring the better font against the PostScript name by
the forward-matching.
2013-03-21 16:34:42 +09:00
Akira TAGOH c758206e8c Fix a SIGSEGV on FcPatternGet* with NULL pattern 2013-03-21 11:58:06 +09:00
Behdad Esfahbod bdf1581e3d Fix crash with FcConfigSetCurrent(NULL) 2013-03-08 05:53:27 -05:00
Akira TAGOH aad4d6f6c6 Do not copy FC_*LANG_OBJECT even if it's not available on the pattern
those objects are linked to the corresponding string objects.
this may causes inconsistency that those objects has more values than them.
2013-03-07 13:20:31 +09:00
Akira TAGOH e96d776088 Bug 59456 - Adding a --sysroot like option to fc-cache
Add an ability to set the system root to generate the caches.
In order to do this, new APIs, FcConfigGetSysRoot() and
FcConfigSetSysRoot() is available.
2013-03-05 18:38:50 +09:00
Akira TAGOH 569657a24c Fix a memory leak 2013-03-05 12:46:01 +09:00
Akira TAGOH 612ee2a5c9 Fix broken sort order with FcFontSort()
which was introduced by 4eab908c86
2013-03-01 22:21:25 +09:00
Akira TAGOH ea4ebd5937 Fix a crash when the object is non-builtin object 2013-03-01 19:38:21 +09:00
Behdad Esfahbod 83f679ce55 Accept digits as part of OpenType script tags
They've been used since 2005.
2013-02-15 09:48:56 -05:00
Akira TAGOH 72b0480a21 Add Culmus foundry to the vendor list
Maps fonts produced by the Culmus project <http://culmus.sourceforge.net>
to the XLFD foundry name culmus.

For TrueType fonts, maps the vendor code CLM from the TrueType vendor id field.

For Type1 fonts, which use heuristics to guess mappings to XLFD foundries from
words in the copyright notice, add the names of the main contributors to
the Culmus product to recognize the fonts under their copyright.

Patch from Maxim Iorsh
2013-02-07 17:56:36 +09:00
Akira TAGOH 62b7d764ce Bump the cache version to 4 2013-02-06 19:14:51 +09:00
Akira TAGOH 4eab908c86 Update _FcMatchers definition logic
to make it easier to maintain. also added FC_HASH_OBJECT to be matched
in the pattern, prior to FC_FILE_OBJECT.
2013-02-06 19:02:07 +09:00
Akira TAGOH 95af7447db Bug 50733 - Add font-file hash?
Add "hash" object which contains SHA256 hash value (so far) computed from the font file.
2013-02-05 15:34:56 +09:00
Akira TAGOH da0946721a Use AM_MISSING_PROG instead of hardcoding missing 2013-02-04 17:57:00 +09:00
Akira TAGOH 20191810d1 Bug 23757 - Add mode="delete" to <edit>
Add two edit mode, "delete" and "delete_all".
what values are being deleted depends on <test> as documented.
if the target object is same to what is tested, matching value there
will be deleted. otherwise all of values in the object will be deleted.
so this would means both edit mode will not take any expressions.

e.g.

Given that the testing is always true here, the following rules:

  <match>
    <test name="foo" compare="eq">
      <string>bar</string>
    </test>
    <edit name="foo" mode="delete"/>
  </match>

will removes "bar" string from "foo" object. and:

  <match>
    <test name="foo" compare="eq">
      <string>foo</string>
    </test>
    <edit name="bar" mode="delete"/>
  </match>

will removes all of values in "bar" object.
2013-02-01 12:56:14 +09:00
Akira TAGOH d26fb23c41 Bug 59385 - Do the right thing for intermixed edit and test elements
This changes allows to have multiple mathcing rules in one <match> block
in the same order.
After this changes, the following thing will works as two matching rules:

	<match>
		<!-- rule 1 -->
		<test name="family" compare="eq">
			<string>foo</string>
		</test>
		<edit name="foo" mode="append">
			<string>foo</string>
		</edit>
		<!-- rule 2 -->
		<test name="foo" compare="eq">
			<string>foo</string>
		</test>
		<edit name="foo" mode="append">
			<string>bar</string>
		</edit>
	</match>
2013-01-31 19:55:21 +09:00
Akira TAGOH fb3b410998 remove the unnecessary code 2013-01-23 12:37:51 +09:00
Akira TAGOH 5400bb4fb4 Add another approach to FC_PRGNAME for Solaris 10 or before
Patch from Raimund Steger
2013-01-23 12:32:37 +09:00
Akira TAGOH 000ca9ccb0 Fix installation on MinGW32
Patch from LRN
2013-01-22 12:11:56 +09:00
Akira TAGOH 6363193a05 Fix mkstemp absence for some platform
Patch from LRN and modified to make more generic.
2013-01-22 12:11:02 +09:00
Akira TAGOH 9dbc282796 Add missing file descriptor to F_DUPFD_CLOEXEC
Patch from Matthieu Herrb
2013-01-22 10:26:41 +09:00
Behdad Esfahbod 6118781f7f Fix readlink failure
As reported by Raimund Steger.
2013-01-17 19:27:20 -06:00
Akira TAGOH 671bcb34e2 Better fix for 2fe5ddfd
Drop realpath() and fix breakage on Win32
2013-01-17 12:49:16 +09:00
Behdad Esfahbod 2fe5ddfdae Fix FC_PRGNAME default
As reported by Raimund Steger.
2013-01-16 21:01:28 -06:00
Behdad Esfahbod 55d39bcad0 Fix fc-cache crash caused by looking up NULL object incorrectly
We were returning a skiplist node when looking up NULL!
2013-01-16 07:31:15 -06:00
Behdad Esfahbod 106c4f7311 Minor 2013-01-16 07:05:07 -06:00
Akira TAGOH f9ac4c84c9 Improve FcGetPrgname() to work on BSD 2013-01-16 16:35:28 +09:00
Behdad Esfahbod ec5ca08c80 Bug 59379 - FC_PRGNAME
Can be used for per-application configuration.
2013-01-15 20:46:45 -06:00
Akira TAGOH 3f84695104 Bug 50497 - RFE: Add OpenType feature tags support
Add FC_FONT_FEATURES to store the feature tags to be enabled.
2013-01-15 19:40:26 -06:00
Akira TAGOH dffb69ed8c Fix the build fail on MinGW
Reported at http://lists.freedesktop.org/archives/fontconfig/2013-January/004601.html

just warn at the runtime instead of the compile time. it somewhat works
on even MinGW since FcMakeTempfile() isn't used on Win32 so far.
2013-01-15 17:27:12 +09:00
Behdad Esfahbod 8b8f0d2153 Minor 2013-01-14 14:39:12 -06:00
Behdad Esfahbod 8828fffd93 Copy all values from pattern to font if the font doesn't have the element
Bug 59376 - FcFontRenderPrepare enhancement
2013-01-14 14:36:38 -06:00
Behdad Esfahbod 98efed3bca Add atomic ops for Solaris
Patch from Raimund Steger.
2013-01-10 01:17:46 -06:00
Akira TAGOH 8e8a99ae8a Bug 29312 - RFE: feature to indicate which characters are missing to satisfy the language support
Add fc-validate to check the language coverage in a font.
2013-01-09 12:21:33 +09:00
Behdad Esfahbod dc21ed28d6 Fix memory corruption!
In FcStrListCreate() we were increasing reference count of set,
however, if set had a const reference (which is the case for list
of languages), and with multiple threads, the const ref (-1) was
getting up to 1 and then a decrease was destroying the set.  Ouch.

Here's the valgrind error, which took me quite a few hours of
running to catch:

==4464== Invalid read of size 4
==4464==    at 0x4E58FF3: FcStrListNext (fcstr.c:1256)
==4464==    by 0x4E3F11D: FcConfigSubstituteWithPat (fccfg.c:1508)
==4464==    by 0x4E3F8F4: FcConfigSubstitute (fccfg.c:1729)
==4464==    by 0x4009FA: test_match (simple-pthread-test.c:53)
==4464==    by 0x400A6E: run_test_in_thread (simple-pthread-test.c:68)
==4464==    by 0x507EE99: start_thread (pthread_create.c:308)
==4464==  Address 0x6bc0b44 is 4 bytes inside a block of size 24 free'd
==4464==    at 0x4C2A82E: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4464==    by 0x4E58F84: FcStrSetDestroy (fcstr.c:1236)
==4464==    by 0x4E3F0C6: FcConfigSubstituteWithPat (fccfg.c:1507)
==4464==    by 0x4E3F8F4: FcConfigSubstitute (fccfg.c:1729)
==4464==    by 0x4009FA: test_match (simple-pthread-test.c:53)
==4464==    by 0x400A6E: run_test_in_thread (simple-pthread-test.c:68)
==4464==    by 0x507EE99: start_thread (pthread_create.c:308)

Thread test is running happily now.  Will add the test in a moment.
2013-01-08 13:03:35 -06:00
Akira TAGOH 4e6c7d0827 Fix a build fail on mingw
Regarding the change of 596931c8b4
2013-01-08 16:20:40 +09:00
Akira TAGOH d837a7a584 missing header file to declare _mkdir 2013-01-08 16:18:32 +09:00
Akira TAGOH 596931c8b4 Bug 47705 - Using O_CLOEXEC 2013-01-08 15:34:09 +09:00
Akira TAGOH b6b678e71e Missing header file for _mkdir declaration 2013-01-04 11:29:50 +09:00
Behdad Esfahbod 8e143b4ec4 Minor 2013-01-03 04:19:12 -06:00
Behdad Esfahbod 86e3255118 Second try to make Sun CPP happy 2013-01-02 20:16:55 -06:00
Behdad Esfahbod 32c1d32cbd Work around Sun CPP
According to Raimund Steger:

> [...]
> diff --git a/src/Makefile.am b/src/Makefile.am
> index dc082b7..57c34a2 100644
> [...]
> +fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h
> +    $(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | $(GREP) '^[^#]' | awk ' \
> +    /CUT_OUT_BEGIN/ { no_write=1; next; }; \
> +    /CUT_OUT_END/ { no_write=0; next; }; \
> +    { if (!no_write) print; next; }; \
> +    ' - > $@.tmp && \
> +    mv -f $@.tmp $@

Sun Studio CPP seems to insert whitespace in a different way than GCC's CPP.

GCC generates in src/fcobjshash.gperf:

[...]
"family", FC_FAMILY_OBJECT
"familylang", FC_FAMILYLANG_OBJECT
[...]

Sun Studio generates:

[...]
 "family" , FC_FAMILY_OBJECT
 "familylang" , FC_FAMILYLANG_OBJECT
[...]

leading to:

[...]
Making all in src
gmake[2]: Entering directory `/home/rs/src/fontconfig-git/fontconfig/src'
  GEN    fcobjshash.gperf
  GEN    fcobjshash.h
Key link: " " = " ", with key set "".
1 input keys have identical hash values,
use option -D.
gmake[2]: *** [fcobjshash.h] Error 1
gmake[2]: Leaving directory `/home/rs/src/fontconfig-git/fontconfig/src'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/home/rs/src/fontconfig-git/fontconfig'
gmake: *** [all] Error 2

...maybe we could tuck in an additional sed to remove the whitespace, like:

[...]
fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h
    $(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | \
    $(SED) 's/^\s*//;s/\s*,\s*/,/;' | \
    $(GREP) '^[^#]' | \
    $(AWK) '/CUT_OUT_BEGIN/,/CUT_OUT_END/ { next; }; { print; };' \
    > $@.tmp && \
    mv -f $@.tmp $@
[...]

though I'm not sure what kind of guarantee CPP can give us/what easier option I might have missed...
2013-01-02 19:04:17 -06:00
Behdad Esfahbod b1510145e7 Fix build around true/false 2013-01-02 18:57:47 -06:00
Behdad Esfahbod 46ab96b8fa Fix more warnings.
Linux build and mingw32 cross build warning-free now.
2013-01-02 18:00:09 -06:00
Behdad Esfahbod ec8a40d238 Fix build and warnings on win32 2013-01-02 17:35:56 -06:00
Behdad Esfahbod 766bed901f Fix compiler warnings 2013-01-02 02:19:04 -06:00
Behdad Esfahbod 93fb1d4bab Remove FcSharedStr* 2013-01-02 02:18:02 -06:00
Behdad Esfahbod 6b14378107 Fixup fcobjs.c
Ouch!
2013-01-02 01:54:38 -06:00
Behdad Esfahbod 6047ce7b9f Warn about undefined/invalid attributes during config parsing 2013-01-02 01:31:34 -06:00
Behdad Esfahbod b604f10c0c Make fcobjs.c thread-safe
With this, the library should be threadsafe as far as my analysis goes!
2013-01-02 01:09:43 -06:00
Behdad Esfahbod 2ae07bbcd2 Make FcDirCacheDispose() threadsafe 2013-01-02 01:04:58 -06:00
Behdad Esfahbod 68b8ae9af8 Make cache hash threadsafe
This concludes my first pass at making fontconfig threadsafe.  Now to
testing and actually fixing it!
2013-01-02 01:04:47 -06:00
Behdad Esfahbod adb03b730d Make random-state initialization threadsafe 2013-01-02 01:04:03 -06:00
Behdad Esfahbod 91dd7d28ff Add a big cache lock
Not used yet.
2013-01-02 01:03:49 -06:00
Behdad Esfahbod 8d2bbb193a Make cache refcounting threadsafe 2013-01-02 01:03:22 -06:00
Behdad Esfahbod 31ee38e541 Minor 2013-01-02 01:03:18 -06:00
Behdad Esfahbod b8f238e49d Make FcCacheIsMmapSafe() threadsafe 2013-01-02 01:03:06 -06:00
Behdad Esfahbod b27a22aae9 Minor 2013-01-02 01:01:52 -06:00
Behdad Esfahbod 0552f26016 Make default-FcConfig threadsafe 2013-01-02 01:01:29 -06:00
Behdad Esfahbod e53f5da54f Minor 2013-01-02 00:58:52 -06:00
Behdad Esfahbod 7ae24b4554 Refactor; contain default config in fccfg.c 2013-01-02 00:58:31 -06:00
Behdad Esfahbod 32b0d88923 Make FcDefaultFini() threadsafe 2013-01-02 00:57:26 -06:00
Behdad Esfahbod 7019896c99 Make FcInitDebug() idempotent 2013-01-02 00:53:16 -06:00
Behdad Esfahbod b97ab0c949 Make FcGetDefaultLang and FcGetDefaultLangs thread-safe 2013-01-02 00:52:14 -06:00
Behdad Esfahbod 64af9e1917 Make refcounts, patterns, charsets, strings, and FcLang thread-safe 2013-01-02 00:51:00 -06:00
Behdad Esfahbod 814871b2aa Add thread-safety primitives 2013-01-02 00:38:36 -06:00
Behdad Esfahbod b53744383d Fix build stuff 2013-01-02 00:38:18 -06:00
Behdad Esfahbod db6d86a6c1 Remove shared-str pool
We used to have a shared-str pool.  Removed to make thread-safety
work easier.  My measurements show that the extra overhead is not
significant by any means.
2013-01-02 00:37:00 -06:00
Behdad Esfahbod ed41b23765 Switch .gitignore to git.mk 2013-01-02 00:36:12 -06:00
Behdad Esfahbod d58c31e6dc Use a static perfect hash table for object-name lookup
The hash table is generated by gperf.  For runtime element types, we use
a append-only linked list.

A bit clumsy, but I think I got it right.
2013-01-02 00:35:39 -06:00
Behdad Esfahbod 7c0f79c5fe Deprecate FcName(Un)RegisterObjectTypes / FcName(Un)RegisterConstants
These never worked as intended.  The problem is, if Fontconfig tries to
read config files when these new types / constants are not registered,
it errs.  As a result, no defined types / constants are usable from
config files.  Which makes these really useless.  Xft was the only user
of this API and even there it's not really used.  Just kill it.

One inch closer to thread-safety since we can fix the object-type hash
table at compile time.
2013-01-01 22:55:08 -06:00
Behdad Esfahbod a498f2f717 Minor 2013-01-01 20:27:54 -06:00
Behdad Esfahbod 8198127b25 Don't crash in FcPatternFormat() with NULL pattern 2013-01-01 20:20:31 -06:00
Behdad Esfahbod c9581b47c4 Don't crash in FcPatternDestroy with NULL pattern 2013-01-01 20:20:12 -06:00
Behdad Esfahbod e7d3e21632 Add NULL check 2013-01-01 20:19:57 -06:00
Behdad Esfahbod 5bb5da4c4a Refuse to set value to unsupported types during config too 2013-01-01 20:19:57 -06:00
Behdad Esfahbod 3878a12541 Make FC_DBG_OBJTYPES debug messages into warnings
And remove FC_DBG_OBJTYPES since it has no use now.
2013-01-01 20:19:53 -06:00
Behdad Esfahbod 209750a4e0 Warn if <name target="font"> appears in <match target="pattern"> 2012-12-31 20:11:12 -06:00
Behdad Esfahbod 31ce352bb3 Initialize matrix during name parsing
Before:
$ fc-match sans:matrix=2 -v | grep matrix
	matrix: [2 6.95183e-310; 0 0](s)

After:
$ fc-match sans:matrix=2 -v | grep matrix
	matrix: [2 0; 0 1](s)
2012-12-31 19:56:06 -06:00
Behdad Esfahbod b1630dc00e Enable fcarch assert checks even when FC_ARCHITECTURE is explicitly given
After all, if the asserts fail, the resulting library simply can't be
working correctly.
2012-12-31 17:20:29 -06:00
Behdad Esfahbod a603be89cd Unbreak build when FC_ARCHITECTURE is defined 2012-12-31 17:00:19 -06:00
Behdad Esfahbod 1fbb0b3b15 Don't warn if an unknown element is used in an expression
The type will be resolved at runtime...

For example, we can do this now without getting a warning:

<match target="font">
  <test name="scalable" compare="eq">
    <bool>false</bool>
  </test>
  <edit name="pixelsizefixupfactor" mode="assign">
    <divide>
      <name target="pattern">pixelsize</name>
      <name target="font"   >pixelsize</name>
    </divide>
  </edit>
  <edit name="matrix" mode="assign">
    <times>
      <name>matrix</name>
      <matrix>
        <name>pixelsizefixupfactor</name> <double>0</double>
        <double>0</double> <name>pixelsizefixupfactor</name>
       </matrix>
    </times>
  </edit>
  <edit name="size" mode="assign">
    <divide>
      <name>size</name>
      <name>pixelsizefixupfactor</name>
    </divide>
  </edit>
</match>

Previously the last edit was generating:

Fontconfig warning: "/home/behdad/.local/etc/fonts/conf.d/00-scale-bitmap-fonts.conf", line 29: saw unknown, expected number
2012-12-30 19:08:42 -06:00
Behdad Esfahbod 51b0044648 Allow target="font/pattern/default" in <name> elements
Based on idea from Raimund Steger.

For example, one can do something like this:

<match target="font">
  <test name="scalable" compare="eq">
    <bool>false</bool>
  </test>
  <edit name="pixelsizefixupfactor" mode="assign">
    <divide>
      <name target="pattern">pixelsize</name>
      <name target="font"   >pixelsize</name>
    </divide>
  </edit>
  <edit name="matrix" mode="assign">
    <times>
      <name>matrix</name>
      <matrix>
        <name>pixelsizefixupfactor</name> <double>0</double>
        <double>0</double> <name>pixelsizefixupfactor</name>
       </matrix>
    </times>
  </edit>
</match>

Part of work to make bitmap font scaling possible.  See thread
discussion:

http://lists.freedesktop.org/archives/fontconfig/2012-December/004498.html
2012-12-30 19:01:23 -06:00
Behdad Esfahbod d7e1965aa0 Remove memory accounting and reporting
That belongs in tools like cairo/util/malloc-stat.so
2012-12-29 23:12:07 -05:00
Behdad Esfahbod d823bb3cad Fixup from 4f6767470f 2012-12-29 22:57:53 -05:00
Behdad Esfahbod eb9ffac7e5 Fix more warnings 2012-12-29 22:56:14 -05:00
Behdad Esfahbod 1404af312a Fix warning 2012-12-29 22:55:36 -05:00
Behdad Esfahbod dd69d96e06 Fix sign-compare warnings 2012-12-29 22:47:49 -05:00
Behdad Esfahbod 4ad3a73691 Fix more warnings 2012-12-29 22:37:19 -05:00
Behdad Esfahbod 83d8019011 Fix unused-parameter warnings 2012-12-29 22:32:56 -05:00
Behdad Esfahbod 24cdcf52ab Fix compiler warnings 2012-12-29 22:24:24 -05:00
Behdad Esfahbod 4f6767470f Parse matrices of expressions
Previously a <matrix> element could only accept four <double> literals.
It now accepts full expressions, which can in turn poke into the
pattern, do math, etc.
2012-12-29 21:39:06 -05:00
Behdad Esfahbod 927dd3ddb5 Fix typo
Ouch, this has been wrong since 2004...  I guess no one uses <patelt>
stuff.
2012-12-29 20:14:07 -05:00
Akira TAGOH 9ce36f4bbe Check the system font to be initialized
config->fonts is an array and checking if config->fonts is a null
will not be useful.
2012-12-11 18:53:57 +09:00
Akira TAGOH 58040349e8 Fix a memory leak 2012-12-11 12:38:42 +09:00
Akira TAGOH 5ea3118ad6 Fix a typo that accessing to the out of array 2012-12-11 12:35:02 +09:00
Akira TAGOH cef2b50c66 clean up
ret won't be -1 if HAVE_STRUCT_DIRENT_D_TYPE isn't defined.
2012-12-11 12:30:05 +09:00
Akira TAGOH 608c5b590b Remove the duplicate null-check 2012-12-10 10:54:47 +09:00
Akira TAGOH e7954674eb Fix the wrong estimation for the memory usage information in fontconfig 2012-12-07 19:09:36 +09:00
Akira TAGOH 959442bca1 Fix a typo 2012-12-06 19:49:05 +09:00
Akira TAGOH 9231545c6b Do not show the deprecation warning if it is a symlink 2012-12-05 18:13:25 +09:00
Akira TAGOH 3d3629f86a Fix a potability issue about stdint.h 2012-11-27 18:25:11 +09:00
Akira TAGOH c20ac78b01 Bug 57114 - regression on FcFontMatch with namelang
After 7587d1c99d applied, family,
style, and fullname is localized against current locale or lang
if any though, the string in other languages were dropped from
the pattern. this caused unexpected mismatch on the target="font"
rules.

This fix adds other strings at the end of the list.
2012-11-15 16:37:32 +09:00
Akira TAGOH 8890f94438 Fix wrongly squashing for the network path on Win32.
Patch from Diego Santa Cruz
2012-10-09 11:03:03 +09:00
Akira TAGOH 535e0a37d6 Bug 54138 - X_OK permission is invalid for win32 access(..) calls
X_OK checking was added back in 8ae1e3d5dc
which was removed due to the same reason in
238489030a.
apparently the test case in Bug#18934 still works without it.
so I'm removing it again to get this working on Windows.
2012-08-31 12:39:38 +09:00
Akira TAGOH 375cdbce9d Bug 53585 - Two highly-visible typos in src/fcxml.c 2012-08-16 20:33:12 +09:00
Akira TAGOH da9400212d Fix a build fail with gcc 2.95, not supporting the flexible array members. 2012-07-09 14:46:51 +09:00
Marius Tolzmann e5a59eac90 Fix warning about deprecated, non-existent config includes
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 8: reading configurations from ~/.fonts.conf.d is deprecated.

Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 9: reading configurations from ~/.fonts.conf is deprecated.

Be polite and do not issue the warning if deprecated config includes
(e.g. ~/.fonts.conf.d and/or ~/.fonts.conf) do not exist.
2012-06-22 13:58:46 +09:00
Marius Tolzmann 3a5e9bc75d Fix newline in warning about deprecated config includes 2012-06-22 13:57:13 +09:00
Akira TAGOH 4353df754f clean up the lock file properly on even hardlink-not-supported filesystem. 2012-06-18 10:52:21 +09:00
Akira TAGOH 997a64a67b Fix the fail of make install with --disable-shared on Win32 2012-06-14 11:27:31 +09:00
Akira TAGOH cd280f6532 Fix a build fail on MINGW 2012-06-13 20:01:30 +09:00
Akira TAGOH b447fc5d52 Bug 50835 - Deprecate FC_GLOBAL_ADVANCE
FC_GLOBAL_ADVANCE is deprecated. this flag is simply ignored on
freetype 2.4.5 or later.
2012-06-11 23:28:55 +09:00
Mark Brand 0b20bd0281 fix building for WIN32
8c255fb185 moved some code out of switch
but did not declare 'buffer'. Also, replacing the "break" with
"goto bail" neglected the WIN32 specific code.
2012-06-11 20:13:02 +09:00
Akira TAGOH cf70eaa3bf Bug 50525 - superfluous whitespace in the style 2012-06-08 19:41:59 +09:00
Akira TAGOH f4103bf708 fcdefault: Add the lang object at FcConfigSubstituteWithPat() only when kind is FcMatchPattern 2012-06-08 19:17:57 +09:00
Akira TAGOH 07e52eeb09 fcdefault: no need to set FC_LANG in FcDefaultSubstitute() anymore 2012-06-08 15:54:48 +09:00
Akira TAGOH 550fd49d4f Add the default language to the pattern prior to do build the substitution
the default language is referred from the FC_LANG environment variable
or the current locale
2012-06-08 15:48:30 +09:00
Akira TAGOH 2261a64ce1 fcdefault: fallback if the environment variables are empty
try to fallback if FC_LANG, LC_ALL, LC_CTYPE and LANG is empty
2012-06-08 15:47:52 +09:00
Akira TAGOH bbc8fb5ba7 Bug 32853 - Export API to get the default language
Add a new API FcGetDefaultLangs() to export the string sets of the default
languages.
2012-06-08 15:18:30 +09:00
Akira TAGOH 1b692d8ab9 Fix the wrong estimation for the memory usage information in fontconfig 2012-06-01 19:06:17 +09:00
Akira TAGOH 5254a6630f Fix a typo and polish the previous change 2012-05-31 13:07:29 +09:00
Akira TAGOH 4a741e9a0a Fix the build fail on Solaris
It's introduced by 0ac6c98294.
Use lstat() and S_ISDIR() to check if it's the directory or not
if there are no d_type in struct dirent.
2012-05-30 18:30:49 +09:00
Mikhail Gusarov 0ac6c98294 Fix cache aging for fonts on FAT filesystem under Linux
Windows does not update mtime of directory on FAT filesystem when
file is added to it or removed from it. Fontconfig uses mtime of
directory to check cache file aging and hence fails to detect
newly added or recently removed files.

This changeset detects FAT filesystem (currently implemented for
Linux) and adds generating checksum of directory entries instead
of using mtime which guarantees proper cache rebuild.

For non-FAT filesystems this patch adds single syscall per directory
which is negligeable overhead.

This fixes bug https://bugs.freedesktop.org/show_bug.cgi?id=25535

Signed-off-by: Mikhail Gusarov <dottedmag@dottedmag.net>
2012-05-28 16:46:04 +09:00
Akira TAGOH dc2da23e69 Move statfs/statvfs wrapper to fcstat.c and add a test for the mtime broken fs
just rework to share the efforts between FcIsFsMmapSafe() and FcIsFsMtimeBroken().
2012-05-28 16:46:01 +09:00
Mikhail Gusarov 6a83c1ad40 Move FcStat to separate compilation unit
FcStat() logic is quite complicated in presence of various semi-broken operating
systems and filesystems, split it out in order to make it a bit easier.

Signed-off-by: Mikhail Gusarov <dottedmag@dottedmag.net>
2012-05-28 16:01:00 +09:00
Akira TAGOH 26160366d7 fcatomic: fallback to create a directory with FcAtomicLock
link(2) might be failed on the filesystem that doesn't support
the hard link. e.g. FcAtomicLock() always fails on FAT filesystem
when link(2) is available.
So that may be a good idea to fallback if link(2) is failed.
2012-05-28 15:59:33 +09:00
Akira TAGOH 2837c63876 Bug 33644 - Fontconfig doesn't match correctly in <test>
Warn if the multiple values is set to <test>, including the case of
in <alias> because the behavior isn't intuitive since so many users
is asking for a help to get things working for their expectation.

Use multiple <match>s or <alias>es for OR operator and
multiple <test>s for AND operator.
2012-05-25 13:11:25 +09:00
Akira TAGOH 8c255fb185 Bug 20411 - fontconfig doesn't match FreeDesktop directories specs
Allows reading configuration files, fonts and cache files from
the directories where the XDG Base Directory Specification defines.

the old directories are still in the configuration files for
the backward compatibility.
2012-05-18 11:12:50 +09:00
Akira TAGOH bc4517d8e5 Bug 19128 - Handling whitespace in aliases
Add a new attribute `ignore-blanks' to <test>.
When this is set to "true", any blanks in the string will be ignored
on comparison.  This takes effects for compare="eq" or "not_eq" only.

Also changed the behavior of the comparison on <alias> too.
2012-05-14 12:06:12 +09:00
Akira TAGOH 5ac12c0e94 fcarch.c: get rid of the duplicate definition of FC_MAX
FC_MAX is also available in src/fcint.h
2012-05-10 16:47:09 +09:00
Keith Packard d81407611b Deal with architectures where ALIGNOF_DOUBLE < 4
This patch isn't really tested as I don't have such a machine, but I
have a bug report that on m68k machines, double values are aligned on
smaller than 4 byte boundaries. If ALIGNOF_DOUBLE < sizeof(int),
the "expected" sizeof of FcValue is miscomputed. Use the maximum of 4
(sizeof (int)) and ALIGNOF_DOUBLE when computing the expected size of
FcValue.

Signed-off-by: Keith Packard <keithp@keithp.com>
2012-05-02 12:01:38 +09:00
Akira TAGOH d2718257f9 Output more verbose debugging log to show where to insert the element into the value list 2012-05-01 20:22:17 +09:00
Akira TAGOH 7d65f9f514 Bug 39278 - make usage of mmap optional
Stop using mmap() if the cache file is stored on NFS.
also added FONTCONFIG_USE_MMAP environment variable to enforce the use of
or not the use of mmap(2) regardless of what the filesystem the cache files
are stored on.
2012-04-25 16:38:01 +09:00
Akira TAGOH 7587d1c99d Bug 27765 - FcMatch() returns style in wrong language
Add "namelang" object to obtain the localized name in the font regardless
of the lang object. it's applied to "familylang", "stylelang" and
"fullnamelang" alltogether. this would helps if one wants to enforce
selecting them in the specific language if any.  the default value for
the namelang object is determined from current locale.
2012-04-24 12:44:56 +09:00
Akira TAGOH 06d6b7c312 Create CACHEDIR.TAG when fc-cache is run or only when the cache directory is created at the runtime.
Also add FcCacheCreateTagFile() API to do create CACHEDIR.TAG on the cache
directory.
2012-04-23 11:26:32 +09:00
Akira TAGOH 22dc546090 Fix a build issue again when no regex functions available
Reported by Jon TURNEY
2012-04-20 20:12:24 +09:00
Akira TAGOH dd2a3d3520 Bug 25151 - Move cleanCacheDirectory() from fc-cache.c into
the library

Add FcDirCacheScan() API to clean up the cache files in the directory.
2012-04-18 12:55:23 +09:00
Keith Packard 9e62fcedfe Use posix_fadvise to speed startup
Given that fontconfig will scan all of the cache file data during the
first font search, ask the kernel to start reading the pages right away.

Signed-off-by: Keith Packard <keithp@keithp.com>
2012-04-17 12:20:25 +09:00
Akira TAGOH 470e92c9db Bug 27526 - Compatibility fix for old windows sytems
Patch from Gianluigi Tiesi
2012-04-12 14:01:25 +09:00
Akira TAGOH ac6271dbac Bug 48573 - platform without regex do not have also REG_XXX defines
Fix a build issue on the platforms where regex isn't available
2012-04-12 11:01:12 +09:00
Akira TAGOH 9231d79ad1 Bug 28491 - Allow matching on FC_FILE
Allow :file=/path/to/font/file on matching
2012-04-11 16:36:36 +09:00
Akira TAGOH 2589207cfd Bug 26830 - Add search for libiconv non-default directory
Add --with-libiconv, --with-libiconv-includes and --with-libiconv-lib
to specify the directory where libiconv might be installed.
2012-04-10 18:45:31 +09:00
Akira TAGOH ddefa5021f Bug 22862 - <alias> ignores <match> <test>s
Allow to use the test elements in the alias element.
2012-04-06 11:14:42 +09:00
Akira TAGOH e181ab4de5 Bug 29341 - Make some fontconfig paths configurable
Add configure options to set the directory to be installed:
  --with-templatedir for the configuration files a.k.a.
    /etc/fonts/conf.avail
  --with-baseconfigdir for fonts.conf etc a.k.a. /etc/fonts
  --with-configdir for the active configuration files a.k.a.
    /etc/fonts/conf.d
  --with-xmldir for fonts.dtd etc

and the default path for templatedir is changed to
${datadir}/fontconfig/conf.avail
2012-04-05 12:23:49 +09:00
Akira TAGOH 9fe7c986c6 Bug 48020 - Fix for src/makealias on Solaris 10
Use the command substitution `command` instead of $(command) for
Solaris 10.
2012-03-29 15:43:38 +09:00
Akira TAGOH becbdaebe3 Move workaround macros for fat binaries into the separate header file 2012-03-29 12:50:47 +09:00
Akira TAGOH 4a060729a1 fcpat: Increase the number of buckets in the shared string hash table
This is a reasonably conservative increase in the number of buckets in the hash
table to 251.  After FcInit(), there are 240 shared strings in use on my system
(from configuration files I assume).  The hash value is stored in each link in
the chains so comparison are actually not very expensive.  This change should
reduce the average length of chains by a factor of 8.  With the reference
counted strings, it should keep the average length of chains to about 2.  The
number of buckets is prime so as not to rely too much on the quality of the
hash function.

https://bugs.freedesktop.org/show_bug.cgi?id=17832#c5

Patch from Karl Tomlinson
2012-03-28 13:42:01 +09:00
Akira TAGOH d8dcff7b96 Bug 17832 - Memory leaks due to FcStrStaticName use for external patterns
Use the reference-counted strings instead of the static strings

Patch from Karl Tomlinson
2012-03-28 13:42:01 +09:00
Akira TAGOH ea1c6ea337 Fix a memory leak in FcDirScanConfig() 2012-03-27 21:06:36 +09:00
Akira TAGOH 92ac054ce5 fcmatch: Set FcResultMatch at the end if the return value is valid.
In the previous code, the result of 'result' in the argument for
FcFontSetSort() and FcFontSetMatch() wasn't predictable and not reliable to
check if the return value is valid or not. this change is to ensure if it's
performed successfully.
2012-03-22 19:15:27 +09:00
Jeremy Huddleston 8cc4498122 fcarch: Check for architecture signature at compile time rather than configure time
https://bugs.freedesktop.org/show_bug.cgi?id=20208

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
2012-03-21 11:59:01 +09:00
Akira TAGOH 93460f93e9 Fix a build issue due to the use of non-portable variables
$< isn't supported in BSD make say. $(RM) is pre-defined in GNU make
though, not in BSD make say. so changed to check on configure if it's
pre-defined by make, otherwise set the appropriate command to $(RM).

This would be a workaround until it has the certain pre-defined value.
2012-03-16 16:34:37 +09:00
Akira TAGOH a5b609196f Revert "Fix a build fail on some environment."
This reverts commit 0fdfddf2ac.

Conflicts:

	doc/Makefile.am
2012-03-16 11:55:30 +09:00
Akira TAGOH 0fdfddf2ac Fix a build fail on some environment. 2012-03-10 23:30:30 +09:00
Akira TAGOH 0ca752dd25 Check null value for given object to avoid possibly segfaulting 2012-03-07 17:56:39 +09:00
Akira TAGOH 1f01c4b60c Bug 23336 - unable to display bitmap-only (SFNT) TrueType or OpenType
Force to find out a size for bitmap-only ttf to avoid the blank glyphs
in the font.

Patch from Bug Fly
2012-03-07 17:32:14 +09:00
Akira TAGOH a13d518fdd Bug 41694 - FcCache functions have random-number-generator side effects
Use the own random number generator state if possible.
2012-02-28 12:52:25 +09:00
Akira TAGOH 5e4ea1104c Do not update stream->pos when seeking is failed. 2012-02-22 16:50:13 +09:00
Akira TAGOH 71b14d645f Bug 46169 - Pointer error in FcConfigGlobMatch
Fix possibly accessing the invalid memory and a crash in the worst case
when the glob string is longer than the string.
2012-02-22 16:30:05 +09:00
Mike Frysinger 3abf981542 makealias: handle missing funcs better
When adding new functions, if the actual definition doesn't match the
header (say due to a typo), the regeneration of the internal headers
get confused and output bad cpp logic.  This causes gcc to barf due
to mismatched #ifdef/#endif.  Which is a pain to figure out due to
the sheer voulme of generated code.

So tweak the makealias script to detect this case and error out.
While we're here, improve the cpp output a bit to indent, include
comments, and merge similar ifdef blocks.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-02-21 14:15:58 -05:00
Mike Frysinger d9c4462778 FcObjectValidType: tweak -1 checking
Newer gcc doesn't like when you switch on an enum and use a value
that isn't declared:

fcname.c: In function 'FcObjectValidType':
fcname.c:299:2: warning: case value '4294967295'
	not in enumerated type 'FcType' [-Wswitch]

So tweak the logic to avoid this warning.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-02-21 14:15:58 -05:00
Mike Frysinger 97c9506e4d fix build warnings when using --with-arch
Latest configure code will setup FC_ARCHITECTURE directly rather than
going through ARCHITECTURE, so update fcarch.h accordingly.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-02-21 14:15:58 -05:00
Mike Frysinger 123d344f45 FcName{,Get}Constant: constify string input
These funcs don't modify the incoming string, so add const markings.
This is the "right thing", shouldn't change the ABI, and fixes some
gcc warnings:

fccfg.c: In function 'FcConfigEvaluate':
fccfg.c:916:2: warning: passing argument 1 of 'IA__FcNameConstant'
	discards 'const' qualifier from pointer target type [enabled by default]
fcalias.h:253:34: note: expected 'FcChar8 *' but
	argument is of type 'const FcChar8 *'

fcxml.c: In function 'FcTypecheckExpr':
fcxml.c:604:2: warning: passing argument 1 of 'IA__FcNameGetConstant'
	discards 'const' qualifier from pointer target type [enabled by default]
fcalias.h:251:37: note: expected 'FcChar8 *' but
	argument is of type 'const FcChar8 *'

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-02-21 14:15:58 -05:00
Mike Frysinger 647569d029 FcStat: change to FcChar8 for first arg
This shouldn't affect the ABI, makes FcStat more like the rest of the
fontconfig API, and fixes warnings where we pass FcChar8* pointers in
to this func from other places.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-02-21 14:15:58 -05:00
Mike Frysinger e3a66c2937 delete unused variables
Newer gcc is better at detecting set-but-unused variables.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-02-21 14:15:58 -05:00
Mike Frysinger 6f020161e8 FcStrPlus: optimize a little
We've already calculated the lengths of these strings, so re-use those
values to avoid having to rescan the strings multiple times.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-02-21 14:09:51 -05:00
Akira TAGOH a18ca17b62 Bug 40452 - Running 'fc-match --all' core dumps when no fonts are installed
This would changes the behavior of FcFontSort().
it won't returns NULL afterward.
2012-02-21 15:29:56 +09:00
Akira TAGOH cbb6ee1662 Bug 35517 - Remove Apple Roman cmap support
Get rid of the apple roman encoding related code
2012-02-21 15:16:14 +09:00
Behdad Esfahbod 082caefb6d Bug 41171 - Invalid use of memset 2011-09-24 13:52:05 -04:00
Behdad Esfahbod bf3bfa72d9 Fix stupid bug in FcFontSort()
I broke FcFontSort() language handling at the end of 2008 with this
commit: c7641f28

G-d knows how many of the lang-matching bugs in bugzilla will be
fixed by this changed...

I'm really sorry, everyone!
2011-06-22 13:06:19 -04:00
Behdad Esfahbod e61eba94ef Switch fc-cat to use FcPatternFormat()
Added the a builtin "fccat" to FcPatternFormat().
2011-06-20 11:55:25 -04:00
Behdad Esfahbod a15ac5d384 Switch fc-match to use FcPatternFormat()
Fix small bug in FcPatternFormat that was letting element-default to
consume the convertor sequence.
2011-06-20 11:32:46 -04:00
Behdad Esfahbod e0be405a1d Bug 26718 - "fc-match sans file" doesn't work
- Do not throw away FC_FILE in FcNameUnparse
- Update the builtin "fclist" format to remove FC_FILE properly instead
- Switch fc-list to use FcPatternFormat()

Note that I had previously broken fc-list and it was not showing the
file name anymore.  No one noticed that it seems!  Now fixed.
2011-06-20 11:22:17 -04:00
Behdad Esfahbod 0fcf866d44 Bug 36577 - Updating cache with no-bitmaps disables bitmap fonts...
Do not remove blacklisted fonts during cache generation.  We already
apply the blacklist when reading the caches.  The idea always has been
that the config should not affect caches built, although that design
was tarnished with the introduction of target="scan" configurations.
2011-06-20 11:07:56 -04:00
Behdad Esfahbod 1c475d5c8c Bug 35587 - Add padding to make valgrind and glibc not hate each other 2011-03-28 16:33:12 -04:00
Behdad Esfahbod c21fb9ac27 Always define FcStat as a function
Such that first arg is const char *.  We also need to make more changes
in that function as part of some other bug.
2011-03-14 18:49:21 -03:00