2004-12-04  Keith Packard  <keithp@keithp.com>

	* README:
	* configure.in:
	* fontconfig/fontconfig.h:
	Updates for version 2.2.97

2004-12-04  Owen Taylor  <otaylor@redhat.com>

	reviewed by: Keith Packard  <keithp@keithp.com>

	* fc-cache/fc-cache.c: (main):
	Sleep for two seconds before exiting to make sure timestamps
	for future changes have distinct mod times in the file system.
	Bug #1982.
	* fc-lang/pa.orth:
	Add Punjabi orthography.  Bug #1671.

2004-12-04  Keith Packard  <keithp@keithp.com>

	* fonts.conf.in:
	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 #505.
	* src/Makefile.am:
	Add copyright and license

2004-12-04  Keith Packard  <keithp@keithp.com>

	* configure.in:
	Change default set of fonts to include all of
	/usr/X11R6/lib/X11/fonts (or wherever the X fonts are located).
	* doc/fontconfig-user.sgml:
	Document new <include>directory-name</include> semantics
	* fonts.conf.in:
	add <include ignore_missing="yes">conf.d</include>
	* local.conf:
	Add selectfont to ignore bitmap fonts, add comment for
	selectfont which accepts bitmap fonts.
	* src/fcdir.c:
	* src/fcint.h:
	* src/fcxml.c: (FcConfigParseAndLoadDir), (FcConfigParseAndLoad):
	Allow <include> configuration elements to reference directories.
	Parse and load all files of the form [0-9]* in sorted order.

2004-12-04  Keith Packard  <keithp@keithp.com>

	* autogen.sh:
	Report command line for $srcdir/configure accurately.
	Bug #212.

2004-12-04  Keith Packard  <keithp@keithp.com>

	* src/fcfreetype.c: (FcFreeTypeQuery):
	Check for non-empty face->family_name and face->style_name
	before using those for the font.  Empty names match everything.
	Bug #210.

2004-12-04  Keith Packard  <keithp@keithp.com>

	* configure.in:
	* fontconfig/fontconfig.h:
	* src/fcfreetype.c: (FcFreeTypeQuery):
	* src/fcname.c:
	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-04  Daniel Glassey <danglassey@ntlworld.com>

	reviewed by: Keith Packard  <keithp@keithp.com>

	* doc/fontconfig-user.sgml:
	Fix typo.
	
	* fontconfig/fontconfig.h:
	* src/fcfreetype.c: (FcFreeTypeQuery), (addtag), (compareulong),
	(GetScriptTags), (FcFontCapabilities):
	* src/fcname.c:
	Add detection for font capabilities (bug #105)

2004-12-04  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	Move existing fonts.conf to fonts.conf.bak
	
	* configure.in:
	Add detection of iconv
	
	* doc/fcpattern.fncs:
	* doc/fontconfig-devel.sgml:
	* doc/fontconfig-user.sgml:
	* fonts.dtd:
	Document new selectfont elements
	
	* fc-lang/nb.orth:
	Switch to UTF-8 in comment
	
	* fontconfig/fontconfig.h:
	* src/fcname.c:
	Add fullname, and family/style/fullname language entries
	
	* src/fccache.c: (FcCacheFontSetAdd):
	* src/fcdir.c: (FcFileScanConfig):
	Respect selectfont/*/glob
	
	* src/fcint.h:
	* src/fccfg.c: (FcConfigCreate), (FcConfigDestroy),
	(FcConfigCompareValue), (FcConfigPatternsAdd),
	(FcConfigPatternsMatch), (FcConfigAcceptFont):
	* src/fcxml.c: (FcElementMap), (FcVStackDestroy),
	(FcVStackPushPattern), (FcPopExpr), (FcParseAcceptRejectFont),
	(FcPopValue), (FcParsePatelt), (FcParsePattern), (FcEndElement):
	Add support for selectfont
	
	* src/fcfreetype.c: (FcSfntNameTranscode), (FcSfntNameLanguage),
	(FcStringInPatternElement), (FcFreeTypeQuery):
	Add multi-lingual family/style/fullname support
	
	* src/fclist.c: (FcListPatternMatchAny):
	Expose FcListPatternMatchAny (which selectfont/*/pattern uses)
	
	* src/fcpat.c: (FcPatternRemove), (FcPatternAppend),
	(FcObjectStaticName):
	Add new FcPatternRemove/FcPatternAppend.
	FcObjectStaticName stores computed pattern element names which
	are required to be static.
	
