Commit Graph

821 Commits

Author SHA1 Message Date
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