Commit Graph

861 Commits

Author SHA1 Message Date
Keith Packard e12f718f65 Remove unneeded call to access(2) in fc-cache.
This call was followed by a call to stat(2) which provided the necessary
information. This call to access(2) was necessary when cache files were
stored in the font directory as that would check for write permission
correctly.
2007-10-18 04:54:51 -07:00
Keith Packard f7da903d37 Make FC_FULLNAME include all fullname entries, elide nothing. [bug 12827]
The old policy of eliding fullname entries which matched FC_FAMILY or
FC_FAMILY + FC_STYLE meant that applications could not know what the
font foundry set as the fullname of the font. Hiding information is not
helpful.
2007-10-18 04:31:33 -07:00
Keith Packard 144ca87831 Comment about mmaping cache files was misleading. 2007-10-18 04:29:13 -07:00
Keith Packard db6f19f13b Store font directory mtime in cache file.
Instead of relying on mtime ordering between a directory and its associated
cache file, write the directory mtime into the cache file itself. This makes
cache file checks more reliable across file systems.

This change is made in a way that old programs can use new cache files, but
new programs will need new cache files.
2007-10-18 04:13:51 -07:00
Keith Packard 00268a50e8 Fix ChangeLog generation to avoid circular make dependency 2007-10-18 03:52:29 -07:00
Keith Packard 3ae9258f9e Free temporary string in FcDirCacheUnlink (Bug #11758)
In FcDirCacheUnlink(), the line

  cache_hashed = FcStrPlus (cache_dir, cache_base);

allocates memory in cache_hashed that is never free()'d before the function
exits.

Reported by Ben Combee.
2007-08-05 12:31:03 -07:00
Keith Packard c80a08d6bf Work around FreeType bug when glyph name buffer is too small.
Recent versions of FreeType do not correctly deal with glyph name buffers
that are too small; work around this by declaring a buffer that can hold any
PS name (127 bytes).
2007-03-12 10:32:23 -07:00
Keith Packard fa741cd4ff rehash increment could be zero, causing rehash infinite loop.
Bump the rehash value by one so that it is always positive.
2007-03-12 10:30:51 -07:00
Stephan Kulow 9b74b78fe8 Make FcPatternDuplicate copy the binding instead of always using Strong.
I noticed that Qt always uses a different font than fc-match advertises.
Debugging the issue, I found that a call that looks pretty innocent is
changing all weak bindings to strong bindings and as such changes the
semantic of the match: FcPatternDuplicate.
2007-03-12 10:21:35 -07:00
Keith Packard 2373f90426 Update for version 2.4.2 2006-12-02 16:09:47 -08:00
Peter Breitenlohner e3b65ee068 Fix fc-cat documentation (bug 8935).
Adapt documentation to reality.

(1) The fc-cat usage message should reflect the
options accepted by the program.

(2) The fc-cat.1 manpage was fairly broken (unreadable).
2006-12-02 15:09:57 -08:00
Keith Packard 61895ed16c Add space between type and formal in devel man pages (bug 8935)
Most parameters are pointers and have '*' in the type; for those
which do not, use '%' to mark where a space needs to be inserted.
2006-12-02 15:06:13 -08:00
Peter Breitenlohner b1aa20098f Use <literal> instead of <sgmltag> when documenting fonts.conf. Bug 8935. 2006-12-02 14:28:03 -08:00
Peter Breitenlohner 2cae0512cd A VPATH build of fontconfig-2.4.1 fails for various reasons. Bug 8933.
VPATH builds without doctools breaks as it cannot find the distributed
pre-formatted documentation.
2006-12-02 14:18:11 -08:00
Keith Packard 0f963b0d3e Segfault scanning non-font files. Disallow scan edit of user vars. (#8767)
Missing NULL font check before attempting to edit scanned pattern.
Also, <match target="scan"> rules are now checked to ensure all
edited variables are in the predefined set; otherwise, the resulting
cache files will not be stable.
2006-12-02 13:57:45 -08:00
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
Keith Packard bae5db78dd Add sparc64 architecture string. 2006-11-12 17:15:24 -08:00
Mike FABIAN 0334e5a294 Do not clean cache files for different architectures
Use filenames to clean cache files for current architecture only. This is
sufficient as cache files live in their own directory where filenames are
under fontconfig control.
2006-10-27 10:26:50 -07: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 6262fefe54 Remove documentation for non-existant FcConfigNormalizeFontDir.
FcConfigNormalizeFontDir was present in some of the 2.3.9x release but not
in the final 2.4 release. However, the documentation persisted.
2006-09-17 13:50:31 -07:00
Keith Packard b9cc1c4ed8 Update for version 2.4.1 2006-09-15 10:12:15 -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 b190ad9da4 Add warning flags to fc-cache build. Clean up warnings in fc-cache.
Looks like the last directory in the project which didn't use $(WARN_CFLAGS)
for some reason. Adding that found the usual collection of char * vs FcChar8
* issues (why, oh why is FcChar8 not just char...)
2006-09-13 18:55:45 -07:00
Keith Packard 7943a75b7d Add signatures for m68k and mipsel (thanks debian buildd) 2006-09-13 18:51:11 -07:00
Keith Packard fb47a1f752 Add ppc64 signature. Bug 8227 2006-09-11 11:10:48 -07:00
Keith Packard 0fc03ffe44 Update installation notes for 2.4 base. 2006-09-11 11:09:26 -07:00
Keith Packard 76c4432223 Update to version 2.4.0 2006-09-09 22:08:40 -07:00
Keith Packard 6c5619a085 Split much of the configuration into separate files. Renumber files
Most of the remaining elements in fonts.conf have been moved to separate
files. The numbering scheme for conf.d files has been documented in the
README and the files have been renumbered. Config files have been
validated against the DTD and a few minor errors fixed.
2006-09-09 21:32:14 -07:00
Keith Packard 9596dce93b Don't display tests for DESTDIR on make install.
Make install output quieter by eliding the shell commands
used to test for DESTDIR being set during make install.
2006-09-09 21:30:06 -07:00
Keith Packard d08feb851a Include cachedir in fonts.dtd.
Fonts.dtd <fontconfig> element was missing the new cachedir element.
2006-09-09 21:29:08 -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 248b5903b7 Rename conf.avail to conf.d 2006-09-09 19:37:22 -07:00
Keith Packard 9e292c889f Add XML headers to new conf files. Move link make commands to conf.avail dir
Fix up new config fragments to include XML headers as required.
Move symbolic link installation to conf.avail directory to centralize both
steps.
2006-09-09 16:52:21 -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 766a9b2f61 Merge branch 'jhcloos' 2006-09-09 15:49:24 -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
James Cloos 164e267d28 Make conf.avail and conf.d work
Add conf.avail to configure.in

Add install: target to conf.d/Makefile.am to
create the initial symlinks to conf.avail
2006-09-09 01:24:08 -04: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