2004-09-09 "NAKAMURA Ken'ichi" <nakamura@sbp.fp.a.u-tokyo.ac.jp>

	reviewed by: keithp

	* Makefile.am:
	Remove spurious / after $(DESTDIR)

2004-06-30  Keith Packard  <keithp@keithp.com>

	* README:
	* configure.in:
	* fontconfig/fontconfig.h:
	Update for 2.2.96

2004-06-30  Keith Packard  <keithp@keithp.com>

	Provided by: Lubos Lunak <l.lunak@suse.cz>

	* src/fccfg.c: (FcConfigUptoDate):
	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-03  Keith Packard  <keithp@keithp.com>

	* fontconfig/fontconfig.h:
	Remove comma at end of FcResult enum definition.

2004-05-29  Keith Packard  <keithp@keithp.com>

	* INSTALL:
	Add steps to md5sum release

2004-05-29  Keith Packard  <keithp@keithp.com>

	* README:
	* configure.in:
	* fontconfig/fontconfig.h:
	Update for 2.2.95

2004-05-29  Keith Packard  <keithp@keithp.com>

	* fontconfig/fontconfig.h:
	* src/fcmatch.c: (FcFontSetMatch):
	Add FcResultOutOfMemory to provide an accurate error when
	FcFontSetMatch fails in this way
	
	* src/fcfreetype.c:
	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-05  Keith Packard  <keithp@keithp.com>

	* src/fcfreetype.c: (FcFreeTypeCharSetAndSpacing):
	Replace MIN/MAX/ABS macros which happen to have come
	from FreeType with fontconfig-specific ones (FC_*)

2004-04-23  Keith Packard  <keithp@keithp.com>

	* INSTALL:
	Extend release preparation instructions to include
	notification and distribution steps

2004-04-23  Keith Packard  <keithp@keithp.com>

	* README:
	* configure.in:
	* fontconfig/fontconfig.h:
	Update to 2.2.94 (2.2.93 shipped with broken libtool bits)

2004-04-23  Keith Packard  <keithp@keithp.com>

	* .cvsignore:
	Ignore a few more autotool files

2004-04-14  Keith Packard  <keithp@keithp.com>

	* INSTALL:
	Add instructions for doing a release
	
	* fontconfig.spec.in:
	clean up .spec file; perhaps this will be useful to somebody...

	* README:
	* configure.in:
	* fontconfig/fontconfig.h:
	Update to 2.2.93
	
	* fc-lang/fc-lang.c:
	Make 'scanopen' static so GCC doesn't whine about lacking prototype
	
	* fc-glyphname/Makefile.am:
	* fc-lang/Makefile.am:
	* fc-list/Makefile.am:
	* fc-match/Makefile.am:
	* src/Makefile.am:
	Add WARN_CFLAGS to pass -W flags for GCC systems
	
	* src/fcfreetype.c: (FcNoticeFoundry), (FcVendorMatch),
	(FcVendorFoundry), (FcGetPixelSize), (FcFreeTypeQuery):
	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-03-06  Keith Packard  <keithp@keithp.com>

	* src/fcfreetype.c: (FcFreeTypeQuery):
	Force FC_FOUNDRY and FC_WIDTH to always be set so that
	matches looking for explicit values prefer exact matches

2004-03-02  Keith Packard  <keithp@keithp.com>

	Supplied by: mfabian@suse.de (Mike FABIAN)

	* src/fcfreetype.c: (FcFreeTypeQuery):
	Bug #260 fc-cache generates wrong spacing values for bitmap fonts
	Was using (strcmp (a,b)) instead of (!strcmp(a,b)).

2004-02-21  Manish Singh  <yosh@gimp.org>

	* fc-glyphname/fc-glyphname.c: (main):
	Cast strlen to int for printf, so we're 64-bit clean.

2004-02-11  Keith Packard  <keithp@keithp.com>

	* configure.in:
	* src/fcfreetype.c: (FcGetPixelSize):
	Ok, so I messed up the test for y_ppem.  Let's see if I
	got it right this time.

