Commit Graph

858 Commits

Author SHA1 Message Date
Kean Johnston c9c6875014 Don't use varargs CPP macros in fccache.c. (bug 8733)
src/fccache.c uses a trick to try and use a function name that is also a
macro name. It does this using the varargs args() macro. Replace that
with separate macros for each number of formals.
2006-12-02 13:36:56 -08:00
Keith Packard 72ffe6536a Add FcFreeTypeQueryFace external API. Bug #7311.
Expose ability to build an FcPattern directly from an FT_Face
object.
2006-12-02 13:22:27 -08:00
Keith Packard 5e234d9e76 Fix grep pattern in makealias to work on non-Gnu grep (bug 8368).
grep -l -w '^foo' doesn't work on Solaris. Replace with
grep -l '^foo\>' instead which does. Also, grep -l will
report the filename more than once (!), so add | head -1
to pick just the first one.
2006-12-02 13:14:23 -08:00
Keith Packard 2b77216ee2 Avoid writing uninitialized structure pad bytes to cache files.
The union inside the FcValue structure contains pad bytes. Instead of
copying the whole structure to the cache block, copy only the initialized
fields to avoid writing whichever bytes serve as padding within the
structure.
2006-12-02 13:04:05 -08:00
Keith Packard 64d7e303df Warn (and recover) from config file without <cachedir> elements.
When updating from older fontconfig versions, if the config file
is not replaced, it will not contain <cachedir> elements. Lacking these,
fontconfig has no place to store cached font information and cannot operate
reasonably.

Add code to check and see if the loaded configuration has no cache
directories, and if so, warn the user and add both the default system cache
directory and the normal per-user cache directory.
2006-12-02 12:14:49 -08:00
Keith Packard 253ec7609c Use explicit platform/nameid order when scanning ttf files.
Instead of accepting whatever order names appear in the font file,
use an explicit ordering for both platform and nameid.

Platforms are high precedence than nameids.

The platform order is:

	microsoft, apple unicode, macintosh, (other)

The family nameid order is:

	preferred family, font family

The fullname nameid order is:

	mac full name, full name

The style nameid order is

	preferred subfamily, font subfamily

This will change the names visible to users in various application UIs, but
should not change how existing font names are matched as all names remain
present in the resulting database. The hope is that family names will, in
general, be less ambiguous. Testing here shows that commercial fonts
have longer names now while DejaVu has a shorter family name, and moves more
of the font description to the style name.
2006-12-02 11:47:07 -08:00
Keith Packard b5803016d7 FcStrCanonAbsoluteFilename should be static. 2006-11-12 17:15:55 -08:00
Han-Wen Nienhuys 0596d7296c More fixes for Win32 building (bug 8311)
Our build system barfs on autogen.sh, which ignores --noconfigure. Configure
needs a host of options to make the cross compile work in our case.

Fix typo in fccache.c
2006-09-17 17:03:33 -07:00
Han-Wen Nienhuys 1de7a4cc09 FcStrCanonFileName buggy for mingw. (bug 8311)
FcStrCanonFileName checks whether s[0] == '/', and recurses if not.

This only works on POSIX. On dos, this crashes with a stack overflow.

The patch attached splits this functionality in two functions
(FcStrCanonAbsoluteFilename) and uses GetFullPathName on windows to get an
absolute path.  It also fixes a number of other issues. With this patch,
LilyPond actually produces output on Windows.
2006-09-17 14:34:46 -07:00
Keith Packard cc104e6a91 Detect and use available random number generator (bug 8308)
Prefer random over lrand48 over rand
2006-09-17 14:20:18 -07:00
Keith Packard 706a1b367a Build fontconfig.def from header files when needed.
Instead of attempting to track exported symbols manually in
fontconfig.def.in, build it directly from the public fontconfig header files
to ensure it exports the public API.
2006-09-17 14:09:12 -07:00
Keith Packard 97c3d5b692 Reimplement FcConfigAppFontAddDir; function was lost in 2.4.0.
With the cache restructuring of 2.4.0, the ability to add
application-specific font files and directories was accidentally lost.
Reimplement this using by sharing the logic used to load configured font
directories.
2006-09-15 00:23:40 -07:00
Keith Packard 9419bb34f6 Fix conf.d directory sorting.
Sort was using broken comparison function.
2006-09-09 21:21:01 -07:00
Keith Packard 49b44b277f Insert newly created caches into reference data structure.
All caches used in the application must be in the cache reference list so
internal references can be tracked correctly. Failing to have newly created
caches in the list would cause the cache to be deallocated while references
were still present.
2006-09-09 16:41:58 -07:00
Keith Packard 5d2f7a9d92 Accept locale environment variables that do not contain territory.
Locale environment variables (LC_ALL, LC_CTYPE, LANG) must contain language,
and may contain territory and encoding. Don't accidentally require territory
as that will cause fontconfig to fall back to 'en'.
2006-09-09 10:04:42 -07:00
Keith Packard f6cfbe16bf Attempt to fix makealias usage for build on Mac OS X.
Avoid using fcalias.h or fcaliastail.h on systems which don't support it.
Provided solution still generates these files, but does not use them.
2006-09-07 15:17:10 -07:00
Keith Packard 6cff1dca81 Replace gnu-specific sed command with simple grep.
makealias was using a gnu-extension to sed addressing, replace that with a
simple (and more robuse) grep command. Also, found a bug in the public
header file that was leaving one symbol out of the process.
2006-09-07 14:37:52 -07:00
David Turner 31e0f03210 Replace character discovery loop with simpler, faster version.
The existing loop for discovering which characters map to glyphs is ugly and
inefficient. The replacement is functionally identical, but far cleaner and
faster.
2006-09-07 14:29:35 -07:00
Keith Packard 8d779ce4b3 Reference patterns in FcCacheCopySet.
As patterns are put into the font set copy, mark them as referenced so the
cache stays around while the font set is in use.
2006-09-07 14:22:16 -07:00
Keith Packard c3796ac606 Charset hashing depended on uniqueness of leaves.
Charset hashing actually use the value of the leaf pointers, which is
clearly wrong, especially now that charsets are not shared across multiple
font directories.
2006-09-06 17:45:40 -07:00
Keith Packard 08bef68701 Parallel build fix for fcalias.h and fcaliastail.h
These are built from the same script, but creating a single dependency rule
caused parallel make to run the script twice.
2006-09-06 17:43:08 -07:00
Keith Packard 23816bf9ac Eliminate .so PLT entries for local symbols. (thanks to Arjan van de Ven)
Using a simple shell script that processes the public headers, two header
files are constructed that map public symbols to hidden internal aliases
avoiding the assocated PLT entry for referring to a public symbol.

A few mistakes in the FcPrivate/FcPublic annotations were also discovered
through this process
2006-09-05 02:24:01 -07:00
Keith Packard 323ecd0cd3 Correct reference count when sharing cache file objects.
Multiple maps of the same cache file share the same mapped object; bump the
cache object reference count in this case
2006-09-04 23:19:59 -07:00
Keith Packard 17389539a0 Make cache reference counting more efficient.
Eliminate need to reference cache object once per cached font, instead
just count the number of fonts used from the cache and bump the reference
count once by that amount. I think this makes this refernece technique
efficient enough for use.
2006-09-04 22:26:24 -07:00
Keith Packard 9e612141df Reference count cache objects.
Caches contain patterns and character sets which are reference counted and
visible to applications. Reference count the underlying cache object so that
it stays around until all reference objects are no longer in use.

This is less efficient than just leaving all caches around forever, but does
avoid eternal size increases in case applications ever bother to actually
look for changes in the font configuration.
2006-09-04 22:20:25 -07:00
Keith Packard 8fe2104a1e Leave cache files mapped permanently.
Without reference counting on cache objects, there's no way to know when
an application is finished using objects pulled from the cache. Until some
kinf of cache reference counting can be done, leave all cache objects mapped
for the life of the library (until FcFini is called). To mitigate the cost
of this, ensure that each instance of a cache file is mapped only once.
2006-09-04 13:59:58 -07:00
Keith Packard 9a9fd975a1 Can't typecheck values for objects with no known type.
Objects that aren't part of the built-in object list don't have predefined
types, so we can't typecheck them.
2006-09-04 12:46:01 -07:00
Keith Packard a04ac99f0f Hide FreeType glue code from library ABI.
FreeType glue code was escaping the shared library.
2006-09-04 02:13:13 -07:00
Keith Packard 4984242e36 Hide private functions in shared library. Export functionality for utilities.
Borrowing header stuff written for cairo, fontconfig now exposes in the
shared library only the symbols which are included in the public header
files. All private symbols are hidden using suitable compiler directives.

