2008-03-06  Peter Baker  <peter@Godwine>

	* numbers.xsl: alias element for accessing things under different
	names.

	* xgridfit.xsl: glyph element can now be treated as a macro. It
	can take parameters (including a special "offset" parameter
	automatically added to all point numbers) and be called from any
	glyph program via the call-glyph element. This is intended to
	support those who prefer not to use the TrueType component
	mechanism.

	* graphics.xsl: restore-default element for restoring default
	values of graphics variables.

	* function.xsl: Improved setting up of variable frame: it is set
	up only when needed, and saved/altered only when necessary. A
	small efficiency.

	* move-els.xsl: Fixed bug that caused some deeply nested move
	elements to misbehave.

	* *.xsl: various minor efficiencies and improvements.

2008-02-09  Peter Baker  <peter@Godwine>

	* function.xsl: We now check to make sure the function we are
	trying to call actually does exist.

	* function.xsl: Code that pushes function parameters onto the
	stack rewritten for neatness and improved optimization: we now
	push all numbers with a single instruction whenever all params can
	be resolved at compile time (before this was true only for bytes).

	* flow.xsl, xgridfit.xsl, xgridfit-debug.xsl: Compile a single
	glyph, as in last release, or a list of glyphs. On command line,
	separate glyph-names with a plus-sign. Or in the program file, use
	a glyph-select element, separating glyphs with either a plus-sign
	or spaces. Can't use space separator on the command line.

	* message.xsl: We now display line numbers with warning and error
	messages. Only if Saxon line-number extension function is
	supported (it is in xsltproc).

2008-01-28  Peter Baker  <peter@Godwine>

	* xgridfit: All Xgridfit's XSLT params are now accessible via the
	command-line of the xgridfit executable. Debug mode is
	available. Multiple files can now be compiled with one command.

	* *.xsl: Hooks for debug mode added to all elements that produce
	code.

	* xgridfit-debug.xsl: New Xgridfit file implements debug mode.

	* xgridfit.xsl, xgridfit-debug.xsl: It is now possible to compile
	a single glyph.

	* messages.xsl: no-warning element suppresses warning messages for
	all code it contains.

2008-01-19  Peter Baker  <peter@Godwine>

	* move-els.xsl, move-lib.xsl: Wholly revised code that rounds
	points after an interpolate or shift. We now use low-level
	instructions to do the rounding, avoiding all problems with
	changed reference pointers. There is no need to save and restore
	RP0, RP1 and RP2, so all that code has been deleted.

2008-01-15  Peter Baker  <peter@Godwine>

	* move-els.xsl: Fixed a bug that caused RP0 to be wrongly restored
	after an interpolate or shift with rounding embedded in a move
	element.

	* move-els.xsl: RP1 and RP2 must sometimes be saved before
	rounding an interpolated point and restored afterwards.

2008-01-08  Peter Baker  <peter@Godwine>

	* flow.xsl: Fixed a bug that caused else to be wrongly interpreted
	when compile-if was nested in if.

	* move-els.xsl, numbers.xsl: Fixed a bug that sometimes made the
	compiler fail when evaluating point numbers in glyph/constant
	format.

	* move-els.xsl: An optional round attribute for interpolate and
	shift cause points to be rounded to the grid after being
	interpolated or shifted. Works only on point elements, not range
	or set. Revision to move element prevents this feature from
	messing up handling of RP0 when interpolate or shift is nested.

	* numbers.xsl, xgfdata.xml: Added four new operators for obtaining
	the coordinates of points in expressions: x-coord,
	initial-x-coord, y-coord, initial-y-coord.

	* numbers.xsl, xgfdata.xml: Added two new operators for obtaining
	the distance between two points in expressions: -- for the current
	outline and --- for the original outline.

	* xgfdata.xml, expressions.xsl: -- and --- are now
	fourth-precedence operators. All operators that were
	fourth-precedence are now fifth-precedence.

2008-01-01  Peter Baker  <peter@Godwine>

	* xgfdata.xml, expressions: Added operators: round-black and
	round-white round a value with "colors"; coord returns the current
	coordinate of a point (depending on projection vector);
	initial-coord returns the coordinate of a point at the beginning
	of the glyph program.

2007-12-24  Peter Baker  <peter@Godwine>

	* numbers.xsl, expressions.xsl: Fixed a bug that caused compiler
	to fail when evaluating expressions like round(stem-width / 2.0).

2007-11-17  Peter Baker  <psb6m@virginia.edu>

	* ttx2xgf: A new executable creates an Xgridfit file from a TTX
	file in one step.

	* xgfupdate, xgf-update.xsl, add-blanks.sed: A new executable,
	with supporting scripts, updates any Xgridfit file < version 1.0
	to version 1.0.

	* *.xsl: All container elements (<profile>, <control-values>,
	<functions>, <macros>, <declarations>, <variables>, <params>) are
	no longer necessary and are deprecated.

	* *.xsl: "id" attribute deprecated in function, macro,
	control-value, variable: use "name" instead. "function-id,"
	"macro-id," "param-id" attributes deprecated: use "name"
	instead. The change is required for function, macro and
	control-value.

	* numbers.xsl: "num" attribute for <constant> is deprecated: use
	"value" instead.

	* xgridfit-ttx, misc.xsl: TTX mode is removed. "max-instructions"
	default type is deprecated and is no longer consulted; asm element
	is no longer permitted: use convert-asm.sed script to convert to
	command elements.

	* function.xsl: "param-set" not always required in call-function
	and call-macro if there is only one set of parameters.

	* xgridfit-strict.rnc, xgridfit-transitional.rnc: xgridfit.rnc is
	removed. Now the "strict" schema requires all changes to Xgridfit
	language, while the "transitional" schema allows features that
	have been deprecated but not removed.

	* numbers.xsl, xgridfit.xsl: Variable can be assigned a default
	value via "value" attribute.

	* numbers.xsl: A bug interfered with passing variable name as
	parameter to a macro.

	* *.xsl: Switched to using key (fast indexing) to locate
	control-value, function and macro elements.

	* xgridfit.xsl: "fmflags" attribute on <outfile> passes flags to
	FontForge "Generate" command.

	* xgridfit.xsd, xgridfit.dtd: DTD and XML schemas no longer
	provided. Get Trang and make your own!