2004-02-10  Keith Packard  <keithp@keithp.com>

	* configure.in:
	* src/fcfreetype.c: (FcGetPixelSize):
	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-06  Keith Packard  <keithp@keithp.com>

	* fc-lang/nds.orth:
	Add Low Saxon orthography 
		(Kenneth Rohde Christiansen <kenneth@gnu.org>)
		
	* src/fccfg.c: (FcConfigNewestFile):
	Oops.  Left 'newest.set' unset, which would miscompute
	the newest file
	
	* src/fcfreetype.c: (FcGetPixelSize), (FcFreeTypeQuery),
	(FcFreeTypeCheckGlyph):
	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-01  Tor Lillqvist  <tml@iki.fi>

	* src/fccfg.c (FcConfigCreate): 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-01-03  Roozbeh Pournader  <roozbeh@sharif.edu>

	* fc-lang/az_ir.orth:
	* fc-lang/ku_ir.orth:
	* fc-lang/ps_af.orth:
	* fc-lang/ps_pk.orth:
	Added orthographies for Iranian Azerbaijani and Kurdish, and Pashto
	(Afghan and Pakistani).
	* fc-lang/ur.orth:
	Updated Urdu orthography with real data.

2003-12-11  Carl Worth  <cworth@east.isi.edu>

	* fc-list/Makefile.am (man_MANS): Move man_MANS into the 'if
	USEDOCBOOK' block.

	* fc-cache/Makefile.am (man_MANS): Move man_MANS into the 'if
	USEDOCBOOK' block.
	(all-local): Remove excessive whitespace.

	* autogen.sh: Add 'set -e' to abort when any program fails,
	(avoids printing of 'now type make' after configure aborts).

2003-11-17   Eric Christopherson  <rakko@charter.net>

	reviewed by: Keith Packard  <keithp@keithp.com>

	* doc/Makefile.am:
	* fontconfig/fcfreetype.h:
	* src/fcfreetype.c:
	Switch to FreeType 2.1.7 style includes.  Bug #150.

2003-11-16  Noah Levitt  <nlevitt@columbia.edu>

	* fc-list/fc-list.sgml: Add some example usages.

2003-11-10  Roozbeh Pournader  <roozbeh@sharif.edu>

	* src/fcxml.c:
	Fixed a bug "FcStrtod" in handling some cases with two-byte decimal
	separators.

2003-10-27  Keith Packard  <keith@keithp.com>

	* configure.in:
	* fontconfig/fontconfig.h:
	Update to version 2.2.92

2003-10-27  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* configure.in:
	* doc/Makefile.am:
	* fc-cache/Makefile.am:
	* fc-glyphname/Makefile.am:
	* fc-lang/Makefile.am:
	* fc-list/Makefile.am:
	* fc-match/Makefile.am:
	* test/Makefile.am:
	* test/run-test.sh:
	Yet more cleanups to finish getting 'make distcheck' working
	This has been tested to ensure that it even works from a _build
	directory.

2003-10-26  Keith Packard  <keithp@keithp.com>

	* configure.in:
	* doc/Makefile.am:
	* fc-cache/Makefile.am:
	* fc-glyphname/Makefile.am:
	* fc-lang/Makefile.am:
	* fc-lang/fc-lang.c: (scanopen), (scan), (main):
	* fc-list/Makefile.am:
	* fc-match/Makefile.am:
	Attempts to fix 'make distcheck' work.  Things are
	progressing pretty well, but there are still failures
	long into the process dealing with docs (as always).
	
	The big changes here are mostly to make $(srcdir) != "."
	work correctly, fixing the docbook related sections and
	fc-lang were particularily tricky.  Docbook refuses to load
	system entities from anywhere other than where the original .sgml
	file was located, so no luck looking in "." for the
	configure-generated version.sgml and confdir.sgml files.

	fc-lang needed help finding .orth files; added a -d option
	to set the directory as the least evil of many options.

	Now to go use a faster machine and try and wring out the last
	issues.

2003-10-26  Keith Packard  <keithp@keithp.com>

	Tag version 2.2.91

2003-10-26  Keith Packard  <keithp@keithp.com>

	* doc/Makefile.am:
	Include confdir.sgml.in in EXTRA_DIST

2003-10-09  Josselin Mouette  <joss@debian.org>

        * fc-cache/fc-cache.sgml fc-cache/Makefile.am:
        * fc-list/fc-list.sgml fc-list/Makefile.am:
          Replace fc-cache and fc-list manpages with more detailed, SGML
          versions.

