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.