2007-10-15  Peter Baker  <psb6m@virginia.edu>

	* move-els.xsl, points.xsl, func-predef.xsl, xgridfit-ttx.xsl,
	xgridfit.xsl: Added flip-on and flip-off elements, which move
	ranges of points on and off of lines; also a new predefined
	function to make sure the parameters to the corresponding TrueType
	instructions are always in the right order.

	* points.xsl: It is now possible to pass a set, line or range to a
	macro by defining it as the child of a with-param element.

	* function.xsl: Function and macro parameters are checked for
	validity by the compiler, since the schema is a bit vague.

	* func-predef.xsl: Fixed a bug that would have kept round states
	from being correctly restored in some circumstances.

2007-09-30  Peter Baker  <psb6m@virginia.edu>

	* *.xsl: Internal cleanups and improvements: conflating templates
	that didn't have to be separate.

	* *.xsl: Implemented new set element: an arbitrary collection of
	points.

	* *.xsl: programming for range and line elements recast, so that
	they (along with set) can now be passed by name to macros as
	parameters.

	* numbers.xsl: new operator nan makes it possible to detect when
	an expression can't be resolved at compile time. Useful for
	detecting macro parameters.

	* *.doc: updated documentation to reflect these changes. Also more
	examples in reference.html.

2007-09-15  Peter Baker  <psb6m@virginia.edu>

	* numbers.xsl: Increased the number of operators evaluated at
	compile time. Includes and or not + - = != &lt; &lt;= &gt; &gt;=.

	* move-els.xsl: multiple delta, align, interpolate, shift and move
	elements are now permitted inside a move element. compile-if
	attributes are implemented for all elements permitted inside a
	move.

	* flow.xsl: a compile-if element permits conditional
	compilation. It can include an else element as the last child.

	* delta.xsl: compile-if attribute now permitted on a delta
	element.

	* functions.xsl: (from July: it somehow didn't get into the
	ChangeLog then). Implemented parameterized macros.
	
2007-01-13  Peter Baker  <psb6m@virginia.edu>

	* move-lib.xsl, graphics.xsl: Fixed a bug that would sometimes
	have prevented round states from being inherited properly when
	move elements were nested.

2007-01-13  Peter Baker  <psb6m@virginia.edu>

	* convert-asm.sed, convert-ttx.xsl: Scripts for creating a new
	Xgridfit program file from a font containing instructions
	(requires TTX).

	* deltas.xsl: It's now possible to embed delta elements in move
	elements. The first delta is executed before any shifts, aligns or
	interpolations; the second is executed after. If a delta within a
	move element lacks a point element, it operates on the point that
	is the child of the move. A delta element may be empty.

	* move-els.xsl: Move elements can now be nested: nested move
	elements take the point in the parent move as a reference point
	(if no reference/point is present), and they do not leave RP0 set
	behind them.

	* deltas.xsl: A long push before a DELTAP or DELTAC instruction
	now is broken into segments; the size of the segments can be set
	via the delta-break param or default.

	* numbers.xsl: A new index operator gets an index of (pointer to)
	a control value or variable in contexts where the value would
	normally be returned. This permits passing function parameters by
	reference rather than by value.

	* xgfdata.xml: A new variable operator treats the argument as the
	index of a variable and returns the value.

	* function.xsl: New legacy-function element contains function
	definitions inherited from a font that was converted for use with
	Xgridfit.

	* primitives.xsl: New to-stack element takes any value and places
	it on the stack: much more flexible than the push element, but it
	cannot push multiple values.

	* xgridfit.xsl, xgridfit-ttx.xsl: Corrected bug that could
	sometimes prevent setting defaults.

2006-03-16  Peter Baker  <peter@localhost.localdomain>

	* xgridfit-ttx.xsl: This file adds TTX mode, which merges compiled
	instructions into a TTX file (an XML representation of a font).

	* xgridfit-ttx: A simple script for running Xgridfit in TTX mode
	in Linux.

	* delta.xsl: Delta code cleaned up to be more portable.

	* xgridfit.xsl: Hook for delta code removed as no longer
	necessary.

	* xgridfit, xgridfit-ttx: Simple scripts revised so that file
	extensions matter less. xgridfit will handle extensions .xgf or
	.xml; xgridfit-ttx will handle .xgf, .xml or .ttx.
	
2006-03-07  Peter Baker  <psb6m@virginia.edu>

	* xgridfit.xsl: The script generated by Xgridfit now can read and
	write TrueType font files as well as FontForge source files.

	* xgridfit.xsl: profile/infile and profile/outfile added so that
	changes need not be written back to the same
	file. profile/font-file is now deprecated.

	* xgridfit.xsl: params always override corresponding entries in
	profile.

	* xgridfit.xsl: param var-max-storage is renamed max-storage. Its
	value can never be less than 24.

	* delta.xsl, xgridfit.xsl: All FontForge-specific code now in
	xgridfit.xsl

	* schemas: profile/infile and profile/outfile added.

	* xgridfit.dtd: Documentation removed from xgridfit.dtd (use
	element reference instead).