A few new public functions were required for the fontconfig utility programs
(fc-cat and fc-cache) so those were added, bumping the .so minor version number
in the process.
2006-09-04 00:47:07 -07:00
Keith Packard 34227592c2 Remove all .cvsignore files 2006-09-03 16:27:09 -07:00
Keith Packard e3b771a63e Using uninitialized (and wrong) variable in FcStrCopyFilename.
A typo from the change in where filename canonicalization occurs.
2006-09-02 23:09:44 -07:00
Keith Packard 04cedae0d5 Don't segfault when string values can't be parsed as charsets or langsets.
If parsing charsets or langsets fails, return a FcTypeVoid value instead of
a charset/langset value with a NULL pointer in it (which is invalid).
2006-09-02 20:23:31 -07:00
Keith Packard fb6e30ab3e Fix missing initialization/destruction of new 'scan' target subst list.
Forgot to initialize and destroy the new substitution list for the 'scan'
match target.
2006-09-02 20:07:29 -07:00
Keith Packard c2c6976d1a Add FcMatchScan to resolve Delicious font matching issues (bug #6769)
The Delicious family includes one named Delicious Heavy, a bold variant
which is unfortunately marked as having normal weight. Because the family
name is 'Delicious', fontconfig accidentally selects this font instead of
the normal weight variant. The fix here rewrites the scanned data by running
the scanned pattern through a new substitution sequence tagged with
<match target=scan>; a sample for the Delicious family is included to
demonstrate how it works (and fix Delicious at the same time).

Also added was a new match predicate -- the 'decorative' predicate which is
automatically detected in fonts by searching style names for key decorative
phrases like SmallCaps, Shadow, Embosed and Antiqua. Suggestions for
additional decorative key words are welcome. This should have little effect
on font matching except when two fonts share the same characteristics except
for this value.
2006-09-02 17:52:12 -07:00
Keith Packard 3b8a03c09d Allow font caches to contain newer version numbers
Use the version number inside the cache file to mark backward compatible
changes while continuing to reserve the filename number for incompatible
changes.
2006-09-02 14:54:14 -07:00
Keith Packard 9b511b2905 Unify directory canonicalization into FcStrAddFilename.
Instead of making filename canonicalization occur in multiple places, it
occurs only in FcStrAddFilename now, as all filenames pass through that
function at one point.
2006-09-02 14:52:37 -07:00
Keith Packard 7295c6f5fa Guess that mac roman names with lots of high bits are actually SJIS.
Many Japanese fonts incorrectly include names tagged as Roman encoding and
English language which are actually Japanese names in the SJIS encoding.
Guess that names with a large number of high bits set are SJIS encoded
Japanese names rather than English names.
2006-09-01 21:30:54 -07:00
Keith Packard 3bb1812f0d Fonts matching lang not territory should satisfy sort pattern lang.
A pattern specifying 'Chinese' (:lang=zh) without a territory should be
satisfied by any font supporting any Chinese lang. The code was requiring
that the lang tags match exactly, causing this sort to fail.
2006-09-01 15:33:27 -07:00
Keith Packard 5b8e43a48e Avoid #warning directives on non-GCC compilers. (bug 7683)
Detect GCC and use #warning only on GCC systems.
2006-09-01 12:36:31 -07:00
Keith Packard 09bd9ae2be Fontset pattern references are relative to fontset, not array.
Within a fontset, the patterns are stored as pointers in an array.
When stored as offsets, the offsets are relative to the fontset object
itself, not the base of the array of pointers.
2006-09-01 02:22:59 -07:00
Keith Packard 18b6857c64 Fix fc-lang to use new charset freezer API.
Charset freezer api now uses allocated object. Also required minor fixes to
charset freezer code to remove assumption that all input charsets are
persistant.
2006-09-01 01:49:47 -07:00
Keith Packard bc5e487f2a Pass directory information around in FcCache structure. Freeze charsets.
Instead of passing directory information around in separate variables,
collect it all in an FcCache structure. Numerous internal and tool
interfaces changed as a result of this.

Charsets are now pre-frozen before being serialized. This causes them to
share across multiple fonts in the same cache.
2006-09-01 01:15:14 -07:00
Keith Packard 551b6b2cd7 Allow FcTypeLangSet to match either FcTypeLangSet or FcTypeString.
Applications explicitly setting FC_LANG with string would fail due
to typechecking disallowing this case.
2006-08-31 18:16:00 -07:00
Keith Packard f57783d2e9 Revert ABI changes from version 2.3
Accidental ABI changes and additions were discovered by looking at the
differences in fontconfig.h. All of those have been reverted.
2006-08-31 14:38:18 -07:00
Keith Packard 0a87ce715e With no args, fc-cat now dumps all directories.
Automatically list all font directories when no arguments are given to
fc-cat. Also add -r option to recurse from specified cache directories.
fc-cat also now prints the cache filename in verbose mode, along with the
related directory name.
2006-08-31 11:56:43 -07:00
Keith Packard d8ab9e6c42 Automatically remove invalid cache files.
Cache files for missing or more recently modified directories are
automatically removed at the end of every fc-cache run.
2006-08-31 09:42:49 -07:00
Keith Packard e9a564e2cd Serialized value lists were only including one value.
The next pointer in the serialized value list wasn't getting set, so they
were truncated at a single value.
2006-08-31 09:07:32 -07:00
Keith Packard c50ea916b0 Use intptr_t instead of off_t inside FcCache structure.
This avoids OS-dependencies in the cache file structure.
2006-08-30 23:09:39 -07:00
Keith Packard 76abb77f26 Fix fc-cat again. Sigh.
Internal interfaces in cache management changed again...
2006-08-30 22:23:25 -07:00
Keith Packard 2d3387fd72 Skip broken caches. Cache files are auto-written, don't rewrite in fc-cache.
Validate cache contents and skip broken caches, looking down cache path for
valid ones.

Every time a directory is scanned, it will be written to a cache file if
possible, so fc-cache doesn't need to re-write the cache file. This makes
detecting when the cache was generated a bit tricky, so we guess that if the
cache wasn't valid before running and is valid afterwards, the cache file
was written.

Also, allow empty charsets to be serialized with null leaves/numbers.

Eliminate a leak in FcEdit by switching to FcObject sooner.

Call FcFini from fc-match to make valgrind happy.
2006-08-30 21:59:53 -07:00
Keith Packard 09f9f6f62a Rework Object name database to unify typechecking and object lookup.
Eliminate ancient list of object name databases and load names into single
hash table that includes type information. Typecheck all pattern values to
avoid mis-typed pattern elements.
2006-08-30 18:50:58 -07:00
Keith Packard c02886485b FcCharSetSerialize was using wrong offset for leaves. Make fc-cat work.
FcCharSetSerialize was computing the offset to the unserialized leaf,
which left it pointing at random data when the cache was reloaded.

fc-cat has been updated to work with the new cache structure.

Various debug messages extended to help diagnose serialization errors.
2006-08-30 13:51:03 -07:00
Keith Packard e3096d90fd Fix build problems caused by cache rework.
Pagesize no longer matters in architecture decisions, the entire cache file
is mmaped into the library. However, lots of intptr_t values are in use now,
so that value is important.

fc-lang now requires fcserialize.c, which has been added to the repository.
2006-08-30 04:24:03 -07:00
Keith Packard 7ce1967331 Rework cache files to use offsets for all data structures.
Replace all of the bank/id pairs with simple offsets, recode several
data structures to always use offsets inside the library to avoid
conditional paths. Exposed data structures use pointers to hold offsets,
setting the low bit to distinguish between offset and pointer.

Use offset-based data structures for lang charset encodings; eliminates
separate data structure format for that file.

Much testing will be needed; offsets are likely not detected everywhere in
the library yet.
2006-08-30 04:16:22 -07:00
Keith Packard 2a9179d889 Revert to original FcFontSetMatch algorithm to avoid losing fonts.
The fancy new FcFontSetMatch algorithm would discard fonts for the
wrong reasons; fc-match sans:lang=en,ja would discard all fonts without
Japanese support. This commit reverts to the original algorithm which
ensure that FcFontSetMatch always matches the first font in the
FcFontSetSort return list.
2006-08-28 11:51:12 -07:00
Keith Packard 7db39f7298 Regenerate x86 line in fcarch.tmpl.h to match change in cache data.
Also remove spurious printf of directory names.
2006-08-28 09:43:12 -07:00
Keith Packard 0d9e31c810 Eliminate ./ and ../ elements from font directory names when scanning.
FcStrCanonFilename eliminates ./ and ../ elements from pathnames through
simple string editing. Also, relative path names are fixed by prepending the
current working directory.
2006-08-27 23:40:51 -07:00
Keith Packard af180c4037 Fix up fc-cache and fc-cat for no global cache changes.
fc-cache and fc-cat use internal (fcint.h) APIs that have
changed with the elimination of the global cache.
2006-08-27 22:24:39 -07:00
Keith Packard 00f059e930 Eliminate global cache. Eliminate multi-arch cache code.
With the removal of the in-directory cache files, and the addition of
per-user cache directories, there is no longer any reason to preserve the
giant global cache file. Eliminating of this unifies the cache structure
and simplifies the overall caching strategies greatly.
2006-08-27 21:53:48 -07:00
Keith Packard cf65c0557e Add architecture to cache filename.
Make cache filenames unique by inserting the architecture name into the
filename.
2006-08-27 18:29:51 -07:00
Keith Packard db50cbdaf5 Eliminate NormalizeDir. Eliminate gratuitous stat/access calls per dir.
Normalized directory names offer protection against looped directory trees
but cost enormous numbers of system calls (stat per file in the hierarchy).
Also, cache file directory name contents are validated each time the
directory is modified, don't re-validate every time the cache file is loaded
with an access and stat call.
2006-08-27 18:19:39 -07:00
Keith Packard d2f786849c Write caches to first directory with permission. Valid cache in FcDirCacheOpen.
Previous policy was to attempt to update the cache in place and bail if that
didn't work. Now, search for the first writable directory and place the
cache file there instead. Furthermore, on startup, search directory list for
valid cache files instead of bailing if the first found cache file wasn't
valid.
2006-08-27 17:04:01 -07:00
Patrick Lam 7410e40bd9 2006-08-04 Keith Packard (keithp@keithp.com) reviewed by: plam
Make cache directories configurable. Simplify and correct some code which
    deals with per-directory caches.
2006-08-04 16:13:00 +00:00
Patrick Lam 62a4a8459a 2006-07-19 Jon Burgess (jburgess@uklinux.net) reviewed by: plam
Fix file-descriptor leak in FcGlobalCacheDestroy.
2006-07-19 02:14:28 +00:00
Patrick Lam 1c14f2d963 2006-05-31 Yong Li (rigel863@gmail.com) reviewed by: plam, Bedhad Esfahbod
TrueType Collection table offsets are absolute, not relative.
2006-06-02 18:48:30 +00:00
Patrick Lam 31b7e6d7f5 2006-04-27 Paolo Borelli (pborelli@katamail.com) reviewed by: plam
Make FcStrCopy slightly more efficient.
2006-04-28 07:00:25 +00:00
Patrick Lam 0037aad501 Keith Packard <keithp@keithp.com>
Reduce transient memory usage during config file parsing by allocating
    smaller buffers (64 seems to be a magic number).
2006-04-27 08:13:45 +00:00
Keith Packard 529291bef4 Eliminate pattern freezing 2006-04-27 07:54:07 +00:00
Keith Packard c1c3ba06d5 Make path names in cache files absolute (NB, cache format change) Stop
permitting cache files to be stored in font dirs. Bump cache magic.
    Don't include /fonts.cache-2 in cache hash construction.
reviewed by: Patrick Lam <plam@mit.edu>
2006-04-27 07:11:44 +00:00
Patrick Lam 73775d8f28 Fix the issues with GNU libiconv vs. libc iconv (which especially appear on
Solarii). Approach suggested by Tim Mooney.
reviewed by: plam
2006-04-25 15:33:07 +00:00
Patrick Lam f045376c08 Include $(top_srcdir), $(top_srcdir)/src before anything else.
Shuffle order of includes for building out of srcdir on win32.
reviewed by: plam
2006-04-25 05:57:41 +00:00
Patrick Lam 55e145b025 Prevent terrible perf regression by getting the if-condition right
(reported by Wouter Bolsterlee).
2006-04-20 16:57:50 +00:00
Patrick Lam 93f67dfc73 Dominic Lachowicz <cinamod@hotmail.com>
Implement mmap-like code for Windows using MapViewOfFile.
2006-04-19 16:53:50 +00:00
Patrick Lam c001a192af Bail gracefully if the cache file does not contain enough data. 2006-04-19 16:17:19 +00:00
Patrick Lam 8cfa0bbc82 Fix Gecko-exposed segfault from my last hack to FcObjectToPtrLookup.
Simplify code and get things straight.
2006-04-14 18:35:16 +00:00
Patrick Lam 2f02e38361 Fix memory leak (Coverity defect #2089).
Ignore script if subtable is missing (Coverity defect #2088).
Fix possible null pointer dereference (Coverity defect #784) and memory
    leak (Coverity defects #785, #786).
Don't copy FcCharSet if we're going to throw it away anyway. (Reported by
    Kenichi Handa).
reviewed by: plam
2006-04-12 14:36:36 +00:00
Patrick Lam a56e89ab4f Fix bad behaviour on realloc resulting in crash.
reviewed by: plam
2006-04-12 03:02:57 +00:00
Patrick Lam 5c90509c07 Don't crash if config is null (Coverity defect #984). 2006-04-12 02:38:28 +00:00
Patrick Lam 2de24638b2 Missing bits from previous patches.
Remove extra semi-colon.
Fix memory leak in error case (Coverity defects #776, #985).
Fix memory leaks (Coverity defects #779, #781) and memory use after free
    (Coverity defect #780).
reviewed by: plam
2006-04-11 16:54:24 +00:00
Patrick Lam 04f7d3e7fd Properly convert static charsets to dynamic charsets.
Fix memory leak in error case (Coverity defects #1820, #1821, #1822).
Fix memory leak (Coverity defect #1819).
prevent crash when invalid include line is parsed (Coverity defect #763).
Fix potential null pointer access (Coverity defect #1804).
Remove dead code (Coverity defect #1194).
Prevent potential null pointer access (Coverity defect #767), ensure error
    value is read (Coverity defect #1195).
reviewed by: plam
2006-04-11 14:20:59 +00:00
Patrick Lam ac0010940e Swap typo in order of ALIGN and dereferencing, fixing bug 6529. 2006-04-10 21:04:54 +00:00
Patrick Lam 3ea92166a0 Fix string memory leak (Coverity defect #1823).
Fix memory leak with hash collision (Coverity defect #1824).
reviewed by: plam
2006-04-10 19:33:03 +00:00
Patrick Lam c814c301ee Don't leak header in non-error case (Coverity defect #1825).
reviewed by: plam
2006-04-10 16:12:55 +00:00
Patrick Lam 65448e8b2a src/fcdir.c (FcDirScanConfig) Don't leak in error cases (Coverity defects
#777, #1826)
reviewed by: plam
2006-04-10 16:06:42 +00:00
Patrick Lam ae2aafe602 Fix double free (spotted by Coverity, CID #1965).
Check if pattern is not null before using it (Coverity defect #1883).
Fix memory leak with hash collision (Coverity defect #1829).
Fix memory leak when bail cases (Coverity defect #1828).
Don't leak directory name (Coverity defect #1827).
reviewed by: plam
2006-04-10 15:46:34 +00:00
Patrick Lam f23f5f388d SGI compilation fixes (reported by Christoph Bauer):
1) reorder union definition of _FcChar;
2) omit .stats =.
2006-04-07 17:37:09 +00:00
Patrick Lam 44415a079a Portability fixes for HP-UX (reported by Christoph Bauer). Replace
'__inline__' by AC_C_INLINE and 'inline'. Replace '__alignof__' by
    'fc_alignof'.
reviewed by: plam
2006-04-07 17:27:39 +00:00
Patrick Lam 91fe51b4f8 Move up #include of config.h. Fail if neither inttypes.h nor stdint.h is
available. Fixes bug 6171.
reviewed by: plam
2006-04-07 17:06:55 +00:00
Patrick Lam d6217cc6bc Patrick Lam <plam@mit.edu>
Make fontconfig compile under MinGW:
1) remove unneeded #includes;
2) make use of mmap and sysconf conditional;
3) replace rand_r by srand/rand if needed;
4) use chsize instead of ftruncate; and
5) update libtool exports file
2006-04-07 04:42:32 +00:00
Patrick Lam 3a342c5a6c Eliminate warning. 2006-04-07 04:19:49 +00:00
Patrick Lam 392fa276dc Reduce amount of dirty rss by const'ing some data structures.
Don't fail if we can't create or remove $(pkgcachedir) i.e.
    /var/cache/fontconfig. (reported by Quanah Gibson-Mount).
reviewed by: plam
2006-04-06 04:52:21 +00:00
Patrick Lam 0d745819a9 Fix intel compiler warnings: make many variables static, eliminate
duplicate names, reduce variable scopes, unsigned/signed printf
    formatting.
reviewed by: plam
2006-04-06 04:33:11 +00:00
Patrick Lam b17cf498be Fix multiarch support (don't destroy multiarch files!)
Require pkg-config. (Thanks Behdad; better solution wanted for libxml2
    detection!)
reviewed by: plam
2006-03-24 15:21:10 +00:00
Patrick Lam c022182231 On Windows, unlink before rename. Reported by Tim Evans. 2006-03-23 04:21:10 +00:00
Patrick Lam e3c6d3364c Sort directory entries while scanning them from disk; prevents Heisenbugs
due to file ordering in a directory.
reviewed by: plam
2006-03-08 19:10:57 +00:00
Patrick Lam d8951c0cc2 Remove stuff we don't use, make get_{char,short,long} functions of ftglue
macros to be inlined.
Code cleanups (excess prototype, old-style function definition).
reviewed by: plam
2006-03-08 02:30:43 +00:00
Patrick Lam 9226e04c69 Because we hacked FcPatternGet, we don't really need to expand the filename
again in FcPatternGetString.
2006-03-05 15:33:46 +00:00
Patrick Lam 618adbaf7b Ok, so some people (wine!) use FcPatternGet to fetch FC_FILE. Make that
work. Reported by Bernhard Rosenkraenzer.
2006-03-05 06:05:50 +00:00
Patrick Lam dc70c15aba Include inttypes.h instead of stdint.h if appropriate. 2006-03-03 18:35:42 +00:00
Patrick Lam bb6b19938e Get rid of C++-style comments. 2006-03-03 06:35:53 +00:00
Patrick Lam b36f2a39d0 Fix suspicious return expression which causes junk to be returned.
reviewed by: plam
2006-03-03 06:11:31 +00:00
Patrick Lam 0cfaf27e33 Takashi Iwai <tiwai@suse.de> reviewed by: plam
Fix double-free on error case.
2006-02-24 16:41:34 +00:00
Patrick Lam 656b47f698 Pass the buck; make fontconfig not crash on pango badness. 2006-02-21 15:56:41 +00:00
Patrick Lam f2fb985c7a Eliminate redundancies.
reviewed by: plam
2006-02-21 15:50:19 +00:00
Patrick Lam b023dbd384 Eliminate unused vars reported by Intel's compiler.
reviewed by: plam
2006-02-21 15:40:18 +00:00
Patrick Lam dacf81ed4c Freeze patterns created by configuration file for tiny memory savings
(every little bit helps).
reviewed by: plam, keithp
2006-02-21 15:24:28 +00:00
Patrick Lam 530e66b008 Fix the underlying cause of the below segfault (must usually call
FcDirCacheHasCurrentArch after FcDirCacheValid).
2006-02-18 18:18:07 +00:00
Patrick Lam a68ce9525d Fix segfault (reported by fcrozat) caused by incorrect input on cache
files.
2006-02-18 17:56:25 +00:00
Patrick Lam 310817371c Bump up magic version; we changed the binary format. 2006-02-17 14:44:42 +00:00
Patrick Lam 8c0d692125 Deal correctly with changing FC_CACHE_MAGIC. 2006-02-16 17:50:04 +00:00
Patrick Lam 719f4b841f Don't bail if fontconfig can't remove a dir cache file. Skip the ID of a
cache file when copying. Eliminate 'source file too small' bug in
    FcDirCacheWrite.
2006-02-16 07:12:04 +00:00
Patrick Lam f8a17f3298 Fix memory leak in error condition code. 2006-02-13 22:19:30 +00:00
Patrick Lam 5657098e29 Skip bitmap fonts which can't even get it together enough to declare a
family name; this appears to reproduce previous fontconfig behaviour.
reviewed by: plam
2006-02-13 21:51:11 +00:00
Patrick Lam d00c3cb5e0 Try to open /var/cache/fontconfig/[hashed name] before fonts.cache-2 in a
directory, because /var/cache/fontconfig failures ought to be fixable,
    unlike fonts.cache-2 failures, which may leave you screwed.
reviewed by: plam
2006-02-11 05:01:32 +00:00
Patrick Lam 9e07e0a77b Use a tri-state to mark the fonts which didn't get blocked but were just
missing an element, to distinguish them from the fonts that do match
    the element.
reviewed by: plam
2006-02-11 04:50:46 +00:00
Patrick Lam f11a184104 Don't kill fonts because they don't declare an element that's being matched
on.
reviewed by: plam
2006-02-10 19:40:11 +00:00
Patrick Lam 879af7060b Define and pass O_BINARY to open if appropriate, for those platforms that
need it. Reported by Doodle.
2006-02-09 18:44:14 +00:00
Patrick Lam c7490074c5 Fix attempt to close -1. Don't unboundedly grow bad caches (reported by
fcrozat).
2006-02-09 16:19:42 +00:00
Patrick Lam a8c425301a Fix problem with missing 'en' due to euro.patch: change cache file format
slightly to coincide with that generated by fc-lang.
2006-02-09 15:25:57 +00:00
Patrick Lam b10e77628c Fix warning. 2006-02-08 03:34:17 +00:00
Patrick Lam 5c3deb2985 Don't reject dirs that can't be normalized (fixes lilypond, and is correct
in the context of application font directories.)
Use normalized directory name exclusively in FcCacheReadDirs.
reviewed by: plam
2006-02-07 22:09:01 +00:00
Patrick Lam efb11b36c4 Perf optimizations. Inline FcValueCanonicalize, reduce FcValueListPtrU
usage, remove redundant cast.
reviewed by: plam
2006-02-07 21:15:33 +00:00
Patrick Lam 6cc02fe6b9 src/fccharset.c (FcLangCharSetPopulate, FcCharSetInsertLeaf)
Fix missing FcCacheBankToIndex in FcCharSetInsertLeaf. Declare extern for
    static arrays as arrays, not pointers. (Part of the fix for 'fonts
    don't have en' issue after Euro patch.)
(I forgot to commit the ChangeLog last time.)
reviewed by: plam
2006-02-07 20:56:48 +00:00
Patrick Lam a81f23c0ce Fix hidden variable warning. 2006-02-07 03:53:32 +00:00
Patrick Lam 799157dbbf Remove de-escaping logic because FcCacheWriteString doesn't escape anyway.
Do blockwise reading instead of byte-wise for performance.
2006-02-07 02:33:57 +00:00
Patrick Lam 8b413bb62c Takashi Iwai <tiwai@suse.de>
Don't loop infinitely on recursive symlinks (client-side).
2006-02-07 02:22:50 +00:00
Patrick Lam fff5a5af30 Skip subdirs when skipping over stale bits of global cache. Introduce state
machine into FcGlobalCacheDir to avoid doing inappropriate operations
    on global dir entries, e.g. writing out an out-of-date cache entry.
reviewed by: plam
2006-02-06 22:44:02 +00:00
Patrick Lam 98592bbb1d Hoist FcFileIsDir check out of FcFileScanConfig loop.
reviewed by: plam
2006-02-06 21:52:15 +00:00
Patrick Lam a0aa54f6ee Don't rescan when trying to normalize a non-declared font dir. Don't add
font dirs multiple times (even if they're aliased).
reviewed by: plam
2006-02-06 19:25:45 +00:00
Patrick Lam 86e75dfb5d Explain apples/oranges comparison and fix compilation error.
reviewed by: plam
2006-02-06 14:44:46 +00:00
Patrick Lam f076169d19 Insert check for integer overflow in # of fonts.
reviewed by: plam
2006-02-06 14:14:21 +00:00
Patrick Lam 68355f3877 src/fccache.c (FcGlobalCacheLoad, FcGlobalCacheSave, FcDirCacheConsume,
FcDirCacheWrite)
Check I/O call return values and eliminate unused variable warnings.
reviewed by: plam
2006-02-05 02:57:21 +00:00
Patrick Lam c4c47a7654 src/fccfg.c (FcConfigAppFontAddFile, FcConfigAppFontAddDir)
Fix memory leak.
reviewed by: plam
2006-02-04 00:09:42 +00:00
Patrick Lam a8e4d9eb39 Gracefully handle the case where a cache asserts that it has a negative
number of fonts, causing overflow.
reviewed by: plam
2006-02-04 00:04:00 +00:00
Patrick Lam 1af0f5741a Fix double free in error case. 2006-02-03 23:47:37 +00:00
Patrick Lam 28aefd013d Toast broken global cache files.
reviewed by: plam
2006-01-31 07:16:22 +00:00
Patrick Lam 3616cbe251 Actually use the directories that I added to the global cache. Fixes 'make
check'.
2006-01-31 04:42:20 +00:00
Patrick Lam 81d97094cf Make global cache work again after putting dir names into global cache (I
misplaced the recording of a file offset).
2006-01-30 16:31:56 +00:00
Patrick Lam 2c4e012497 Update fc-cat to handle subdir lists in global cache file.
Another FcCacheReadString return value check.
2006-01-30 15:59:17 +00:00
Patrick Lam c5411c4cae Make fccache more resilient to broken cache files by checking return value
of FcCacheReadString all the time.
reviewed by: plam
2006-01-30 15:44:13 +00:00
Patrick Lam 30c4189deb Fix global cache reads of subdirectories.
reviewed by: plam
2006-01-30 04:47:17 +00:00
Patrick Lam 971cf18018 Add documentation for FcConfigNormalizeFontDir.
Write directory information to global caches to fix make check (reported by
    Ronny V. Vindenes). This changes the global cache format again.
2006-01-30 04:27:53 +00:00
Patrick Lam 97293e07dd Move FcConfigNormalizeFontDir call so that it doesn't result in infinite
recursion (reported by Ronny V. Vindenes).
2006-01-27 05:47:59 +00:00
Patrick Lam 3cf9f5cec3 Add a couple of missing normalizations to make fc-cache work right; only
scan subdirectories once.
2006-01-27 00:27:37 +00:00
Patrick Lam 4073203deb Don't crash on non-existant directories in global cache.
reviewed by: plam
2006-01-26 16:11:41 +00:00
Patrick Lam f468f568b4 Stop trampling the directory name when writing out caches. (with Mike
Fabian:) Beef up FcConfigNormalizeFontDir to scan subdirs when
    necessary. Don't scan directories that can't be normalized.
2006-01-26 16:09:12 +00:00
Patrick Lam 575a37b797 Fix additional memory leaks reported by Ronny V. Vindenes: don't invoke
FcValueSave on hashed static strings in FcPatternAddWithBinding.
Add another st_dev check in FcDirCacheOpen.
2006-01-25 14:52:49 +00:00
Patrick Lam 16a71eff3e Treat zh-hk fonts differently from zh-tw fonts. This patch may cause
fontconfig to treat A-X fonts differently from A-Y fonts; please mail
    the fontconfig list if this causes any problems.
reviewed by: plam
2006-01-25 02:54:37 +00:00
Patrick Lam 6f9fcb5186 Fix memory leaks reported by Ronny V. Vindenes. 2006-01-25 02:33:46 +00:00
Patrick Lam 986e35979e Fix for unaligned memory accesses.
reviewed by: plam
2006-01-19 19:20:30 +00:00
Patrick Lam 58bdd29619 Properly order the FcConfigAddFontDir and FcConfigNormalizeFontDir calls to
avoid crashes.
reviewed by: plam
2006-01-18 15:41:15 +00:00
Patrick Lam eadadf489a Fix segfault when consuming zero-length caches in fc-cat (which has no
config, so FcConfigAddFontDir shouldn't be called.)
2006-01-15 05:31:58 +00:00
Patrick Lam 8a0b0ed6d0 Compare device numbers as well as inodes. Always normalize directory names
before comparing them.
Allocate extra space for appended '/' in directory name.
reviewed by: plam
2006-01-14 21:23:03 +00:00
Patrick Lam df3efc11a9 Explicitly add font dirs to config.fontDirs even if they're empty. Set
current config in fc-cache.c. Fix treatment of cache directory as read
    from cache file; don't use string equality to determine if we have the
    right file, use inode equality.
2006-01-10 13:15:05 +00:00
Patrick Lam cd9bca6970 Normalize font dirs by using the form, as given in fonts.conf, and recorded
in FcConfig's fontDirs string set, as canonical.
Actually update config.fontDirs as font directories are scanned.
2006-01-09 13:58:04 +00:00
Patrick Lam 5576a5873d Fix matching bug when multiple elements match; don't use the sum of all
scores, but the best score.
Also more perf opts, e.g. evaluate best over all font sets rather than on a
    per-set basis (and other changes).
2006-01-08 10:58:30 +00:00
Patrick Lam 05a98eaf4b Properly skip past dir caches that contain zero fonts (as occurs in global
caches.) Reported by Mike Fabian.
2006-01-08 10:50:51 +00:00
Patrick Lam 5fe09702f4 Print out full pathname in fc-match -v as well. Reported by Frederic
Crozat.
Fix bug where fc-match crashes when given __DUMMY__ property to match on.
(I added the __DUMMY__ string to enable callers of FcObjectToPtrLookup to
    distinguish an error return from a successful return. -PL)
reviewed by: plam
2006-01-07 06:36:24 +00:00
Patrick Lam c60ec7cc6d Add self to AUTHORS list.
Minor change to global cache file format to fix fc-cat bug reported by
    Frederic Crozat, and buglet with not globally caching directories with
    zero fonts cached.
2006-01-05 15:12:22 +00:00
Patrick Lam 52ac91f7c1 Fix double-free which occurs because FcValueCanonicalize doesn't create an
extra copy of the returned value, it only canonicalizes it.
reviewed by: plam
2006-01-02 17:20:23 +00:00
Patrick Lam ebc157f9a1 Shut up GCC warnings on amd.
reviewed by: plam
2005-12-21 20:00:20 +00:00
Patrick Lam 19ea60bc7c Avoid check on _fcBankId nullness and fix case where it used to crash. 2005-12-21 05:37:10 +00:00
Patrick Lam 3bfae75d44 Bump version to 2.3.93.
Use open instead of fopen (requested by Phil Race for Sun).
src/fccache.c (FcDirCacheWrite);
Fix GCC4 warning and Makefile brokenness for /var/cache/fontconfig dir.
2005-12-21 03:31:19 +00:00
Patrick Lam 6f767cec49 Restore code to skip over PCF fonts that have no encoded characters. (We
guess that a font is PCF by presence of the PIXEL_SIZE BDF property.)
2005-12-20 20:35:47 +00:00
Patrick Lam ec760b178a Read and write the original location as a fallback for the hashed cache
file locations. This is mostly for users to be able to have
    per-directory cache files.
2005-12-12 20:45:54 +00:00
Patrick Lam 83b6739035 Improve error message when fc-cache can't write the cache. Add missing
slash. Reported by Behdad. Incorporate Behdad's patch to create
    /var/cache/fontconfig when appropriate.
2005-12-12 13:46:45 +00:00
Patrick Lam 368104c381 Fix crash reported by Frederic Crozat when using libxml2.
reviewed by: plam
2005-12-12 13:20:41 +00:00
Patrick Lam ea44e21841 Migrate cache files from fonts directories to /var/cache/fontconfig. This
helps make fontconfig FHS-compliant, but requires that all caches get
    rebuilt.
Also, autogen.sh now needs the additional parameter
--localstatedir=/var.
2005-12-09 16:36:45 +00:00
Patrick Lam 204da5a8b8 Because we've changed FcPatternAddString to use FcStrStaticName and not
FcValueSave, explicitly handle the case of a null string.
2005-12-08 05:54:27 +00:00
Patrick Lam c6103dfb22 Don't assign types to user object names. 2005-12-06 18:57:43 +00:00
Patrick Lam 9ede93f1dc Don't free strings that have been returned from FcStrStaticName. 2005-12-05 16:08:01 +00:00
Patrick Lam cb6d97eb1b Only add a config file to the set of config files once.
reviewed by: plam
2005-11-30 22:13:21 +00:00
Patrick Lam 93a27747a4 src/fcint.h (FcCacheBankToIndex);
Fix segfault by guarding array dereference.
2005-11-29 15:04:06 +00:00
Patrick Lam b8948e8542 Refactor FcCacheBankToIndex into an inlineable part (in fcint.h) which
checks the front of the list and a non-inlineable part which finds and
    moves the appropriate element to the front of the list.
reviewed by: plam
2005-11-29 14:57:10 +00:00
Patrick Lam 9fad72abaf Make the perf guys hate me a bit less: hoist the directory-name
FcConfigAcceptFont check for cached fonts up to directory cache read
    time, rather than running it for each font.
2005-11-29 06:23:00 +00:00
Patrick Lam 51af050992 Don't make FcPatternFindFullFname available to fccfg, it's not really safe.
Instead go through FcPatternGetString (sorry, perf guys.) Also, use
    globs for dirs as well.
2005-11-29 06:09:18 +00:00
Patrick Lam e0421d0289 Fix segfault. 2005-11-29 00:21:05 +00:00
Patrick Lam ced3f0a0ab Fix problem dating back at least to 2.3.2 where globs weren't being applied
to patterns loaded from a cache.
Fix some obvious spelling mistakes.
2005-11-29 00:14:42 +00:00
Patrick Lam 1ed98a0c87 Stephan Kulow <coolo@suse.de> reviewed by: plam
Don't kill all fonts during match (oops!)
2005-11-28 10:54:11 +00:00
Patrick Lam aa472e5f1a Stephan Kulow <coolo@suse.de> Michael Matz <matz@suse.de> reviewed by: plam
Rewrite FcFontSetMatch to a path-finding based algorithm, i.e. inline
    FcCompare into FcFontSetMatch and reorder the loops, adding a boolean
    array which blocks patterns from future consideration if they're known
    to not be best on some past criterion.
2005-11-28 01:40:53 +00:00
Patrick Lam 200a44fed0 Fix incorrect merge.
reviewed by: plam
2005-11-26 05:05:14 +00:00
Patrick Lam cbe1df8150 Don't do random matching when bad objects are passed into
FcCompareValueList.
2005-11-25 16:33:58 +00:00
Patrick Lam 81fe99fdd0 Rename fcpatterns, fcpatternelts, fcvaluelists to _fcPatterns,
_fcPatternElts, _fcValueLists for consistency.
2005-11-25 16:04:44 +00:00
Patrick Lam d854eaf8a9 Pass the FcObjectPtr to FcCompareValueList, not the char * (perf).
reviewed by: plam
2005-11-25 15:54:24 +00:00
Patrick Lam 61571f3f2e Pass around FcCache *s to the Unserialize functions for extra consistency
(and less overhead, for what that's worth).
2005-11-25 15:50:34 +00:00
Patrick Lam 9ab79bdfb7 Inline the *PtrU functions to gain perf. Remove unneeded params for the
FcCompare* functions.
reviewed by: plam
2005-11-25 03:00:51 +00:00
Patrick Lam 1c9fdccab9 Move FC_BANK_DYNAMIC, FC_BANK_FIRST to internal header.
Check for type validity during FcPatternAddWithBinding, don't verify type
    in FcFontMatch, don't call FcCanonicalize here (which always does a
    deep copy).
reviewed by: plam
2005-11-24 21:40:20 +00:00
Patrick Lam 4f8b266fd9 Make FcCompareString and FcCompareFamily less expensive. Only add a value
for FC_FAMILY if the proposed value is a string.
reviewed by: plam
2005-11-24 20:20:26 +00:00
Patrick Lam b97a34b592 Inline FcDebug invocations and only initialize once, in FcInit*. Improve
debug msg in FcPatternPrint.
reviewed by: plam
2005-11-24 19:38:05 +00:00
Patrick Lam adac22f290 Manually perform inlining & partial redundancy elimination to reduce calls
to FcValueListPtrU.
Only invoke strlen() when really necessary.
reviewed by: plam
reviewed by: plam
2005-11-22 04:46:55 +00:00
Patrick Lam 824c7bf025 Get rid of the use of freetype internal headers in fcfreetype.c, since
those headers will go away with freetype 2.2. Replace with public
    domain ftglue code from pango. Note that the patch removes some extra
    error checking in FT_Get_BDF_Property() and comments out the skipping
    of empty pcf fonts.
reviewed by: plam
2005-11-19 22:37:24 +00:00
Patrick Lam 8ebf7725a8 Get rid of the use of freetype internal headers in fcfreetype.c, since
those headers will go away with freetype 2.2. Replace with public
    domain ftglue code from pango. Note that the patch removes some extra
    error checking in FT_Get_BDF_Property() and comments out the skipping
    of empty pcf fonts.
reviewed by: plam
2005-11-19 22:32:13 +00:00
Patrick Lam 8f2a807810 Don't crash when fc-cat invoked with no arguments.
Fix invalid read access caused by premature free and GCC4 warnings in
    libxml2 codepath.
reviewed by: plam
reviewed by: plam
2005-11-18 20:32:30 +00:00
Patrick Lam 82912b062b List iteration not needed in FcConfigValues, since it's building up the
list itself; we can just strip FcVoid elements during construction.
reviewed by: plam
2005-11-18 04:21:10 +00:00
Patrick Lam 38b2ecad5a Fix crash on invalid constants in config files (forgot to update a pointer
upon list iteration.)
2005-11-17 16:46:07 +00:00
Patrick Lam f28472fdb4 Complain about invalid constants in config files.
reviewed by: plam
2005-11-17 16:17:05 +00:00
Patrick Lam 1c5b6345b9 Don't add current_arch_start more than once.
Fix ordering of ALIGN with respect to saving block_ptr; add another ALIGN
    to fcfs.c.
reviewed by: plam
2005-11-17 15:43:39 +00:00
Patrick Lam 8e351527bb src/fccache.c (FcDirCacheProduce)
Fix case where alignment bytes bumped up metadata->count causing
    unwarranted failures to write cache files. (Reported by Stephan Kulow).
2005-11-16 17:49:01 +00:00
Patrick Lam 7fd7221e68 Add *NeededBytesAlign(), which overestimates the padding which is later
added by the new ALIGN macro. Fix alignment problems on ia64 and s390
    by bumping up block_ptr appropriately. (Earlier version by Andreas
    Schwab).
Use sysconf to determine proper PAGESIZE value; this appears to be
    POSIX-compliant. (reported by Andreas Schwab)
reviewed by: plam
2005-11-16 15:55:17 +00:00
Patrick Lam 82f35f8bb4 Fix bug 2878 (excessive relocations at startup for charsets, reported by
Ross Burton): fc-lang/fc-lang now creates the static form of the
    langset, not the dynamic form, so that the charsets should now be in
    .rodata.
2005-11-04 19:31:26 +00:00
Patrick Lam 50544b13c1 Add test for validity of directory caches that somehow got lost (reported
by make distcheck).
2005-11-04 16:48:32 +00:00
Patrick Lam ea9726b620 Fix argument ordering problem in call to FcPatternTransferFullFname. 2005-11-03 04:45:57 +00:00
Patrick Lam 7358dae49b Fix warnings and embarrassing double-free error. 2005-11-03 04:23:22 +00:00
Patrick Lam d7b3ac6367 Don't zero out full names for FC_REF_CONSTANT fonts; also, duplicate full
names when transferring, and free full names when freeing the
    associated font. Reported by Jinghua Luo.
2005-11-02 15:29:53 +00:00
Patrick Lam 303bcf9b9d Revert the previous patch and commit the correct patch: I forgot a
canonicalization in FcValueListSerialize, so that it would choke on
    already-serialized input files. Duh!
2005-11-02 07:37:00 +00:00
Patrick Lam 9090cb9ece Fix thinko: actually, the whole global cache is stale if the global cache
is older than the (newest) config file.
2005-11-02 06:39:23 +00:00
Patrick Lam 2b25f00c50 Declare the global cache of a directory's contents to be stale if the
directory is newer than the (newest) configuration file. S:
    ----------------------------------------------------------------------
2005-11-02 06:29:14 +00:00
Patrick Lam 793154ed8d Copy the full pathname whenever duplicating an FcPattern; otherwise,
applications continue breaking.
2005-11-01 06:57:25 +00:00
Patrick Lam d6946c1a11 Fix small memory error (tried to free argv); use basename and dirname
correctly (they can modify their arguments).
2005-11-01 05:52:28 +00:00
Patrick Lam e77c17184a Reinstate basename patch, but keep a hash table linking FcPatterns to their
fully-qualified font names for clients' benefit. Clients only pay for
    the font names once they request the FC_FILE property from an
    FcPattern, but the font name is malloc'd at that point (i.e. not
    mmapped: that's impossible, since it may vary between machines.)
    Clients do have to pay for a copy of the path name per cache file.
Note that FcPatternGetString now does some rewriting if you ask for an
    FC_FILE, appending the pathname as appropriate.
2005-11-01 05:26:27 +00:00
Patrick Lam be99726f67 Revert basename patch, which breaks fontconfig clients on my system. 2005-10-31 06:02:00 +00:00
Patrick Lam 720298e773 Add FC_EMBEDDED_BITMAP object type to tell Xft/Cairo whether to load
embedded bitmaps or not.
reviewed by: plam
2005-10-26 06:34:29 +00:00
Patrick Lam 961d9b9993 Only add basename to patterns' FC_FILE element, not any part of the
dirname.
2005-10-25 22:29:13 +00:00
Patrick Lam 573da72910 Add some more consts, fixing more GCC4 warnings. 2005-10-22 15:12:05 +00:00
Patrick Lam 904426816d Support localized font family and style names. This has been reported to
break old apps like xfd, but modern (gtk+/qt/mozilla) apps work fine.
reviewed by: plam
2005-10-22 14:21:14 +00:00
Patrick Lam e58b50e88c Destroy the global cache file if it's terminally broken. (reported by Mike
Fabian)
2005-10-21 20:24:30 +00:00
Patrick Lam 2fa3f27e68 Prevent fc-list from escaping strings when printing them. 2005-10-21 19:47:43 +00:00
Patrick Lam 21696e5bf0 Add consts to variables so as to move arrays into .rodata.
reviewed by: plam
2005-10-14 21:02:31 +00:00
Patrick Lam 15d7bd0a16 Check existence of directory cache file before attempting to unlink.
reviewed by: plam
2005-10-14 20:56:27 +00:00
Patrick Lam 1178b56976 Fix flipped return value on unlink. (Reported by Mike Fabian) 2005-10-13 12:32:14 +00:00
Patrick Lam 2eb8437406 When fc-cache is run without --force, use directory cache files to speed up
fc-cache run time.
2005-10-12 07:55:42 +00:00
Patrick Lam 23787a8f1b Add padding to make valgrind and glibc not hate each other when calling
strlen().
2005-10-06 20:45:25 +00:00
Patrick Lam edffd3b964 Fix typo in manually applying patch. 2005-10-05 21:12:25 +00:00
Patrick Lam 1ed67f658c Use libtool -no-undefined flag on all platforms.
reviewed by: plam & keithp
2005-10-05 19:32:41 +00:00
Patrick Lam 751932ddb1 Implement move-to-front array for banks (perf regression reported by Ronny
V. Vindenes).
2005-10-05 18:41:55 +00:00
Patrick Lam 55c8fa4f08 Add new API which unlinks directory caches and checks dir caches for
existence of appropriate sections. Fix fc-cache to unlink stale cache
    files and save directory caches that lack relevant sections.
2005-10-05 00:34:52 +00:00
Patrick Lam 6bf2380478 Ensure that a directory cache has the appropriate section before reporting
that it is valid (reported by Matthias Clasen).
2005-10-03 19:51:11 +00:00
Patrick Lam e99f0f0a45 Use libxml2 if requested (with --enable-libxml2) or if expat is not
available.
reviewed by: plam
2005-09-29 20:53:30 +00:00
Patrick Lam 649cc3616d Fix multi-arch cache files: compute the position for the block to be added
using info from OrigFile, not NewFile.
2005-09-29 05:14:04 +00:00
Patrick Lam cd3109114c Cast results of sizeof() to unsigned int to get rid of warnings on x86_64
(thanks Matthias Clasen).
2005-09-28 16:21:14 +00:00
Patrick Lam 1d879de2d9 Use FcAtomic to rewrite cache files. 2005-09-28 00:23:15 +00:00
Patrick Lam 099f9a8683 Don't unlink the fonts.cache-2 file even if there's no data to write; just
write an empty cache file. (thanks Lubos Lunak)
2005-09-27 15:52:58 +00:00
Patrick Lam 6aee8c6faa Allocate room for the subdirectory names in each directory cache. Thanks to
James Cloos for finding and diagnosing this bug!
2005-09-27 05:43:08 +00:00
Patrick Lam a9698bed65 Update documentation -- fc-cache's man page now says that you need to run
fc-cache once per cached architecture; add some documentation to the
    FcCache structure.
Make fc-cache write out fonts.cache-2 files for directories with no fonts
    (i.e. only subdirectories).
2005-09-23 04:09:37 +00:00
Patrick Lam e3ff8a4ea6 Remove debugging printf (oops). 2005-09-23 02:33:55 +00:00
Patrick Lam bef069e19e Convert fromcode to char[12] from char *. 2005-09-23 02:08:40 +00:00
Patrick Lam c7beacf916 Small patch for output in case where lineno not defined. 2005-09-23 01:48:33 +00:00
Patrick Lam 67accef4d3 Fix more gcc4 warnings:
- Cast sizeof to int, to shut up signedness warnings in comparison.
- Add consts where appropriate.
reviewed by: Patrick Lam <plam@mit.edu>
2005-09-22 23:45:53 +00:00
Patrick Lam 141432505a Fix bug when clients use FcNameRegisterObjectTypes; fontconfig was
returning bogus (i.e. duplicate) FcObjectPtr values. Now use negative
    values for dynamic object strings and positive values for built-in and
    FcNameRegisterObjectType strings. Thanks to Matthias Clasen for
    pinpointing this bus!
2005-09-22 20:49:24 +00:00
Patrick Lam 9fe2bd7ab0 Add missing FcValueCanonicalize on call to FcPatternAdd. 2005-09-16 04:57:18 +00:00
Patrick Lam 13cdf60753 Revert ill-advised addition of FC_RENDER. Add strategy for handling objects
that aren't hardcoded into fontconfig, but generated by fontconfig
    clients: keep another array of user-defined objects (indexed after the
    built-in objects).
Fix compilation warning (uninitialized variable).
Add comment.
2005-09-15 20:36:44 +00:00
Patrick Lam 0fa237d1e0 Add a global binding for the 'render' pattern element used by Xft; the lack
of said binding prevented programs from using FcPatterns through Xft.
2005-09-11 05:17:28 +00:00
Patrick Lam 8245771d5a Merge with HEAD and finish the GCC 4 cleanups (no more warnings!) 2005-09-11 02:16:09 +00:00
Patrick Lam 8cb4c56d99 Robustness fixes: check return values from read and lseek; fix
uninitialized variables; ensure progress on FcCacheSkipToArch.
2005-09-07 15:38:46 +00:00
Patrick Lam 03a212e525 Really fix the global cache: make sure we're reading and writing the same
data format. Also match subdirectories when consuming cache
    information. Also check dates for global cache: a dir is out of date if
    it is newer than the global cache; scan it manually if that's the case.
2005-09-03 04:56:56 +00:00
Patrick Lam f6ee3db5f0 Fix addressing in the global cache file, preventing infinite loops. Get rid
of unused variables.
2005-09-02 06:16:49 +00:00
Patrick Lam 07b3e57663 Apply Matthias Clasen's patch to fix obvious bogosity (i.e. missing
FcObjectPtrU).
2005-09-01 18:29:28 +00:00
Patrick Lam 0230c9f887 Fix embarassing attempt to free a static buffer. 2005-09-01 06:59:44 +00:00
Patrick Lam 2304e38f9b :
Save subdirectory names in cache files to save time. This completely
    restores the original fontconfig API, BTW. Note that directories
    without fonts don't get a cache file; but then how many files would it
    have in that directory...
2005-09-01 06:14:46 +00:00
Patrick Lam 5e678e9459 Only load requested fonts for fc-cache, and cleanup memory handling:
*Serialize no longer mutates original FcPatterns, it creates a new copy
    in the supplied buffer. Fix thinkos in global cache freeing and in
    FcCacheSkipToArch.
2005-08-31 15:12:41 +00:00
Patrick Lam fd77c154af Fix compilation error exposed with gcc 2.95. 2005-08-30 23:03:42 +00:00
Patrick Lam eb0cf67144 src/fcint.c
The global cache now uses the same mmap-based cache infrastructure as the
    per-directory caches. Furthermore, the global cache is automatically
    updated (if possible) whenever fontconfig is used. Rip out remnants of
    the old cache infrastructure.
2005-08-30 05:55:13 +00:00
Patrick Lam 2dbe759762 Emit and verify machine signature (sizeof (stuff) + endianness) in cache
files. Fix bugs in FcCacheBankToIndex.
2005-08-28 05:20:23 +00:00
Patrick Lam 7f37423d8c Replace FcObjectStaticName by FcStrStaticName. Implement serialization of
'object' table (strings pointed to by FcPatternElt->object and used as
    keys) and loading of object table from cache file if more strings are
    present in cache file than in current version of fontconfig. Hash the
    object table in memory.
2005-08-27 02:34:24 +00:00
Patrick Lam 1b7be37790 Reinstate the old global cache code. For the forseeable future, it's
probably all right to use the global cache as it was previously and
    just store filenames and font info, as long as no mmap cache exists in
    the directory. Of course, if an mmap cache exists, use that instead.
If a directory cache does not exist or is invalid, load the fonts for just
    that directory using the old codepath.
Fix premature free of the FcPatterns belonging to the FcFontSet which we
    create from the mmapped files.
2005-08-25 07:38:02 +00:00
Patrick Lam 4262e0b385 Overhaul the serialization system to create one mmapable file per directory
and distribute bytes for each directory from a single malloc for that
    directory. Store pointers as differences between the data pointed to
    and the pointer's address (s_off = s - v). Don't serialize data
    structures that never actually get serialized. Separate strings used
    for keys from strings used for values (in FcPatternElt and FcValue,
    respectively). Bump FC_CACHE_VERSION to 2.
2005-08-24 06:21:30 +00:00
Patrick Lam 212c9f437e #ifdef out old cache stuff, replace with first version of new mmapping
cache. Add *Read and *Write procedures which mmap in and write out the
    fontconfig data structures to disk. Currently, create cache in /tmp,
    with different sections for each architecture (as returned by uname's
    .machine field. Run the fc-cache binary to create a new cache file;
    fontconfig then uses this cache file on subsequent runs, saving lots of
    memory. Also fixes a few bugs and leaks.
2005-07-25 04:10:09 +00:00
Patrick Lam e1b9d091c6 Forward port cworth's patch to branch. 2005-07-15 18:49:12 +00:00
Patrick Lam 0fa680f076 Convert ObjectPtr from a fat structure to a simple index into an id table;
ids can be positive (for static strings) or negative (for dynamic
    strings). Static strings belong to a single buffer, while dynamic
    strings are independently allocated.
2005-07-07 12:09:10 +00:00
Patrick Lam cd2ec1a940 Add functionality to allow fontconfig data structure serialization.
This patch allows the fundamental fontconfig data structures to be
    serialized. I've converted everything from FcPattern down to be able to
    use *Ptr objects, which can be either static or dynamic (using a union
    which either contains a pointer or an index) and replaced storage of
    pointers in the heap with the appropriate *Ptr object. I then changed
    all writes of pointers to the heap with a *CreateDynamic call, which
    creates a dynamic Ptr object pointing to the same object as before.
    This way, the fundamental fontconfig semantics should be unchanged; I
    did not have to change external signatures this way, although I did
    change some internal signatures. When given a *Ptr object, just run *U
    to get back to a normal pointer; it gives the right answer regardless
    of whether we're using static or dynamic storage.
I've also implemented a Fc*Serialize call. Calling FcFontSetSerialize
    converts the dynamic FcFontSets contained in the config object to
    static FcFontSets and also converts its dependencies (e.g. everything
    you'd need to write to disk) to static objects. Note that you have to
    call Fc*PrepareSerialize first; this call will count the number of
    objects that actually needs to be allocated, so that we can avoid
    realloc. The Fc*Serialize calls then check the static pointers for
    nullness, and allocate the buffers if necessary. I've tested the
    execution of fc-list and fc-match after Fc*Serialize and they appear to
    work the same way.
2005-06-28 03:41:02 +00:00
Keith Packard f1a42f6b5f Make FcOpNotContains use FcStrStr for strings so that it matches semantics
for !FcOpContains.
reviewed by: keithp
2005-06-17 03:01:43 +00:00
Keith Packard 716ac8b803 Don't force bitmap font enable in default configuration; allows users to
override this in ~/.fonts.conf
Updated translations
Destroy font configuration on exit to help valgrind
Use own transcoding routines in preference to iconv which appears to have
    leaks in some translators. Call iconv_close after using iconv (oops).
Prefer unicode encoding of Euro char as some fonts mis-encode Euro in other
    ones.
Must fetch bitmap glyphs to get width values to check for
    monospace/dual-width fonts.
2005-04-21 19:03:53 +00:00
Ross Burton 2ff4f0760a Check that a pattern isn't already frozen in FcPatternFreeze 2005-04-13 09:11:52 +00:00
Ross Burton ae7d0f3593 Put all FcPattern objects though FcObjectStaticName and do pointer trather
than string compares
2005-03-31 19:16:49 +00:00
Tor Lillqvist 156032744e Add the .dll to the dll name. 2005-03-17 08:57:11 +00:00
Tor Lillqvist 79da4fe91f Get the DLL from "bin" where modern libtools put it, not "lib".
Check also drive letter prefix on Win32.
2005-03-09 00:47:11 +00:00
Keith Packard 76a8dfa337 Include space and remove numbers from valid script tags. This ensures that
tags like 'lao ' work while rejecting those which have any digits.
    Eliminate a spurious debugging variable (len)
2005-03-05 23:50:55 +00:00
Keith Packard 219f7818da Rework GSUB/GPOS script parsing to survive broken fonts. Thanks for the
broken font go to Manish Singh
2005-03-05 23:34:57 +00:00
Keith Packard 97bde49a2b Josselin Mouette:
Include 2.3 release information in changelog Add Josselin Mouette as an
    Uploader Set hinting_type to low priority configuration option
Manish Singh:
yes_bitmaps.conf -> yes-bitmaps.conf
Funda Wang:
Johap -> Johab
2005-03-05 20:58:39 +00:00
Keith Packard 0c009d2b6d Generate and install PDF versions of the manuals
Fix formatting
Add missing exported functions, fix data types
Add missing pattern elements.
Add missing pattern elements. Document conf.d usage, clarify available
    orthography list. Fix some config file attributes. Complete list of
    constants.
Mark FC_SOURCE deprecated.
Don't set FC_SOURCE any longer.
2005-03-01 20:36:48 +00:00
Keith Packard 414f720281 Create prototype /etc/fonts/conf.d directory with a few sample
configuration files. Deprecate use of local.conf for local
    customizations in favor of this directory based scheme which is more
    easily integrated into installation systems.
Tag FC_EMBOLDEN as a boolean variable
2005-02-28 18:56:15 +00:00
Keith Packard 47b49bf14b Free patterns from fonts which are rejected by configuration (bug #2518)
reviewed by: pborelli@katamail.com
2005-02-10 23:00:51 +00:00
Keith Packard ca60d2b5c5 Polite typechecking for test and edit expressions. Helps catch errors in
the font configuration.
2005-01-28 23:55:14 +00:00
Keith Packard d8ae9c9219 Add SEE ALSO section (bug 2085)
Cross compiling fixes (bug 280)
reviewed by: Keith Packard <keithp@keithp.com>
2005-01-13 18:31:50 +00:00
Keith Packard fce87a189b Verify that every font pattern loaded from cache has both FC_FILE and
FC_FAMILY entries. Attempt to fix bug #2219.
2005-01-04 21:54:50 +00:00
Keith Packard 479f551f6d Document ASCII limitations of Fc character conversion macros
Fix off-by-one error in utf-8 case walking code. Add FcStrDowncase (useful
    for testing case conversion functions)
2004-12-29 19:37:14 +00:00
Keith Packard 192296d852 Adopt some RedHat suggestions for standard font configuration.
Add new helper program 'fc-case' to construct case folding tables from
    standard Unicode CaseFolding.txt file
Re-implement case insensitive functions with Unicode aware versions
    (including full case folding mappings)
2004-12-29 09:15:17 +00:00
Keith Packard 5cf8c5364f I changed FcFontSetSort to respect the generic aliases better in the face
of language matching.
What I did was to ammend the strict sort order used by FcFontSort so that
    it 'satisfies' the language specified in the pattern by locating the
    best matching font supporting each pattern language and then ignores
    language in the remaining fonts for purposes of matching.
So, when asking for 'sans:lang=en', you'll get an English font first, and
    then the remaining fonts sorted with respect to the 'sans' alias alone
    -- pushing Kochi fonts ahead of other English-supporting Han fonts.
reviewed by: Owen Taylor <otaylor@redhat.com>
2004-12-14 00:12:25 +00:00
Keith Packard 1c52c0f060 Reviewed by: Keith Packard <keithp@keithp.com>
memoize strings and share a single copy for all uses. Note that this could
    be improved further by using statically allocated blocks and gluing
    multiple strings together, but I'm basically lazy. In my environment
    with 800 font files, I get a savings of about 90KB.
2004-12-07 01:36:26 +00:00
Keith Packard 46b51147d1 Change files from ISO-Latin-1 to UTF-8 2004-12-07 01:14:46 +00:00
Keith Packard c5a0b541df Just remove the FC_FONTDATE -- it has locale issues and annoys redhat
multi-arch installs. Now that all X fonts are included without
    prejudice, the chances of the date being at all interesting are rather
    limited. Bug #415.
Add copyright and license
2004-12-05 05:49:20 +00:00
Keith Packard 2d9c79c049 Change default set of fonts to include all of /usr/X11R6/lib/X11/fonts (or
wherever the X fonts are located).
Document new <include>directory-name</include> semantics
add <include ignore_missing="yes">conf.d</include>
Add selectfont to ignore bitmap fonts, add comment for selectfont which
    accepts bitmap fonts.
Allow <include> configuration elements to reference directories. Parse and
    load all files of the form [0-9]* in sorted order.
2004-12-05 05:03:52 +00:00
Keith Packard e4125ef950 Check for non-empty face->family_name and face->style_name before using
those for the font. Empty names match everything. Bug #171.
2004-12-05 04:11:11 +00:00
Keith Packard 537e3d23fa Create FC_FONTFORMAT from FT_Get_X11_Font_Format function where available.
This provides font file format information (BDF, Type 1, PCF, TrueType)
    for each font. Closes #109.
2004-12-05 00:26:06 +00:00
Keith Packard dbf68dd5fe Fix typo.
Add detection for font capabilities (bug #105)
reviewed by: Keith Packard <keithp@keithp.com>
2004-12-04 22:06:52 +00:00
Keith Packard 4f27c1c0a3 Move existing fonts.conf to fonts.conf.bak
Add detection of iconv
Document new selectfont elements
Switch to UTF-8 in comment
Add fullname, and family/style/fullname language entries
Respect selectfont/*/glob
Add support for selectfont
Add multi-lingual family/style/fullname support
Expose FcListPatternMatchAny (which selectfont/*/pattern uses)
Add new FcPatternRemove/FcPatternAppend. FcObjectStaticName stores computed
    pattern element names which are required to be static.
2004-12-04 19:41:10 +00:00
Keith Packard 28f93bc412 Provided by: Lubos Lunak <l.lunak@suse.cz>
However FcConfigUptoDate() doesn't seem to work. See the attached patch.
    First there's an obvious misplaced parenthesis making it return always
    false, and second, even this call fails to detect font changes (e.g.
    adding a new font to /usr/X11R6/lib/X11/fonts/truetype). The patch
    should fix that as well. The problem seems to be triggered by my
    fonts.conf specifying only /usr/X11R6/lib/X11/fonts , and therefore
    config->configDirs doesn't include subdirs, unlike config->fontDirs.
2004-06-30 18:41:52 +00:00
Keith Packard ec0c740e39 Add FcResultOutOfMemory to provide an accurate error when FcFontSetMatch
fails in this way
Make #warning about lacking various FreeType features indicate which
    version those features appeared so users know how to fix the problem
    (Thanks to Anton Tropashko)
2004-05-29 19:32:41 +00:00
Keith Packard 55a69bd0ae Replace MIN/MAX/ABS macros which happen to have come from FreeType with
fontconfig-specific ones (FC_*)
2004-05-06 02:28:37 +00:00
Keith Packard 6ae6acf317 Add instructions for doing a release
clean up .spec file; perhaps this will be useful to somebody...
Update to 2.2.93
Make 'scanopen' static so GCC doesn't whine about lacking prototype
Add WARN_CFLAGS to pass -W flags for GCC systems
Change various char types around to match across function calls. Fixed bug
    in using available_sizes[i].height which is in pixels, not 64ths of a
    pixel.
2004-04-14 18:08:41 +00:00
Keith Packard 89e28590f3 Force FC_FOUNDRY and FC_WIDTH to always be set so that matches looking for
explicit values prefer exact matches
2004-03-06 23:44:11 +00:00
Keith Packard 02638f1ace Supplied by: mfabian@suse.de (Mike FABIAN)
Bug #260 fc-cache generates wrong spacing values for bitmap fonts Was using
    (strcmp (a,b)) instead of (!strcmp(a,b)).
2004-03-02 16:48:51 +00:00
Keith Packard 208a720f00 Ok, so I messed up the test for y_ppem. Let's see if I got it right this
time.
2004-02-11 18:53:05 +00:00
Keith Packard 4f38fa8106 Pre-2.1.5 versions of FreeType didn't include y_ppem in the FT_Bitmap_Size
record. Add a configure.in test for this and change the code
    accordingly (using height instead).
2004-02-10 18:38:58 +00:00
Keith Packard b68b96464f Add Low Saxon orthography (Kenneth Rohde Christiansen <kenneth@gnu.org>)
Oops. Left 'newest.set' unset, which would miscompute the newest file
Add FcGetPixelSize to extract correct pixel size from bdf/pcf font
    properties (which report the wrong value in current FreeType)
Don't attempt to check for empty glyphs in non-scalable fonts; they have no
    outlines...
2004-02-07 07:13:48 +00:00
Tor Lillqvist f4c52909ab fontconfig, at least as used by GIMP and/or PangoFT2 on Windows, crashes
when trying to save the cache if config->cache is NULL, which happens
    if FcConfigHome() is NULL. Guard against that by using the temp folder
    in that case.
2004-02-01 19:32:36 +00:00
Keith Packard 408dd9c07a Switch to FreeType 2.1.7 style includes. Bug #150.
reviewed by: Keith Packard <keithp@keithp.com>
2003-11-18 07:53:04 +00:00
Roozbeh Pournader 344a0e3361 Fixed a bug "FcStrtod" in handling some cases with two-byte decimal
separators.
2003-11-10 17:34:36 +00:00
Owen Taylor f077d662c0 Add a FC_HINT_STYLE key for patterns, with possible values
HINT_NONE/HINT_SLIGHT/HINT_MEDIUM/HINT_FULL. (Bug #117)
2003-09-23 20:12:20 +00:00
Noah Levitt a05d257fb3 Add new spacing value FC_DUAL (dual-width, as some CJK fonts). (bug #111)
When checking for monospace and dual-width fonts, allow roughly a 3%
    variance in the advances.
2003-09-06 19:40:41 +00:00
Manish Singh 3ef32bcdc4 FcConfigAppFontClear: Support passing NULL to use default config. 2003-09-01 05:11:17 +00:00
Carl Worth 34cd0514a2 Added new FcFini function for cleaning up all memory. Fixed a few memory
leaks. fc-list now calls FcFini, (and is now leak-free according to
    valgrind)
2003-08-15 19:45:20 +00:00
Keith Packard 74a623e02e Implement new semantics for Contains and LISTING:
LISTING requires that the font Contain all of the pattern values, where
    Contain is redefined for strings to mean precise matching (so that
    Courier 10 Pitch doesn't list Courier fonts)
"Contains" for lang means both langs have the same language and either the
    same country or one is missing the country
2003-07-20 16:06:18 +00:00
Keith Packard 26da2bb42f Was miscomputing end of string position for FcStrtod in locales with
multibyte separators
2003-07-09 17:04:17 +00:00
Keith Packard 656c69d6a8 Add autoconf checks for FT_Has_PS_Glyph_Names 2003-06-26 08:19:11 +00:00
Keith Packard ee1debfdd9 Allow config->cache to be null (as it is when $HOME is not set) 2003-06-26 00:39:04 +00:00
Keith Packard 79621aa5c7 Lean on autoconf to find useful FreeType functions (bug 95) 2003-06-25 23:21:03 +00:00
Tor Lillqvist 92af858f2a Trivial braino. 2003-06-15 22:45:12 +00:00
Tor Lillqvist c3941ba9c0 Fix cut&paste error. 2003-06-15 22:35:52 +00:00
Tor Lillqvist e5206dbcb3 Check also for DLL_EXPORT as indication of being built as a DLL on Win32. 2003-06-13 23:04:35 +00:00
Tor Lillqvist ee1d81259e Add share/doc directory. Add Fc*.3 man pages.
Set FC_DEFAULT_FONTS on Win32 to the WINDOWSFONTDIR token.
Move the LIBRARY and VERSION lines to the end, not to confuse libtool,
    which expects the EXPORTS line to be the first. Add FcConfigEnableHome.
2003-06-13 22:43:28 +00:00
Keith Packard 947afeb566 Optimization in FcLangSetIndex was broken, occasionally returning a pointer
to the wrong location on miss
2003-06-09 17:31:03 +00:00
James Su d4d1e8bc60 Fix "contains" op for strings and langsets. 2003-05-28 01:34:38 +00:00
Keith Packard 53183e66e5 Fix build error with BDF prop local. Free langset after query 2003-05-17 02:17:19 +00:00
Keith Packard f777f1b35d oops. Left the psfontinfo.weight matching code commented out while testing
other stuff...
2003-05-16 16:37:16 +00:00
Juliusz Chroboczek ecb7c180d0 Extract spacing from XLFD atom 2003-05-14 20:23:24 +00:00
Keith Packard 0b7a0da20b Use FcIsWidth to share code
Set FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH when scanning fonts to avoid
    misclassifying some Han fonts as monospaced.
2003-05-12 20:48:59 +00:00
Juliusz Chroboczek 65d1441df8 Reinstate SETWIDTH_NAME parsing for legacy fonts, disappeared in 1.30. 2003-05-12 09:11:10 +00:00
Juliusz Chroboczek 0f362ad520 Generate FC_SIZE and FC_DPI for legacy bitmap fonts 2003-05-12 09:04:24 +00:00
Keith Packard d47c9d6efe Add filename-based accept/reject to ammend available fonts.
change FT_ENCODING_ADOBE_CUSTOM to ft_encoding_adobe_custom for older
    FreeType releases.
2003-05-07 16:13:24 +00:00
Keith Packard 8ef6a58cb0 Add more .cvsignore entries 2003-05-04 22:58:29 +00:00
Keith Packard 7769c3213d Handle Adobe glyph names for fonts which include ADOBE_CUSTOM encodings 2003-05-04 22:53:49 +00:00
Keith Packard 11fec41c0e Grub through style to find weight/slant/width values when other techniques
fail
2003-05-02 01:11:53 +00:00
Keith Packard 1f71c4d878 Add book constant for book weight 2003-05-02 01:11:09 +00:00
Keith Packard 3760a63825 Add demi and book postscript weight names. Allow spaces in postscript and X
matching
2003-05-01 14:31:04 +00:00
Keith Packard 1af9b7b4d9 Typo in bitstream foundry name 2003-04-30 15:17:42 +00:00
Keith Packard 70ee88099e Debug output for unknown ps weight names. ignore italic_angle for PS fonts
as FreeType already checks that
2003-04-24 17:31:03 +00:00
Keith Packard f45d39b1fd FcFontList broken when presented a charset - was comparing inclusion in the
wrong direction
2003-04-24 15:29:33 +00:00
Keith Packard 5f84b65a26 Handle pattern elements moving during multiple edits 2003-04-22 06:27:27 +00:00
Keith Packard 965f77940c From James Su -- only part of page 0xff is Latin 2003-04-20 04:44:09 +00:00
Keith Packard 29d961a28e Guard calls to FT_Get_BDF_Property to avoid freetype jumping through null
pointer
2003-04-18 15:56:05 +00:00
Keith Packard 3a30abdb84 Pass FONTCONFIG_PATH in arguments to get expanded 2003-04-17 21:50:24 +00:00
Keith Packard 2b2f2a714a BDF properties not available until FreeType 2.1.4 2003-04-17 21:29:12 +00:00
Colin Walters 12d49d3cf4 Remove some unused variables, and initialize some other ones so gcc doesn't
warn us.
2003-04-17 17:43:04 +00:00
Keith Packard 0e7a434783 Search through the BDF properties for width and foundry information 2003-04-16 18:08:47 +00:00
Keith Packard 2e2121f910 Move foundry detection data into fcfreetype.c (which is getting rather
large at this point)
2003-04-16 16:19:38 +00:00
Keith Packard 3f7653c2ba Fix unary operator parsing. Add floor, ceil, trunc and round unary
operators
2003-04-15 23:38:06 +00:00
Keith Packard 52253696cd Clean up ps font weight matching and check for NULL 2003-04-15 17:01:39 +00:00
Juliusz Chroboczek 2ae95e77f7 Implemented foundry generation for Type 1 and TrueType 2003-04-11 23:45:59 +00:00
Keith Packard 9f2bcb3e41 Switch to locale-independent string compare function 2003-04-11 22:24:23 +00:00
Keith Packard d6ea834746 Bug #46, #47 fontconfig should retrieve type 1 font information from
FontInfo dictionary Patch provided by g2@magestudios.net (Gerard
    Escalante)
2003-04-11 22:17:11 +00:00
Colin Walters 15b49a7fbe Fix dummy makefile target names when MS_LIB_AVAILABLE isn't set. 2003-04-08 03:58:08 +00:00
Keith Packard 848d32bd3f Set spacing to mono if every encoded glyph is the same width 2003-03-28 17:08:35 +00:00
Tor Lillqvist daeed6e048 Changes for Windows:
On Windows with gcc (a.k.a. mingw) build as a DLL.
We don't want to hardcode the fonts.conf file location in the DLL, so we
    look up the DLL location at run-time in a DllMain() function. The
    fonts.conf location is deduced from that.
The colon can't be used as path separator on Windows, semicolon is used
    instead. File path components can be separated with either slash or
    backslash. Absolute paths can also begin with a drive letter.
Add internal function FcStrLastSlash that strrchr's the last slash, or
    backslash on Windows.
There is no link() on Windows. For atomicity checks, mkdir a lock directory
    instead.
In addition to HOME, also look for USERPROFILE.
Recognize the special font directory token WINDOWSFONTDIR, to use the
    system's font directory.
Remove the fontconfig-def.cpp that was obsolete. Add fontconfig.def(.in),
    without internal functions.
Add a fontconfig-zip(.in) script, used to build a binary distribution.
2003-03-22 21:25:34 +00:00
Keith Packard cc9dd09816 switch // comment 2003-03-22 01:55:00 +00:00
Keith Packard f4007a6728 Avoid crashing on empty test/edit lists 2003-03-20 02:00:15 +00:00
Keith Packard 1b16ef20c9 FcCharSetIsSubset errored on fonts with subsets in early blocks and extra
blocks not present in the second argument
2003-03-18 08:03:42 +00:00
Keith Packard 81fa16c336 add font widths and extend weight from OS/2 table 2003-03-12 22:16:43 +00:00
Keith Packard a8386abc91 Global cache time checking was using wrong file name and computing wrong
count of fonts per file
2003-03-12 22:15:39 +00:00
Keith Packard d93fb00e8d optimize string compares even more 2003-03-05 06:09:36 +00:00
Keith Packard 94421e4097 use FcToLower instead of tolower 2003-03-05 05:53:10 +00:00
Keith Packard 55ef7dac64 Add FcLangSetPrint 2003-03-05 05:52:51 +00:00
Keith Packard 793e946c2f AddFcLangSetContains for font listing, add first-letter table for language
lookups, change RCS tag
2003-03-05 05:52:31 +00:00
Keith Packard 4bd4418ab5 Change RCS tag 2003-03-05 05:51:27 +00:00
Keith Packard ff3f1f98ed Switch back to -version-info for fontconfig as its at minor 0. Add
--system-only to fc-cache. Fix FC_VERSION to match product version
    rather than .so version
2003-03-02 19:12:23 +00:00
Keith Packard 8fc10a72ad make dist works now. Update to 2.1.90 in preparation for eventual 2.2
release
2003-03-02 07:28:24 +00:00
Keith Packard 9238fc061d Add --disable-docs flag 2003-03-01 05:21:02 +00:00
Keith Packard 0da305f7f8 Switch to docbook and split documentation into pieces 2003-03-01 03:06:37 +00:00
Keith Packard 148656ed8b Stop setting FC_SPACING from font hints. Theyre always wrong 2003-02-27 07:04:59 +00:00
Keith Packard 662b879681 Avoid crashing with null expressions in debug code 2003-02-27 07:04:31 +00:00
Keith Packard 2d39321f1e Allow double or integer for numeric values in matching 2003-02-26 19:13:17 +00:00
Keith Packard f2aacf1ed9 Add remaining .cvsignore files 2003-02-24 17:52:44 +00:00
Keith Packard 20fa60c9ae Switch to automake 2003-02-24 17:18:50 +00:00
Keith Packard 46d003c34e Dont attempt to use cache if NULL 2003-02-24 16:51:29 +00:00
Keith Packard c4ab52dcb5 Track dirs containing fonts.cache files referenced from ~/.fonts.cache file 2003-02-13 16:42:38 +00:00
Keith Packard dda7794f1b Add "same" binding for edits to inherit binding from matched element 2003-02-12 18:22:12 +00:00
Keith Packard 602e6b1f26 Output langsets and all bindings in debug messages 2003-02-12 18:21:21 +00:00
Keith Packard b2b6903259 Make FcStrCmpIgnoreCase a bit faster 2003-02-12 18:20:04 +00:00
Keith Packard c8d5753c0f Dont cache directorys until theyve been scanned. Avoids losing subdir
contents. Also fixed cache hashing function (was returning constant).
    Lots of comments
2003-02-12 18:19:33 +00:00
Keith Packard d2b5cc7e12 fontconfig is no longer affiliated with xfree86 2003-02-07 00:15:09 +00:00
Keith Packard dda27aa9ee Avoid crash when $HOME is not set 2003-02-06 19:30:32 +00:00
Keith Packard ca4339b8bb Fix inconsistent const usage in FcConfigCompareValue 2003-02-06 19:22:43 +00:00
Keith Packard c647f6f1e4 Build fclang.h before building library This required compiling the charset
funcs into fc-lang, which was done by refactoring code in fccharset.c
    and fcfreetype.c a bit
Updated ethiopic orthographies
Remove imake support
Install empty local.conf file if none is present
2003-02-06 17:46:06 +00:00
David Dawes 432913ead5 677. Fix a segfault in fontconfig (#A.1450, Keith Packard). 2002-12-21 02:31:53 +00:00
David Dawes 234397b429 633. Perform country-independent matching for Chinese languages in
fontconfig (#A.1406, Keith Packard).
2002-12-14 02:03:59 +00:00
David Dawes 45fb31aa91 632. Finish off the UTF-16 APIs in Xft, and fix the UTF-16 conversion code
in fontconfig (#A.1411, Keith Packard, Jungshik Shin).
2002-12-14 01:59:38 +00:00
Keith Packard 7657345c10 In debugging output, mark weakly bound values with (w) 2002-11-22 02:12:16 +00:00
Keith Packard bff801144b Add a bunch more consts to Xft and fontconfig apis 2002-10-11 17:53:03 +00:00
Keith Packard 1852d49035 Add FC_RGBA_UNKNOWN 2002-10-02 07:11:30 +00:00
Keith Packard 2d79b58621 Fix alignment issue on sparc 2002-09-26 00:30:30 +00:00
Keith Packard a342e87dc3 Add fontversion field 2002-09-26 00:17:28 +00:00
Keith Packard e712133ca7 Was losing local cached dirs in global cache list 2002-09-26 00:16:23 +00:00
Marc Aurele La France d1bec8c66d Pacify gcc 3.2 2002-09-18 17:11:46 +00:00
Marc Aurele La France 05336fd8be Fix structure alignment and array wlk bugs 2002-09-12 20:56:03 +00:00
Keith Packard 9dac3c5945 More complete memory tracking. Install always overwrites header files 2002-08-31 22:17:32 +00:00
Keith Packard 2458a6d8d8 FcLangSetHasLang was not actually checking the language set itself 2002-08-26 23:34:31 +00:00
Keith Packard 5d6788ac7e Update ChangeLog, fix some bugs in the man page 2002-08-26 20:52:59 +00:00
Keith Packard f21f40f347 Append version number to cache file names 2002-08-26 19:57:40 +00:00
Keith Packard 0f9a306e71 Add const to a bunch of string APIs 2002-08-24 20:08:53 +00:00
Keith Packard 47d4f9501f Add contains/not_contains, fix LangSet equal operator to use FcLangEqual 2002-08-22 18:53:22 +00:00
Keith Packard d8d7395877 Reimplement FC_LANG as FcTypeLang, freeze patterns, other cleanup 2002-08-22 07:36:45 +00:00
Keith Packard f4fe447f49 Memory leak in XML parsing of matrices (thanks Owen) 2002-08-20 23:17:03 +00:00
Keith Packard fa244f3d88 Various config changes plus a couple of optimizations from Owen 2002-08-19 19:32:05 +00:00
Keith Packard 938bc63358 Fix weird first/not-first lameness in font matches, replacing with target
qualifiers on test elements. Update library manual page.
2002-08-11 18:11:04 +00:00
Keith Packard bd724c8596 Short circuit FcPatternEqual when both args point at the same pattern 2002-08-07 01:45:59 +00:00
Keith Packard 0e344dec0b Update fontconfig manual to match current bits 2002-08-06 19:54:10 +00:00
Keith Packard bb356b68ab Uninitialized member of cache structure could lead to non-updated cache
files
2002-08-06 19:00:43 +00:00
Keith Packard aefb2c41c8 Fix autoconf build BSD install and sysconfdir problems 2002-08-01 15:57:26 +00:00
Marc Aurele La France c2e9d0240b Warning fix 2002-08-01 01:35:02 +00:00
Keith Packard 6fff2cda0a Add binding property to edit element 2002-07-31 01:36:37 +00:00
Keith Packard 327a7fd491 Rewrite global cache handling code in fontconfig to eliminate per-file
syscalls
2002-07-28 10:50:59 +00:00
Keith Packard 1a9ae91a16 Add fclang.c to Makefile.in 2002-07-17 17:51:52 +00:00
Keith Packard 69937bd941 Add some Utf16 support, extract font family and style names from name table
for sfnt fonts
2002-07-13 05:43:25 +00:00
Keith Packard c80d2ac486 Clean up some coverage files; a few accidentally included PUA values and
punctuation. Add debugging stuff to dump out missing codepoints during
    cache building when missing only a few
2002-07-12 21:06:03 +00:00
Keith Packard b4a2c1f012 Add a bunch more languages that use the Latin alphabet 2002-07-12 19:19:16 +00:00
Keith Packard e709ddfa10 Use locale data set FC_LANG by default. Reorder FcPattern and FcValueList
to match Xft1.
2002-07-09 22:08:14 +00:00
Keith Packard 2fcac34973 Trim ideographic punctuation and Suzhou numerals from zh-tw orthography.
Had accidentally swapped codePageRange bits for traditional and
    simplified chinese. Add persian (fa) and HKSCS (zh-hk). Fix possible
    bug in charset walking
2002-07-09 02:28:29 +00:00
Keith Packard e50b9ae711 Update iso639-2 language coverage info, fix Georgian orthography to
eliminate Mingrelian and Svan glyphs, use coverage for inclusion and
    OS/2 for Han exclusion, restructure fclang.c to use fclang.h from
    fc-lang dir
2002-07-08 07:31:53 +00:00
Keith Packard d6dabf3686 Add walloon, update fclang.c to include recent language additions 2002-07-07 19:30:53 +00:00
Keith Packard 3de8881ec9 Add fclang.c to CVS; easier than attempting to build it on the fly 2002-07-07 00:00:43 +00:00
Keith Packard 82f4243f22 Switch to RFC 3066 based lang names 2002-07-06 23:47:44 +00:00
Keith Packard 4c0036053a Add strong/weak pattern value binding, add known charsets for automatic
lang computation
2002-06-29 20:31:02 +00:00
Keith Packard 5c7fb8274c Construct empty constant charsets correctly (using null pointers) 2002-06-26 22:56:51 +00:00
Keith Packard c552f59ba2 Permit empty charsets in fonts.cache files 2002-06-26 22:14:08 +00:00
Keith Packard 223c028949 Steal idea for locale-insensitive strtod from glib 2002-06-26 16:11:29 +00:00
Keith Packard 4aded3e0dd Oops. Made a mistake when adding config file names to monitor list 2002-06-21 07:01:11 +00:00
Keith Packard 4645eedfcc Fix automatic file time checking, transcoding table searches. Actually add
config files used to config structure so they can be time checked as
    well
2002-06-21 06:14:45 +00:00
Keith Packard 8c96d1fc10 Accidentally falling through several case blocks 2002-06-20 03:43:09 +00:00
Keith Packard c689ec2291 Add slanting for fonts without oblique/italic varient. Fix matching code to
make this work
2002-06-19 21:32:51 +00:00
Keith Packard 6f6563edb5 Add ref counting to font config patterns so that FcFontSort return values
are persistant
2002-06-19 20:08:22 +00:00
Keith Packard f534109f5a Add a few more families to fonts.conf, make FC_ANTIALIAS less important for
matching, fix family->generic mapping
2002-06-18 22:23:05 +00:00
Keith Packard 2623c1ebee Fix compiler warning 2002-06-18 16:47:33 +00:00
Keith Packard 5b1bfa5d82 Fix incorrect size in memmove call in FcObjectSetAdd that crashed
FcFontSetList calls
2002-06-18 16:47:12 +00:00
Keith Packard d0f07b8d58 Add FcPatternHash, clean up a few valgrind issues 2002-06-08 17:32:05 +00:00
Keith Packard e9be9cd10a Add FcPatternEqualSubset for Pango, clean up some internal FcPattern
interfaces
2002-06-03 08:31:15 +00:00
Keith Packard 88c747e206 Eliminate some compiler warnings, avoid seg fault when matching missing
values
2002-06-02 21:07:57 +00:00
Keith Packard 2a41214a25 Add aspect ratio support to Xft and fontconfig 2002-06-02 20:52:06 +00:00
Keith Packard 8ec077f22b Expression parsing in fonts.conf file mis-freed elements. Constant identity
matrix was accidentally freed. Add ability to comare FTFace pattern
    elements (not that its all that useful)
2002-06-02 19:51:36 +00:00
Keith Packard be0948508c Add support for user-provided freetype faces to Xft 2002-05-31 23:21:25 +00:00
Keith Packard 20ac65ab00 Change FcCharSet datastructure, add FcFontSort API 2002-05-31 04:42:42 +00:00
Keith Packard bc9469baad Optimize after profiling. Fix FcStrCmp to return correct sign 2002-05-29 22:07:33 +00:00
Keith Packard 1412a69926 Apply some obvious fixes to FcFontSetSort from Owen. Speed up FcCharSet
primitives and FcFontSetSort
2002-05-29 08:21:33 +00:00
Keith Packard ed2547b858 Clean up autoconf install to obey DESTDIR 2002-05-24 06:25:52 +00:00
Keith Packard 3673201215 Change charset enumeration functions to more sensible API 2002-05-24 05:20:02 +00:00
Keith Packard 48db40f692 A few random fontconfig build fixes 2002-05-23 23:00:46 +00:00
Keith Packard 0ab36ca8f9 Replace silly avl sort with qsort, add FcPatternEqual 2002-05-22 04:37:07 +00:00
Keith Packard 446bb9c9e0 More autoconf cleanup for fontconfig 2002-05-21 17:48:15 +00:00
Keith Packard 179c39959c Fix autoconf build process for fontconfig 2002-05-21 17:06:22 +00:00
Alan Hourihane 28e413038d put fontconfig-def.cpp in the right place. 2002-04-10 11:28:10 +00:00
Keith Packard d9db7b9e94 Fix FT_Get_Next_Char API to match official 2.0.9 released version 2002-03-27 04:33:55 +00:00
Marc Aurele La France 8c7b2a9d83 Warning fixes 2002-03-04 21:15:28 +00:00
Keith Packard 216fac98e0 Add match routine that returns list of fonts 2002-03-03 18:39:05 +00:00
Keith Packard ee9061efe9 Eliminate duplicate definitions in fcint.h and fontconfig.h 2002-03-03 18:36:26 +00:00
Keith Packard 5faa099cd5 fontconfig: bail scanning directory on fatal error 2002-03-03 18:35:22 +00:00
Keith Packard 17e16fa110 Eliminate compiler warnings 2002-03-03 18:31:20 +00:00
Keith Packard a391da8f0f Add fcatomic.c 2002-03-03 00:19:43 +00:00
Keith Packard 134f6011f3 Add new FcAtomic datatype for config file locking 2002-03-01 22:06:30 +00:00
Keith Packard 9c8e07f195 Port Xft1 to fontconfig 2002-03-01 01:00:54 +00:00
Keith Packard 80c053b725 Add better error reporting when loading config file 2002-02-28 16:51:48 +00:00
Keith Packard c5350655be Check font edit value lists for empty 2002-02-24 01:23:35 +00:00