Commit Graph

942 Commits

Author SHA1 Message Date
Akira TAGOH ead7275e05 Bug 90148 - Don't warn if cachedir isn't specified
only warn when FONTCONFIG_FILE or FONTCONFIG_PATH is set.

Bug 90148 - Don't warn if cachedir isn't specified
2015-05-18 14:03:50 +09:00
Akira TAGOH 3a4136778c Drop unmaintained code
Use four-byte code for foundry as is instead.

https://bugs.freedesktop.org/show_bug.cgi?id=88679
2015-04-22 16:29:25 +09:00
Руслан Ижбулатов f6e6a8a22b W32: Support cache paths relative to the root directory
Paths starting with '/' don't make sense on W32 as-is,
prepend the installation root directory to them.

This allows the cache to be contained within a particular
fontconfig installation (as long as the default
--with-cache-dir= is overriden at configure time).
2015-04-09 15:19:17 +09:00
Akira TAGOH 7bc07cf6c2 Fix SIGFPE 2015-03-30 15:18:44 +09:00
Akira TAGOH e92c92ff22 Fix unknown attribute in Win32 2015-03-25 12:10:48 +09:00
Akira TAGOH c965c9f677 Bug 89617 - FcConfigAppFontAddFile() returns false on any font file
Prior to the change of 32ac7c75e8
FcConfigAppFontAddFile() always returned FcTrue no matter what
fonts was added. after that, it always returned FcFalse because
adding a font doesn't add any subdirs with FcFileScanConfig().
so changing that to simply ignore it.

Also fixing it to return FcFalse if non-fonts was added, i.e.
FcFreeTypeQuery() fails.

https://bugs.freedesktop.org/show_bug.cgi?id=89617
2015-03-23 13:31:57 +09:00
Akira TAGOH 7301f2f028 Remove the dead code 2015-03-23 13:18:49 +09:00
Akira TAGOH f5b1e0ab97 Fix an infinite loop in FcBlanksIsMember() 2015-03-09 12:20:22 +09:00
Akira TAGOH 484834c186 Fix a bug in the previous change forFcBlanksIsMember() 2015-03-06 11:15:26 +09:00
Akira TAGOH ed74a58ccc Fix a segfault when OOM happened.
Reported by Matt Breedlove
2015-03-06 11:10:05 +09:00
Akira TAGOH 96a3f6879c Improve the performance on searching blanks
After the change of d6a5cc665a
we have a lot of code points in FcBlanks. doing the linear search
on the array isn't comfortable anymore.
So re-implementing FcBlanksIsMember() to use the binary search.

Figuring out how much improved after this change depends on
how many fonts proceed with fc-cache say though, it's about 20 times
faster here on testing. which sounds good enough for
improvement.
2015-03-05 17:52:04 +09:00
Behdad Esfahbod d997d7c770 Simplify some more 2015-03-03 16:00:39 -08:00
Behdad Esfahbod 9c99baba66 Remove dead code after previous commit 2015-03-03 16:00:39 -08:00
Akira TAGOH 2f311c562d Fix the array allocation 2015-03-03 11:30:12 +09:00
Akira TAGOH f18f2f88f2 Don't add FC_LANG when it has "und"
to avoid the situation to find the better fallback font.

https://code.google.com/p/chromium/issues/detail?id=392724 has
more words to explain the details.

https://bugs.freedesktop.org/show_bug.cgi?id=81185
2015-03-02 11:35:42 +09:00
Akira TAGOH d6a5cc665a Hardcode the blanks in the library
https://bugs.freedesktop.org/show_bug.cgi?id=79956
2015-02-27 14:18:32 +09:00
Akira TAGOH 97cf7ec4d7 Rework again to copy the struct dirent
Assuming that d_name is the last member of struct dirent.
In POSIX, the maximum length of d_name is defined as NAME_MAX
or FILENAME_MAX though, that assumption may be wrong on some
platforms where defines d_name as the flexible array member
and allocate the minimum memory to store d_name.

Patch from Raimund Steger
2015-02-27 12:04:44 +09:00
Michael Haubenwallner 1add10bfbc Ensure config.h is included first, bug#89336.
config.h may define ABI-specific macros, especially for AIX,
so has to be included before any system header - via fcint.h.