2003-09-23  Owen Taylor <otaylor@redhat.com>

	* fontconfig/fontconfig.h  src/fcdefault.c (FcDefaultSubstitute)
	src/fcname.c: Add a FC_HINT_STYLE key for patterns, with
	possible values HINT_NONE/HINT_SLIGHT/HINT_MEDIUM/HINT_FULL.
	(Bug #117)

2003-09-23  Owen Taylor <otaylor@redhat.com>

	* fc-lang/ka.orth: Remove Georgian capitals, they
	aren't used for normal writing. (Bug #116)

2003-09-06  Noah Levitt  <nlevitt@columbia.edu>

	* doc/fontconfig-devel.sgml:
	* doc/fontconfig-user.sgml:
	* fontconfig/fontconfig.h:
	* src/fcname.c:
	* src/fcfreetype.c (FcFreeTypeCharSetAndSpacing): Add new spacing
	value FC_DUAL (dual-width, as some CJK fonts). (bug #111)

	* src/fcfreetype.c (FcFreeTypeCharSetAndSpacing): When checking for
	monospace and dual-width fonts, allow roughly a 3% variance in the
	advances.

2003-08-31  Manish Singh  <yosh@gimp.org>

	* src/fccfg.c (FcConfigAppFontClear): Support passing NULL to
	use default config.

2003-08-15  Carl Worth  <cworth@isi.edu>

	* src/fcxml.c (FcEditDestroy): Fix leak of FcEdit.
	(FcPopExpr): Add comment about unhandled FcVStackGlob case.

	* src/fcpat.c (FcValueListEntDestroy): New function to support
	FcFini memory cleanup. Some statistics are not kept in
	synch. here.
	(FcValueListFreeze): Move hashTable outside this function so it
	can be accessed by FcValueListThawAll.
	(FcValueListThawAll): New function complements FcValueListFreeze.
	(FcPatternBaseFreeze): Move hashTable outside this function so it
	can be accessed by FcPatternBaseThawAll.
	(FcPatternBaseThawAll): New function complements
	FcPatternBaseFreeze.
	(FcPatternThawAll): New function complements FcPatternFreeze.

	* src/fcinit.c (FcFini): Add new FcFini to cleanup everything.

	* src/fccharset.c (FcCharLeafEntCreate): Save pointers to all
	allocated FcCharLeafEnt "blocks" so they can be freed later.
	(FcCharSetFreezeLeaf): Move hashTable outside this function so it
	can be accessed by FcCharSetThawAllLeaf.
	(FcCharSetThawAllLeaf): New function complements FcCharSetFreezeLeaf.
	(FcCharSetFreezeBase): Move hashTable outside this function so it
	can be accessed by FcCharSetThawAll.
	(FcCharSetThawAll): New function complements FcCharSetFreeze.

	* src/fccfg.c (FcSubstDestroy): Fix leak of outer FcSubst.
	(FcConfigDestroy): Fic leak of FcBlanks.

	* fc-list/fc-list.c (main): Fix leak of FcObjectSet.
	(main): Add call to FcFini when finished.

	* fc-glyphname/fc-glyphname.c: Mark several local functions as
	static. Add prototypes.

	* doc/fcinit.fncs: Add documentation for FcFini function.

	* doc/edit-sgml.c: Mark several local functions as static. Add
	prototypes.

	* doc/Makefile.am (DOC_MODULE): Fix "suspicious" lines.

2003-06-15  Tor Lillqvist  <tml@iki.fi>

	* test/run-test.sh (FONTCONFIG_FILE): Remove CRs from the out file
	before comparing (needed on Windows).

	* src/Makefile.am (install-libtool-import-lib): Fix cut&paste error.

2003-06-13  Tor Lillqvist  <tml@iki.fi>

	* fontconfig-zip.in (DEVZIP): Add share/doc directory. Add Fc*.3
	man pages.

	* configure.in: Set FC_DEFAULT_FONTS on Win32 to the
	WINDOWSFONTDIR token.

	* src/fontconfig.def.in: Move the LIBRARY and VERSION lines to the
	end, not to confuse libtool, which expects the EXPORTS line to be
	the first. Add FcConfigEnableHome.

	* src/fccfg.c: Check also for DLL_EXPORT as indication of being
	built as a DLL on Win32.

2003-06-09  Keith Packard <keithp@keithp.com>

	* Tag version 2.2.90

2003-06-09  Keith Packard <keithp@keithp.com>

	* Optimization in FcLangSetIndex was broken, occasionally
	  returning a pointer to the wrong location on miss

	* Add fc-match to test font matching from the command line.

2003-05-31  Keith Packard <keithp@keithp.com>

	* (Bug 85) add support for culmus fonts
	* (Bug 87) Automake 1.4 doesn't do man_MAN1 correctly
	* (Bug 88) Fix usage info on non-long option systems (Tim Mooney)

2003-05-28  James Su <suzhe@turbolinux.com.cn>

	* Fix "contains" op for strings and langsets.

2003-05-17  Keith Packard <keithp@keithp.com>

	* Fix build error with BDF prop local.  Free langset after query

2003-05-14  Keith Packard <keithp@keithp.com>

	* Extract spacing from XLFD atom

2003-05-12  Juliusz Chroboczek <jch@pps.jussieu.fr>

	* Reinstate SETWIDTH_NAME parsing for legacy fonts, 
	  disappeared in 1.30.

	* Generate FC_SIZE and FC_DPI for legacy bitmap fonts

2003-05-12  Keith Packard <keithp@keithp.com>

	* 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-07  Keith Packard <keithp@keithp.com>

	* 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-06  Keith Packard <keithp@keithp.com>

	* Remove 0b82 and Tamil numbers from tamil 
	  orthography (Jungshik Shin <jshin@mailaps.org>)

2003-05-04  Keith Packard <keithp@keithp.com>

	+ Map glyph names in fonts with adobe custom encoding to unicode

2003-05-02  Keith Packard <keithp@keithp.com>

	* Add FC_WEIGHT_BOOK as weight 75

2003-04-30  Keith Packard <keithp@keithp.com>

	* Typo in bitstream foundry name

2003-04-24  Keith Packard <keithp@keithp.com>

	* Eliminate italic_angle check for PS fonts

2003-04-23  Noah Levitt <nlevitt@columbia.edu>

	* Getting closer to fixing /etc/fonts hard-coding.

2003-04-22  Keith Packard <keithp@keithp.com>

	* Update autogen.sh to work with newer automake versions
	* Handle pattern elements moving during multiple edits

2003-04-23  James Henstridge  <james@daa.com.au>

	* doc/fontconfig-devel.sgml: close the <para> element.

	* doc/fcpattern.fncs: close the <para> element.

	* doc/func.sgml: close the <refsynopsisdiv> element.

2003-04-22  Keith Packard <keithp@keithp.com

	* Update autogen.sh to work with newer automake versions
	* Handle pattern elements moving during multiple edits

2003-04-17  Colin Walters <walters@debian.org>

	+ Remove some unused variables, and initialize some other ones so
	gcc doesn't warn us.

2003-04-16  Keith Packard <keithp@keithp.com>

	+ tag version 2.1.94

2003-04-16  Keith Packard <keithp@keithp.com>

	+ add BDF property fetching support for foundry 
	  (from Juliusz Chroboczek)
	+ add BDF property fetching support for width

2003-04-11  Juliusz Chroboczek <jch@pps.jussieu.fr>

	+ Implemented foundry generation for Type 1 and TrueType

2003-04-11  Gerard Escalante <g2@magestudios.net>

	+ Retrieve information from Type1 FontInfo dictionaries

2003-04-07  Colin Walters <walters@verbum.org>

	+ src/Makefile.am: Fix dummy makefile target names when
	MS_LIB_AVAILABLE isn't set.

2003-03-22  Tor Lillqvist  <tml@iki.fi>

	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.

Fri Mar  7 07:55:00 EST 2003    Mike A. Harris <mharris@redhat.com>
	+ RPM specfile cleanups for 2.1.92: Removed man1/* and added man5/*
	  to main package and man3/* to devel package

	+ Added missing defattr(-, root, root) to main RPM package
 
	+ Added HTML and text development documentation to -devel subpackage

Wed Mar  5 05:08:00 EST 2003	Mike A. Harris <mharris@redhat.com>
	+ Added back the configure macro options --disable-docs, otherwise
	  fontconfig installs docs into /usr/share/doc/fontconfig (with no
	  version number) unconditionally, causing RPM to fail the build due
	  to _unpackaged_files_terminate_build.  We pick up the pregenerated
	  docs with %doc already.

Wed Mar  5 04:26:20 EST 2003	Mike A. Harris <mharris@redhat.com>
	+ Removed commented out rpm macro define at top of spec file,
	  replacing it with a simple explanation, since rpm macros are
	  expanded by rpm even in comments.

	+ Changed /usr/bin to _bindir in BuildRequires lines

	+ Cleaned up rpm postinstall script, and made fc-cache use _bindir

	+ Reorganized file manifest lists

Sun Mar  2 14:16:17 EST 2003	Owen Taylor <otaylor@redhat.com>

	+ fontconfig.spec.in: Improvements from Red Hat spec file.

	+ {fc-lang,fc-cache,fc-list}/Makefile.am: Add man pages.

	+ docs/*.sgml: SGML fixes.

Sat Mar  1 17:28:53 PST 2003	keithp
	+ Ok, so the ChangeLog is a bit out of date

	+ Lots of bugs fixed; most are in bugzilla, the
	  biggest problems were in cache management where
	  Owen discovered the library would lose badly when
	  combining fonts-cache and ~/.fonts-cache data

	+ Converted from autoconf to automake.  This after
	  getting patches accepted into libtool to allow
	  the '-version-number' argument which lets
	  packages set version numbers explicitly rather
	  than the roundabout libtool way

	+ Converted documentation to SGML using the docbook
	  DTD.  Now .txt and .html documents are installed
	  in /usr/share/doc/fontconfig and there's no
	  man page.  Perhaps a man version can be written
	  at some point.

Sat Aug 31 15:21:22 PDT 2002	keithp
	+ Xrender and Xft had several bugs related to
	  rendering manually placed or poly-face text

	+ Added more complete memory tracing in fontconfig
	  Checked with (patched) mozilla and found no leaks

	+ Updated Latin orthographies by comparing those from
	  evertype.com with those from eki.ee.  Tried to make
	  sensible choices, including chars that occured in both
	  and leaving some optional chars out that occured only
	  in one.

Mon Aug 26 16:33:04 PDT 2002	keithp
	+ Owen discovered that FcLangSetHasLang wasn't actually
	  checking the language set.

Mon Aug 26 13:37:23 PDT 2002	keithp
	+ Append a version number to cache filenames

Thu Aug 22 11:36:18 PDT 2002	keithp

	+ Add "contains" and "not_contains" operators and elements to
	  font configuration
	  
	+ Changed semantics of eq operator for LangSets to check for
	  FcLangEqual so that any match will do
	
	+ FcFontList was using FcConfigCompareValue (...FcOpEqual) instead
	  of FcValueEqual to check for identical values when inserting into
	  the results.  This broke when the above semantic change was made,
	  now it uses FcValueEqual which is "more correct" in any case.

Thu Aug 22 00:32:29 PDT 2002	keithp

	+ Reimplement FC_LANG as new datatype.  Lists of strings
	  was consuming over a megabyte of memory for 401 fonts.

	+ Freeze patterns loaded from cache files.  This shares
	  common value lists and common patterns which saves
	  considerable memory.

	+ Change the denotation of 'constant' charsets to use special
	  ref value instead of separate boolean.

	+ Clean up leak tracing stuff, found several unannoted alloc/free
	  calls

Tue Aug 20 16:17:37 PDT 2002	keithp

	+ Fix memory leak when parsing matrices from XML

Mon Aug 19 11:57:27 PDT 2002	keithp

	+ Fix autoconf files to pass FONTCONFIG_PATH on
	  compile line so that ${prefix} gets substituted
	  correctly.

	+ Use getc_unlocked/putc_unlocked on systems that
	  provide them to avoid damage done to stdio by posix

	+ Eliminate FC_PATTERN and FcTypePattern in favor of
	  an extended api for FcConfigSubstitute which takes
	  both the font and the pattern.

	+ Add 'sans serif' alias for 'sans-serif' as some apps
	  can't handle hyphens in family names

	+ Eliminate pretense of support for libxml2

	+ Comment origins of Han orthographies

Tue Jul 30 18:37:09 PDT 2002	keithp

	+ Add binding property to edit element so that strong
	  binding values may be inserted by the config file.
	  The default remains weak.

Sun 28 Jul 04:16:55 PDT 2002	keithp

	+ Tagged release candidate 1 in the CVS tree and
	  placed fcpackage.rc1.tar.gz for distribution

Thu Aug  1 08:55:08 PDT 2002	keithp

	+ Fixed autoconf builds to always specify install
	  target files (for BSD).  Also fixed to
	  define FONTCONFIG_PATH in config.h so that
	  nonstandard installs will actually work.
