Commit Graph

263 Commits

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