Patrick Lam [Fri, 23 Sep 2005 05:59:19 +0000 (05:59 +0000)]
Add new command-line utility, fc-cat, to convert fonts.cache-2 files into
fonts.cache-1 files (e.g. for grepping and validation of the mmap
codepath), as per James Cloos' request.
Remove done 'TODO' comment.
Updates for development release 2.3.90.
Patrick Lam [Fri, 23 Sep 2005 04:09:37 +0000 (04:09 +0000)]
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).
Patrick Lam [Thu, 22 Sep 2005 23:45:53 +0000 (23:45 +0000)]
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>
Patrick Lam [Thu, 22 Sep 2005 20:49:24 +0000 (20:49 +0000)]
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!
Patrick Lam [Thu, 15 Sep 2005 20:36:44 +0000 (20:36 +0000)]
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.
Patrick Lam [Sat, 3 Sep 2005 04:56:56 +0000 (04:56 +0000)]
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.
Patrick Lam [Thu, 1 Sep 2005 06:14:46 +0000 (06:14 +0000)]
:
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...
Patrick Lam [Wed, 31 Aug 2005 15:12:41 +0000 (15:12 +0000)]
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.
Patrick Lam [Tue, 30 Aug 2005 05:55:13 +0000 (05:55 +0000)]
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.
Patrick Lam [Sat, 27 Aug 2005 02:34:24 +0000 (02:34 +0000)]
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.
Patrick Lam [Thu, 25 Aug 2005 07:38:02 +0000 (07:38 +0000)]
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.
Patrick Lam [Wed, 24 Aug 2005 06:21:30 +0000 (06:21 +0000)]
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.
Patrick Lam [Mon, 25 Jul 2005 04:10:09 +0000 (04:10 +0000)]
#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.
Patrick Lam [Thu, 7 Jul 2005 12:09:10 +0000 (12:09 +0000)]
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.
Patrick Lam [Tue, 28 Jun 2005 03:41:02 +0000 (03:41 +0000)]
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.
Keith Packard [Fri, 20 May 2005 15:56:51 +0000 (15:56 +0000)]
The ka.orth file requires several characters which are not used anymore in
modern Georgian and which are missing in the free Georgian TrueType
fonts downloadable at:
http://aiet.qartuli.net/docs/georgian_on_linux_en.php
reviewed by: Mike Fabian Bug: 3352
Keith Packard [Thu, 21 Apr 2005 19:03:53 +0000 (19:03 +0000)]
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.
Keith Packard [Thu, 10 Mar 2005 22:06:20 +0000 (22:06 +0000)]
Update to reflect configuration changes
Fix Autohint vs Autohinter mistake
Adopt changes from Josselin Mouette for configuration descriptions Update
debian to version 2.3.1-2
Keith Packard [Sat, 5 Mar 2005 23:50:55 +0000 (23:50 +0000)]
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)
Keith Packard [Sat, 5 Mar 2005 20:58:39 +0000 (20:58 +0000)]
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
Keith Packard [Thu, 3 Mar 2005 06:20:57 +0000 (06:20 +0000)]
Move debian-specific conf file examples upstream.
Sub-pixel configuration examples must smash subpixel value as Xft always
sets it from X.
Change sub-pixel rendering debconf descriptions from Enable/Disable to
Always/Never.
Keith Packard [Thu, 3 Mar 2005 01:59:28 +0000 (01:59 +0000)]
Ignore more build detritus
Add debian package construction stuff.
Update to newer versions of these tools
Get library manuals to build again (we love automake).
Update debian build system to switch maintainers and deal with 2.3
functionality
Keith Packard [Tue, 1 Mar 2005 20:36:48 +0000 (20:36 +0000)]
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.
Keith Packard [Mon, 28 Feb 2005 18:56:15 +0000 (18:56 +0000)]
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
Keith Packard [Wed, 29 Dec 2004 19:37:14 +0000 (19:37 +0000)]
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)
Keith Packard [Wed, 29 Dec 2004 09:15:17 +0000 (09:15 +0000)]
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)
Keith Packard [Tue, 14 Dec 2004 00:12:25 +0000 (00:12 +0000)]
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>
Keith Packard [Fri, 10 Dec 2004 16:48:08 +0000 (16:48 +0000)]
Configuration changes to request synthetic emboldening of fonts. The actual
emboldening code will live in Xft.
reviewed by: Keith Packard <keithp@keithp.com>
Keith Packard [Thu, 9 Dec 2004 19:36:30 +0000 (19:36 +0000)]
Currently Russian (ru) requires 0406 and 0456 (І and і), but these were
eliminated in Russian in 1918 in favor of 0418 and 0438 (И and и),
and don't even appear in KOI8-R. (The hypothesis that they don't appear
in KOI8-R due to their similarity with Latin I and i is eliminated by
their presence in KOI8-U.) I have a couple of fonts with Russian
support that don't have the letter.
Therefore, 0406 and 0456 should be removed from or commented out of ru.orth
reviewed by: Keith Packard <keithp@keithp.com>
Keith Packard [Tue, 7 Dec 2004 01:36:26 +0000 (01:36 +0000)]
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.
Keith Packard [Sun, 5 Dec 2004 07:44:08 +0000 (07:44 +0000)]
Update links to new freedesktop.org locations
Add uninstall-local to get rid of fonts.conf and local.conf if they match
the distributed versions. Fixes 'make distcheck'
Keith Packard [Sun, 5 Dec 2004 06:19:46 +0000 (06:19 +0000)]
Sleep for two seconds before exiting to make sure timestamps for future
changes have distinct mod times in the file system. Bug #1982.
Add Punjabi orthography. Bug #1671.
reviewed by: Keith Packard <keithp@keithp.com>
Keith Packard [Sun, 5 Dec 2004 05:49:20 +0000 (05:49 +0000)]
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
Keith Packard [Sun, 5 Dec 2004 05:03:52 +0000 (05:03 +0000)]
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.
Keith Packard [Sun, 5 Dec 2004 00:26:06 +0000 (00:26 +0000)]
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.
Keith Packard [Sat, 4 Dec 2004 19:41:10 +0000 (19:41 +0000)]
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.
Keith Packard [Wed, 30 Jun 2004 18:41:52 +0000 (18:41 +0000)]
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.
Keith Packard [Sat, 29 May 2004 19:32:41 +0000 (19:32 +0000)]
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)
Keith Packard [Wed, 14 Apr 2004 18:08:41 +0000 (18:08 +0000)]
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.
Keith Packard [Tue, 10 Feb 2004 18:38:58 +0000 (18:38 +0000)]
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).
Keith Packard [Sat, 7 Feb 2004 07:13:48 +0000 (07:13 +0000)]
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...
Tor Lillqvist [Sun, 1 Feb 2004 19:32:36 +0000 (19:32 +0000)]
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.