2005-03-01  Keith Packard  <keithp@keithp.com>

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

2005-03-01  Keith Packard  <keithp@keithp.com>

	* doc/Makefile.am:
	Generate and install PDF versions of the manuals

	* doc/fcpattern.fncs:
	Fix formatting
	
	* doc/fcstring.fncs:
	Add missing exported functions, fix data types
	
	* doc/fontconfig-devel.sgml:
	Add missing pattern elements.
	
	* doc/fontconfig-user.sgml:
	Add missing pattern elements.  Document conf.d usage,
	clarify available orthography list.  Fix some config file
	attributes.  Complete list of constants.
	
	* fontconfig/fontconfig.h:
	Mark FC_SOURCE deprecated.
	
	* src/fcfreetype.c: (FcFreeTypeQuery):
	Don't set FC_SOURCE any longer.

2005-02-28  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* conf.d/Makefile.am:
	* conf.d/README:
	* conf.d/no-bitmaps.conf:
	* conf.d/sub-pixel.conf:
	* conf.d/yes-bitmaps.conf:
	* configure.in:
	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.
	
	* src/fcname.c:
	Tag FC_EMBOLDEN as a boolean variable

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

	reviewed by: pborelli@katamail.com

	* src/fcdir.c: (FcFileScanConfig):
	Free patterns from fonts which are rejected by configuration
	(bug #2518)

2005-01-28  Keith Packard  <keithp@keithp.com>

	* README:
	* configure.in:
	* fontconfig/fontconfig.h:
	Update for version 2.2.99

2005-01-28  Keith Packard  <keithp@keithp.com>

	* README:
	Add a few pointers (#2284, #2285)

2005-01-28  Keith Packard  <keithp@keithp.com>

	* src/fcint.h:
	* src/fcname.c: (FcNameBool):
	* src/fcxml.c: (FcTypeName), (FcTypecheckValue), (FcTypecheckExpr),
	(FcTestCreate), (FcEditCreate), (FcConfigLexBool), (FcParseBool),
	(FcParseAlias), (FcParseInclude), (FcParseTest), (FcParseEdit):
	Polite typechecking for test and edit expressions.  Helps
	catch errors in the font configuration. (bug 229)

2005-01-15  Alan Coopersmith <alan.coopersmith@sun.com>

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

	* configure.in:
	Have --with-expat set EXPAT_CFLAGS (bug 2278)

2005-01-13  Keith Packard  <keithp@keithp.com>

	* doc/fontconfig-user.sgml:
	Add SEE ALSO section (bug 2085)
	
2005-01-13  J. Ali Harlow <ali@juiblex.co.uk>

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

	* Makefile.am:
	* configure.in:
	* doc/Makefile.am:
	* fc-case/Makefile.am:
	* fc-glyphname/Makefile.am:
	* fc-lang/Makefile.am:
	* src/fontconfig.def.in:
	Cross compiling fixes (bug 280)

2005-01-13  Keith Packard  <keithp@keithp.com>

	* fonts.conf.in:
	Update blanks list (Closes bug 86)

2005-01-04  Keith Packard  <keithp@keithp.com>

	* src/fccache.c: (FcCacheFontSetAdd):
	Verify that every font pattern loaded from cache has
	both FC_FILE and FC_FAMILY entries.
	Attempt to fix bug #2219.

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

	* README:
	* configure.in:
	* fontconfig/fontconfig.h:
	Update for version 2.2.98

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

	* fontconfig/fontconfig.h:
	Document ASCII limitations of Fc character conversion macros
	* src/fcstr.c: (FcStrCaseWalkerLong), (FcStrDowncase):
	Fix off-by-one error in utf-8 case walking code.
	Add FcStrDowncase (useful for testing case conversion functions)

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

	* .cvsignore:
	* fc-case/.cvsignore:
	clean up CVS ignore lists
	* fc-lang/iso-3166.txt:
	Add territory database
	
2004-12-29   Tor Andersson <tor.andersson@gmail.com>

	Reviewed by: Keith Packard
	
	* fc-lang/ko.orth:
	Remove Han characters from Korean orthography

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

	* Makefile.am:
	Reorder utility programs to make sure fc-case is run before fc-lang
	as fc-lang uses fcstr.c which uses fccase.h
	* fonts.conf.in:
	Fix broken XML

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

	* fonts.conf.in:
	Adopt some RedHat suggestions for standard font configuration.

	* Makefile.am:
	* configure.in:
	* fc-case/CaseFolding.txt:
	* fc-case/Makefile.am:
	* fc-case/fc-case.c: (panic), (addFold), (ucs4_to_utf8),
	(utf8_size), (addChar), (foldExtends), (case_fold_method_name),
	(dump), (parseRaw), (caseFoldReadRaw), (main):
	* fc-case/fccase.tmpl.h:
	Add new helper program 'fc-case' to construct case folding
	tables from standard Unicode CaseFolding.txt file
	
	* src/fcint.h:
	* src/fclist.c: (FcListValueHash):
	* src/fcstr.c: (FcStrCaseWalkerInit), (FcStrCaseWalkerLong),
	(FcStrCaseWalkerNext), (FcStrCaseWalkerNextIgnoreBlanks),
	(FcStrCmpIgnoreCase), (FcStrCmpIgnoreBlanksAndCase),
	(FcStrHashIgnoreCase), (FcStrIsAtIgnoreBlanksAndCase),
	(FcStrIsAtIgnoreCase), (FcStrStrIgnoreCase):
	Re-implement case insensitive functions with Unicode
	aware versions (including full case folding mappings)

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

	reviewed by: Owen Taylor <otaylor@redhat.com>

	* src/fcmatch.c: (FcFontSetSort):
	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.

2004-12-10  Jakub Pavelek <jakub.pavelek@nokia.com>

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

	* fontconfig/fontconfig.h:
	* fonts.conf.in:

	Configuration changes to request synthetic emboldening of
	fonts.  The actual emboldening code will live in Xft.

2004-12-09  John Thacker <thacker@math.cornell.edu>

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

	* fc-lang/ru.orth:
	
	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

2004-12-06  michael meeks <mmeeks@novell.com>

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

	* src/fcinit.c: (FcMemReport):
	* src/fcint.h:
	* src/fclist.c: (FcObjectSetAdd):
	* src/fcpat.c: (FcValueListEntCreate), (FcPatternBaseFreeze),
	(FcPatternInsertElt), (FcPatternEqual), (FcObjectStaticName):
	* src/fcxml.c: (FcParsePatelt):
	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-06  Keith Packard  <keithp@keithp.com>

	* COPYING:
	* Makefile.am:
	* config/Makedefs.in:
	* configure.in:
	* doc/edit-sgml.c:
	* doc/fcatomic.fncs:
	* doc/fcblanks.fncs:
	* doc/fccharset.fncs:
	* doc/fcconfig.fncs:
	* doc/fcconstant.fncs:
	* doc/fcfile.fncs:
	* doc/fcfontset.fncs:
	* doc/fcfreetype.fncs:
	* doc/fcinit.fncs:
	* doc/fcmatrix.fncs:
	* doc/fcobjectset.fncs:
	* doc/fcobjecttype.fncs:
	* doc/fcpattern.fncs:
	* doc/fcstring.fncs:
	* doc/fcstrset.fncs:
	* doc/fcvalue.fncs:
	* doc/fontconfig-devel.sgml:
	* doc/fontconfig-user.sgml:
	* doc/func.sgml:
	* doc/version.sgml.in:
	* fc-cache/Makefile.am:
	* fc-cache/fc-cache.c:
	* fc-glyphname/Makefile.am:
	* fc-glyphname/fc-glyphname.c:
	* fc-glyphname/fcglyphname.tmpl.h:
	* fc-lang/Makefile.am:
	* fc-lang/aa.orth:
	* fc-lang/ab.orth:
	* fc-lang/af.orth:
	* fc-lang/am.orth:
	* fc-lang/ar.orth:
	* fc-lang/ast.orth:
	* fc-lang/ava.orth:
	* fc-lang/ay.orth:
	* fc-lang/az.orth:
	* fc-lang/az_ir.orth:
	* fc-lang/ba.orth:
	* fc-lang/bam.orth:
	* fc-lang/be.orth:
	* fc-lang/bg.orth:
	* fc-lang/bh.orth:
	* fc-lang/bho.orth:
	* fc-lang/bi.orth:
	* fc-lang/bin.orth:
	* fc-lang/bn.orth:
	* fc-lang/bo.orth:
	* fc-lang/br.orth:
	* fc-lang/bs.orth:
	* fc-lang/bua.orth:
	* fc-lang/ca.orth:
	* fc-lang/ce.orth:
	* fc-lang/ch.orth:
	* fc-lang/chm.orth:
	* fc-lang/chr.orth:
	* fc-lang/co.orth:
	* fc-lang/cs.orth:
	* fc-lang/cu.orth:
	* fc-lang/cv.orth:
	* fc-lang/cy.orth:
	* fc-lang/da.orth:
	* fc-lang/de.orth:
	* fc-lang/dz.orth:
	* fc-lang/el.orth:
	* fc-lang/en.orth:
	* fc-lang/eo.orth:
	* fc-lang/es.orth:
	* fc-lang/et.orth:
	* fc-lang/eu.orth:
	* fc-lang/fa.orth:
	* fc-lang/fc-lang.c:
	* fc-lang/fc-lang.man:
	* fc-lang/fclang.tmpl.h:
	* fc-lang/fi.orth:
	* fc-lang/fj.orth:
	* fc-lang/fo.orth:
	* fc-lang/fr.orth:
	* fc-lang/ful.orth:
	* fc-lang/fur.orth:
	* fc-lang/fy.orth:
	* fc-lang/ga.orth:
	* fc-lang/gd.orth:
	* fc-lang/gez.orth:
	* fc-lang/gl.orth:
	* fc-lang/gn.orth:
	* fc-lang/gu.orth:
	* fc-lang/gv.orth:
	* fc-lang/ha.orth:
	* fc-lang/haw.orth:
	* fc-lang/he.orth:
	* fc-lang/hi.orth:
	* fc-lang/ho.orth:
	* fc-lang/hr.orth:
	* fc-lang/hu.orth:
	* fc-lang/hy.orth:
	* fc-lang/ia.orth:
	* fc-lang/ibo.orth:
	* fc-lang/id.orth:
	* fc-lang/ie.orth:
	* fc-lang/ik.orth:
	* fc-lang/io.orth:
	* fc-lang/is.orth:
	* fc-lang/iso639-2:
	* fc-lang/it.orth:
	* fc-lang/iu.orth:
	* fc-lang/ja.orth:
	* fc-lang/ka.orth:
	* fc-lang/kaa.orth:
	* fc-lang/ki.orth:
	* fc-lang/kk.orth:
	* fc-lang/kl.orth:
	* fc-lang/km.orth:
	* fc-lang/kn.orth:
	* fc-lang/ko.orth:
	* fc-lang/kok.orth:
	* fc-lang/ks.orth:
	* fc-lang/ku.orth:
	* fc-lang/ku_ir.orth:
	* fc-lang/kum.orth:
	* fc-lang/kv.orth:
	* fc-lang/kw.orth:
	* fc-lang/ky.orth:
	* fc-lang/la.orth:
	* fc-lang/lb.orth:
	* fc-lang/lez.orth:
	* fc-lang/lo.orth:
	* fc-lang/lt.orth:
	* fc-lang/lv.orth:
	* fc-lang/mg.orth:
	* fc-lang/mh.orth:
	* fc-lang/mi.orth:
	* fc-lang/mk.orth:
	* fc-lang/ml.orth:
	* fc-lang/mn.orth:
	* fc-lang/mo.orth:
	* fc-lang/mr.orth:
	* fc-lang/mt.orth:
	* fc-lang/my.orth:
	* fc-lang/nb.orth:
	* fc-lang/nds.orth:
	* fc-lang/ne.orth:
	* fc-lang/nl.orth:
	* fc-lang/nn.orth:
	* fc-lang/no.orth:
	* fc-lang/ny.orth:
	* fc-lang/oc.orth:
	* fc-lang/om.orth:
	* fc-lang/or.orth:
	* fc-lang/os.orth:
	* fc-lang/pl.orth:
	* fc-lang/ps_af.orth:
	* fc-lang/ps_pk.orth:
	* fc-lang/pt.orth:
	* fc-lang/rm.orth:
	* fc-lang/ro.orth:
	* fc-lang/ru.orth:
	* fc-lang/sa.orth:
	* fc-lang/sah.orth:
	* fc-lang/sco.orth:
	* fc-lang/se.orth:
	* fc-lang/sel.orth:
	* fc-lang/sh.orth:
	* fc-lang/si.orth:
	* fc-lang/sk.orth:
	* fc-lang/sl.orth:
	* fc-lang/sm.orth:
	* fc-lang/sma.orth:
	* fc-lang/smj.orth:
	* fc-lang/smn.orth:
	* fc-lang/sms.orth:
	* fc-lang/so.orth:
	* fc-lang/sq.orth:
	* fc-lang/sr.orth:
	* fc-lang/sv.orth:
	* fc-lang/sw.orth:
	* fc-lang/syr.orth:
	* fc-lang/ta.orth:
	* fc-lang/te.orth:
	* fc-lang/tg.orth:
	* fc-lang/th.orth:
	* fc-lang/ti_er.orth:
	* fc-lang/ti_et.orth:
	* fc-lang/tig.orth:
	* fc-lang/tk.orth:
	* fc-lang/tl.orth:
	* fc-lang/tn.orth:
	* fc-lang/to.orth:
	* fc-lang/tr.orth:
	* fc-lang/ts.orth:
	* fc-lang/tt.orth:
	* fc-lang/tw.orth:
	* fc-lang/tyv.orth:
	* fc-lang/ug.orth:
	* fc-lang/uk.orth:
	* fc-lang/ur.orth:
	* fc-lang/uz.orth:
	* fc-lang/ven.orth:
	* fc-lang/vi.orth:
	* fc-lang/vo.orth:
	* fc-lang/vot.orth:
	* fc-lang/wa.orth:
	* fc-lang/wen.orth:
	* fc-lang/wo.orth:
	* fc-lang/xh.orth:
	* fc-lang/yap.orth:
	* fc-lang/yi.orth:
	* fc-lang/yo.orth:
	* fc-lang/zh_cn.orth:
	* fc-lang/zh_hk.orth:
	* fc-lang/zh_mo.orth:
	* fc-lang/zh_sg.orth:
	* fc-lang/zh_tw.orth:
	* fc-lang/zu.orth:
	* fc-list/Makefile.am:
	* fc-list/fc-list.c:
	* fc-match/Makefile.am:
	* fc-match/fc-match.1:
	* fc-match/fc-match.c:
	* fontconfig/fcfreetype.h:
	* fontconfig/fcprivate.h:
	* fontconfig/fontconfig.h:
	* src/fcatomic.c:
	* src/fcblanks.c:
	* src/fccache.c:
	* src/fccfg.c:
	* src/fccharset.c:
	* src/fcdbg.c:
	* src/fcdefault.c:
	* src/fcdir.c:
	* src/fcfreetype.c:
	* src/fcfs.c:
	* src/fcinit.c:
	* src/fcint.h:
	* src/fclang.c:
	* src/fclist.c:
	* src/fcmatch.c:
	* src/fcmatrix.c:
	* src/fcname.c:
	* src/fcpat.c:
	* src/fcstr.c:
	* src/fcxml.c:
	Change files from ISO-Latin-1 to UTF-8

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

	* INSTALL:
	Update links to new freedesktop.org locations
	* Makefile.am:
	Add uninstall-local to get rid of fonts.conf and local.conf if they
	match the distributed versions.  Fixes 'make distcheck'

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.
