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.
