Commit Graph

921 Commits

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