https://bugs.freedesktop.org/show_bug.cgi?id=89336
2015-02-26 21:06:16 +09:00
Akira TAGOH 8809d1b73b Copy the real size of struct dirent
In some platforms, d_name is defined as the flexible array member.
We may need to compute the real size for that case.
2015-02-26 14:09:33 +09:00
Akira TAGOH dd427253cc filter can be null 2015-02-25 17:36:50 +09:00
Akira TAGOH 45018e6979 Fix pointer cast warning on win32 2015-02-24 15:25:16 +09:00
Akira TAGOH f43c58189b ifdef'd the unnecessary code for win32 2015-02-24 15:01:14 +09:00
Akira TAGOH ed0d705e22 Fix a build fail on some non-POSIX platforms
Use own scandir function. according to this change,
we don't need -Werror things in configure anymore.
2015-02-23 15:21:08 +09:00
Behdad Esfahbod d6d5adeb79 Fix symbol cmap handling
A while back we removed Apple Roman encoding support.  This broke
symbol fonts (Wingdings, etc) because those fonts come with two
cmaps:

  1) platform=1,encoding=0, aka Apple Roman, which maps identity,
  2) platform=3,encoding=0, aka MS Symbol font

Now, the reason the Apple Roman removal "broke" these fonts is
obvious, and for the better: these fonts were mapping ASCII and
other Latin chars to symbols.

The reason the fonts didn't work anymore, however, is that we were
mishandling the MS symbol-font cmaps.  In their modern incarnation
they are like regular non-symbol-font cmap that map PUA codepoints
to symbols.  We want to expose those as such.  Hence, this change
just removes the special-handling for that.

Now, the reason this confusion happened, if I was to guess, is either
that FreeType docs are wrong saying that FT_ENCODING_MS_SYMBOL is
the "Microsoft Symbol encoding, used to encode mathematical symbols":

  http://www.kostis.net/charsets/symbol.htm

or maybe it started that way, but turned into also mapping MS symbol-
font cmaps, which is a completely different thing.  At any rate, I
don't know if there are any fonts that use this thing these days, but
the code here didn't seem to produce charset for any font.  By now I'm
convinced that this change is the Right Thing to do.  The MS Symbol
thing was called AdobeSymbol in our code by the way.

This fixes the much-reported bug that windings, etc are not usable
with recent fontconfig:
https://bugs.freedesktop.org/show_bug.cgi?id=58641

Now I see PUA mappings reported for Wingdings.

This also fixes:
Bug 48947 - Drop the non-Unicode cmap support gradually
https://bugs.freedesktop.org/show_bug.cgi?id=48947
since the AdobeSymbol was the last non-Unicode cmap we were
trying to parse (very incorrectly).

Lots of code around this change can be simplified.  I'll push those
out (including removing the table itself) in subsequent changes.
2015-01-21 14:13:36 -08:00
Akira TAGOH 365809938e Bump the cache version to 5
FcPattern isn't compatible to the older.
2014-12-25 13:11:21 +09:00
Behdad Esfahbod 66db69a6d9 Treat color fonts as scalable
All color fonts are designed to be scaled, even if they only have
bitmap strikes.  Client is responsible to scale the bitmaps.  This
is in constrast to non-color strikes...

Clients can still use FC_OUTLINE to distinguish bitmap vs outline
fonts.  Previously FC_OUTLINE and FC_SCALABLE always had the same
value.  Now FC_SCALABLE is set to (FC_OUTLINE || FC_COLOR).

Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=87122
2014-12-14 13:57:24 -08:00
Behdad Esfahbod dbc7c4a2cf Add FC_COLOR
Only adds "color" to pattern if FreeType version supports color.

Based on patch from Jungshik Shin.
2014-12-14 13:40:02 -08:00
Behdad Esfahbod fc7e1a9497 Fix buffer overflow in copying PS name
As reported on the mailing list by Tanel Liiv.  Found using American Fuzzy Lop.
2014-12-12 21:42:35 -08:00
Akira TAGOH 32ac7c75e8 Returns False if no fonts found
https://bugs.freedesktop.org/show_bug.cgi?id=86950
2014-12-09 19:06:46 +09:00
Akira TAGOH 1082161ea3 Add FcRangeGetDouble()
https://bugs.freedesktop.org/show_bug.cgi?id=82876
2014-09-25 17:03:27 +09:00
Behdad Esfahbod 286cdc9c10 Revert "[fcmatch] When matching, reserve score 0 for when elements don't exist"
This reverts commit a5a384c5ff.

I don't remember what I had in mind for "We will use this property later.", but
the change was wrong.  If a font pattern doesn't have any value for element,
it must be interpretted as "it matches any value perfectly.  And "perfectly"
must have a score of 0 for that to happen.

