Commit Graph

53 Commits

Author SHA1 Message Date
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 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
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 46b51147d1 Change files from ISO-Latin-1 to UTF-8 2004-12-07 01:14:46 +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 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
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 ee1debfdd9 Allow config->cache to be null (as it is when $HOME is not set) 2003-06-26 00:39:04 +00:00
Tor Lillqvist 92af858f2a Trivial braino. 2003-06-15 22:45:12 +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
James Su d4d1e8bc60 Fix "contains" op for strings and langsets. 2003-05-28 01:34:38 +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 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 3a30abdb84 Pass FONTCONFIG_PATH in arguments to get expanded 2003-04-17 21:50:24 +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
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 f4007a6728 Avoid crashing on empty test/edit lists 2003-03-20 02:00:15 +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 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 dda7794f1b Add "same" binding for edits to inherit binding from matched element 2003-02-12 18:22:12 +00:00
Keith Packard ca4339b8bb Fix inconsistent const usage in FcConfigCompareValue 2003-02-06 19:22:43 +00:00
David Dawes 432913ead5 677. Fix a segfault in fontconfig (#A.1450, Keith Packard). 2002-12-21 02:31:53 +00:00
Keith Packard 9dac3c5945 More complete memory tracking. Install always overwrites header files 2002-08-31 22:17:32 +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 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 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 4c0036053a Add strong/weak pattern value binding, add known charsets for automatic
lang computation
2002-06-29 20:31:02 +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 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 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 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 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 179c39959c Fix autoconf build process for fontconfig 2002-05-21 17:06:22 +00:00
Keith Packard 9c8e07f195 Port Xft1 to fontconfig 2002-03-01 01:00:54 +00:00
Keith Packard c5350655be Check font edit value lists for empty 2002-02-24 01:23:35 +00:00