This was actually affecting bitmap fonts (in a bad way), as the change made
an outline font to always be preferred over a (otherwise equal) bitmap font,
even for the exact size of the bitmap font.  That probably was never noticed
by anyone, but with the font range support this has become clear (and worked
around by Akira).  To clean that up, I'm reverting this so I can land the
rest of patches for bug 80873.

https://bugs.freedesktop.org/show_bug.cgi?id=80873#c10
2014-08-20 15:23:04 -04:00
Akira TAGOH 23e88d8c6a Increase the refcount in FcConfigSetCurrent()
https://bugs.freedesktop.org/show_bug.cgi?id=82432
2014-08-12 18:48:00 +09:00
Akira TAGOH 841753a93f fallback to the another method to lock when link() failed
Bug 82358 - FcAtomicLock fails on OS X on network mounts
https://bugs.freedesktop.org/show_bug.cgi?id=82358
2014-08-11 12:14:54 +09:00
Behdad Esfahbod 80edaccc3c If OS/2 table says weight is 1 to 9, multiply by 100
https://bugs.freedesktop.org/show_bug.cgi?id=82228
2014-08-06 12:29:35 -04:00
Behdad Esfahbod 01bb6978b6 Fix assertion failure
https://bugs.freedesktop.org/show_bug.cgi?id=82220
https://bugs.freedesktop.org/show_bug.cgi?id=82228
2014-08-06 12:23:24 -04:00
Behdad Esfahbod 37e501ed0a Remove unneeded FcPublic 2014-07-27 16:53:28 -04:00
Behdad Esfahbod a9e7b0494e Export recently added API
We should remove this alias mess.
2014-07-26 16:17:02 -04:00
Behdad Esfahbod ffda7c0e81 Linearly interpolate weight values
Rest of Part of https://bugs.freedesktop.org/show_bug.cgi?id=81453

Adds new API:

	FcWeightFromOpenType()
	FcWeightToOpenType()
2014-07-25 18:07:59 -04:00
Behdad Esfahbod be6506ca04 Add FC_WEIGHT_DEMILIGHT
Part of https://bugs.freedesktop.org/show_bug.cgi?id=81453
Also hooks up FC_WEIGHT_BOOK to fcfreetype.c.
2014-07-25 16:24:26 -04:00
Behdad Esfahbod 9839d0112c Improve / cleanup namelang matching
Previously, if the patten didn't request, eg, style, then the style
and stylelang were fully copied from the font, even though the pattern
had a stylelang.  Eg:

$ fc-match 'Apple Color Emoji:stylelang=en'
Apple Color Emoji.ttf: "Apple Color Emoji" "標準體"

This change both fixes that and makes the code much more readable.  Now:

$ fc-match 'Apple Color Emoji:stylelang=en'
Apple Color Emoji.ttf: "Apple Color Emoji" "Regular"
2014-07-24 16:07:13 -04:00
Behdad Esfahbod 874a549164 Remove unused regex code
Regex matching was disabled in f6244d2cf2
2014-07-24 15:42:54 -04:00
Behdad Esfahbod 9a8e812477 Use lang=und instead of lang=xx for "undetermined"
That's the correct BCP 47 code.
2014-07-24 15:37:51 -04:00
Behdad Esfahbod 76151ceaf3 Ouch, fix buffer 2014-07-24 15:34:20 -04:00
Behdad Esfahbod aeba5bf4b6 Decode MacRoman encoding in name table without iconv
iconv support was turned off by default in f30a5d76.
Some fonts, like Apple Color Emoji, only have their English
name in a MacRoman entry.  As such, decode MacRoman ourselves.
2014-07-24 15:28:09 -04:00
Behdad Esfahbod 07a0f511b1 Call FcInitDebug from FcFreeTypeQueryFace 2014-07-24 15:01:57 -04:00
Akira TAGOH 107b44f50b Don't add duplicate lang
Don't add duplicate lang from FC_LANG if the pattern already has.

https://bugs.freedesktop.org/show_bug.cgi?id=81186
2014-07-23 19:17:26 +09:00
Behdad Esfahbod 342b908b96 More mingw32 MemoryBarrier() fixup 2014-07-19 16:33:49 -04:00
Behdad Esfahbod 6781c6baef Update mingw32 MemoryBarrier from HarfBuzz
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=81228
2014-07-11 12:20:24 -04:00
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