2014-12-30  Werner Lemberg  <wl@gnu.org>

	* Version 2.5.5 released.
	=========================


	Tag sources with `VER-2-5-5'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.5.5.

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.5.4/2.5.5/, s/254/255/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.

	* builds/unix/configure.raw (version_info): Set to 17:4:11.
	* CMakeLists.txt (VERSION_PATCH): Set to 5.
	* docs/CHANGES: Updated.

	* builds/toplevel.mk (dist): Fix typos.

2014-12-24  Alexei Podtelezhnikov <apodtele@gmail.com>

	[base] Formatting and nanooptimizations.

	* src/base/ftcalc.c,
	* src/base/fttrigon.c: Revise sign restoration.

2014-12-13  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_read_TOC): Improve fix from 2014-12-08.

2014-12-11  Werner Lemberg  <wl@gnu.org>

	* builds/toplevel.mk (dist): Use older POSIX standard for `tar'.

	Apparently, BSD tar isn't capable yet of handling POSIX-1.2001
	(contrary to GNU tar), so force the POSIX-1.1988 format.

	Problem reported by Stephen Fisher <sfisher@SDF.ORG>.

2014-12-11  Werner Lemberg  <wl@gnu.org>

	* src/type42/t42parse.c (t42_parse_sfnts): Reject invalid TTF size.

2014-12-11  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Get_Glyph_Name): Fix off-by-one check.

	Problem reported by Dennis Felsing <dennis@felsin9.de>.

2014-12-11  Werner Lemberg  <wl@gnu.org>

	* src/type42/t42parse.c (t42_parse_sfnts): Check `string_size'.

	Problem reported by Dennis Felsing <dennis@felsin9.de>.

2014-12-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[gxvalid] Fix a naming convention conflicting with ftvalid.

	See previous changeset for otvalid.

	* src/gxvalid/{gxvcommn.h, gxvmort.h, gxvmorx.h}: Replace
	`valid' by `gxvalid'.
	* src/gxvalid/{gxvbsln.c, gxvcommn.c, gxvfeat.c, gxvjust.c,
	gxvkern.c, gxvlcar.c, gxvmort.c, gxvmort0.c, gxvmort1.c,
	gxvmort2.c, gxvmort4.c, gxvmort5.c, gxvmorx.c, gxvmorx0.c,
	gxvmorx1.c, gxvmorx2.c, gxvmorx4.c, gxvmorx5.c, gxvopbd.c,
	gxvprop.c, gxvtrak.c}: Replace `valid' by `gxvalid' if
	it is typed as GXV_Validator.

2014-12-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[otvalid] Fix a naming convention conflicting with ftvalid.

	Some prototypes in ftvalid.h use `valid' for the variables
	typed as FT_Validator.  Their implementations in src/base/
	ftobjs.c and utilizations in src/sfnt/ttcmap.c do similar.

	Some macros in otvcommn.h assume the exist of the variable
	`valid' typed as OTV_Validator in the caller.

	Mixing these two conventions cause invalid pointer conversion
	and unexpected SEGV in longjmp.  To prevent it, all variables
	typed as OTV_Validator are renamed to `otvalid'.

	* src/otvalid/otvcommn.h: Replace `valid' by `otvalid'.
	* src/otvalid/{otvcommn.c, otvbase.c, otvgdef.c, otvgpos.c,
	otvgsub.c, otvjstf.c, otvmath.c}: Replace `valid' by `otvalid'
	if it is typed as OTV_Validator.

2014-12-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[ftvalid] Introduce FT_THROW() in FT_INVALID_XXX macros.

	Original patch is designed by Werner Lemberg.  Extra part
	for otvalid and gxvalid are added by suzuki toshiya, see
	discussion:
	http://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00002.html
	http://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00007.html

	* include/internal/ftvalid.h: Introduce FT_THROW() in FT_INVALID_().
	* src/gxvalid/gxvcommn.h: Ditto.
	* src/otvalid/otvcommn.h: Ditto.

2014-12-08  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix Savannah bug #43774.

	Work around `features' of X11's `pcfWriteFont' and `pcfReadFont'
	functions.  Since the PCF format doesn't have an official
	specification, we have to exactly follow these functions' behaviour.

	The problem was unveiled with a patch from 2014-11-06, fixing issue
	#43547.

	* src/pcf/pcfread.c (pcf_read_TOC): Don't check table size for last
	element.  Instead, assign real size.

2014-12-07  Werner Lemberg  <wl@gnu.org>

	Work around a bug in Borland's C++ compiler.

	See

	  http://qc.embarcadero.com/wc/qcmain.aspx?d=118998

	for Borland's bug tracker entry.

	Reported by Yuliana Zigangirova <zigangirova@inbox.ru>,
	http://lists.gnu.org/archive/html/freetype-devel/2014-04/msg00001.html.

	* include/internal/ftvalid.h (FT_ValidatorRec), src/smooth/ftgrays.c
	(gray_TWorker_): Move `ft_jmp_buf' field to be the first element.

2014-12-07  Werner Lemberg  <wl@gnu.org>

	*/*: Decorate hex constants with `U' and `L' where appropriate.

2014-12-07  Werner Lemberg  <wl@gnu.org>

	[truetype] Prevent memory leak for buggy fonts.

	* src/truetype/ttobjs.c (tt_size_done): Unconditionally call
	`tt_size_done_bytecode'.

2014-12-06  Werner Lemberg  <wl@gnu.org>

	* Version 2.5.4 released.
	=========================


	Tag sources with `VER-2-5-4'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.5.4.

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.5.3/2.5.4/, s/253/254/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.

	* builds/unix/configure.raw (version_info): Set to 17:3:11.
	* CMakeLists.txt (VERSION_PATCH): Set to 4.
	* docs/CHANGES: Updated.

2014-12-04  Werner Lemberg  <wl@gnu.org>

	docs/CHANGES: Updated, formatted.

2014-12-04  Dave Arnold  <darnold@adobe.com>

	[cff] Modify an FT_ASSERT.

	* src/cff/cf2hints.c (cf2_hintmap_map): After the fix for Savannah
	bug #43661, the test font `...aspartam.otf' still triggers an
	FT_ASSERT.  Since hintmap still works with count==0, ...
	(cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): ... add that term to
	suppress the assert.

2014-12-04  Dave Arnold  <darnold@adobe.com>

	[cff] Fix Savannah bug #43661.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
	cf2_cmdVSTEM, cf2_cmdHINTMASK>: Don't append to stem arrays after
	hintmask is constructed.

	* src/cff/cf2hints.c (cf2_hintmap_build): Add defensive code to
	avoid reading past end of hintmask.

2014-12-03  Werner Lemberg  <wl@gnu.org>

	docs/CHANGES: Updated.

2014-12-03  Werner Lemberg  <wl@gnu.org>

	[autofit] Better fix for conversion specifiers in debug messages.

	Using `%ld' for pointer differences causes warnings on 32bit
	platforms.  The correct type would be (the relatively new) `%td',
	however, this is missing on some important platforms.

	This patch improves the change from 2014-11-28.

	* src/autofit/afhints.c (AF_INDEX_NUM): Use `int' typecast.  Our
	pointer differences are always sufficiently small.
	(af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
	af_glyph_hints_dump_edge): Revert to `%d' and use `AF_INDEX_NUM'.

2014-12-03  Werner Lemberg  <wl@gnu.org>

	FT_Sfnt_Tag: s/ft_sfnt_xxx/FT_SFNT_XXX/ for orthogonality.

	All public FreeType enumeration and flag values are uppercase...

	* include/tttables.h (FT_Sfnt_Tag): Implement it.  For backwards
	compatilibity, retain the old values as macros.

	* src/base/ftfstype.c (FT_Get_FSType_Flags), src/sfnt/sfdriver.c
	(get_sfnt_table): Updated.

2014-12-02  Werner Lemberg  <wl@gnu.org>

	* include/*: Improve structure of documentation.

	. Add and update many `<Order>' tags.
	. Apply various documentation fixes.
	. Remove details to deprecated (or never implemented) data.

2014-12-02  Werner Lemberg  <wl@gnu.org>

	[docmaker] Always handle `<Order>' section elements.

	Previously, those elements were handled only for sections present in
	a `<Sections>' chapter element.

	* src/tools/docmaker/content.py (ContentProcessor::finish):
	Implement it.

2014-12-02  Werner Lemberg  <wl@gnu.org>

	[docmaker] Properly handle empty rows in Synopsis.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit
	`&nbsp;' for empty fields.

2014-12-02  Werner Lemberg  <wl@gnu.org>

	[docmaker] Thinko.

	* src/tools/docmaker/content.py (DocBlock::get_markup_words_all):
	Emit `/empty/' string for first element also.

2014-12-02  Werner Lemberg  <wl@gnu.org>

	[docmaker] Honour empty lines in `<Order>' section element.

	This greatly improves the readability of the `Synopsis' links.

	* src/tools/docmaker/content.py (DocBlock::get_markup_words_all):
	Insert string `/empty/' between items.

	* src/tools/docmaker/formatter.py (Formatter::section_dump): Make it
	robust against nonexistent keys.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit
	empty <td> elements for `/empty/'.

2014-12-02  Werner Lemberg  <wl@gnu.org>

	[docmaker] Ensure Python 3 compatibility.

	* src/tools/docmaker/content.py (ContentProcessor::set_section,
	ContentProcessor::finish): Replace `has_key' function with `in'
	keyword.

	* src/tools/docmaker/formatter.py (Formatter::__init__): Replace
	sorting function with a key generator.
	(Formatter::add_identifier): Replace `has_key' function with `in'
	keyword.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::html_source_quote):
	Replace `has_key' function with `in' keyword.
	(HtmlFormatter::index_exit, HtmlFormatter::section_enter): Use
	integer division.
	s/<>/>/.

	* src/tools/docmaker/utils.py: Import `itertools'.
	(index_sort): Replaced by...
	(index_key): ... this new key generator (doing exactly the same).

2014-11-29  Werner Lemberg  <wl@gnu.org>

	[docmaker] Don't output a block multiple times.

	This bug was hidden by not processing all lines of `<Order>' blocks.

	* src/tools/docmaker/formatter.py (Formatter::section_dump): Filter
	out field names.

2014-11-29  Werner Lemberg  <wl@gnu.org>

	[docmaker] Use field values as HTML link targets where possible.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::make_block_url):
	Accept second, optional argument to specify a name.
	(HtmlFormatter::html_source_quote): Link to field ID if possible.
	(HtmlFormatter::print_html_field_list): Emit `id' attribute.

2014-11-29  Werner Lemberg  <wl@gnu.org>

	[docmaker] Allow empty lines in `<Order>' blocks.

	Before this patch, the suggested order of entries stopped at the
	first empty line.

	Obviously, nobody noticed that this problem caused a much reduced
	set of links in the `Synopsis' sections; in particular, the
	`<Order>' blocks contain a lot of entries that wouldn't be listed
	otherwise...

	* src/tools/docmaker/content.py (DocBlock::get_markup_words_all):
	New function to iterate over all items.
	(DocSection::process): Use it.

2014-11-29  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/sources.py (column) [Format 2]: Fix regexp.

	After the single asterisk there must be no other immediately following
	asterisk.

2014-11-29  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: Improve CSS for vertical spacing.

2014-11-29  Werner Lemberg  <wl@gnu.org>

	[docmaker] Improve HTML code for table of contents.

	* src/tools/docmaker/tohtml.py: Introduce a new table class `toc',
	together with proper CSS.

2014-11-29  Werner Lemberg  <wl@gnu.org>

	[docmaker] Provide higher-level markup and simplify HTML.

	* src/tools/docmaker/tohtml.py: Instead of using extraneous `<div>'
	elements, use CSS descendants (of class `section') to format the
	data.

	Also remove reduntant <p> and <br> elements, replacing them with
	proper CSS.

	Globally reduce page width to 75%.

	(block_header): Rename <div> class to `section'.

2014-11-29  Werner Lemberg  <wl@gnu.org>

	[docmaker] Add `top' links after blocks.

	* src/tools/docmaker/tohtml.py (block_footer_middle): Implement it.

2014-11-29  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: Improve CSS for fields.

	Make fields align horizontally relative to full line width.

2014-11-29  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: Fix index and TOC templates.

	This thinko was introduced 2014-11-27.

2014-11-28  Werner Lemberg  <wl@gnu.org>

	[docmaker] Format field lists with CSS.

	This also simplifies the inserted HTML code.

	* src/tools/docmaker/tohtml.py
	(HtmlFormatter::print_html_field_list): Do it.

2014-11-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix compiler warning to the comparison between signed and
	unsigned variable.

	* src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Fix the comparison
	between `ypos + ysize' and FT_INT_{MAX,MIN}.

2014-11-28  Werner Lemberg  <wl@gnu.org>

	[docmaker] Replace empty `<td>' with CSS.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Do
	it.

2014-11-28  Werner Lemberg  <wl@gnu.org>

	[docmaker] Replace some `<table>' tags with `<h4>' and `<div>'.

	* src/tools/docmaker/tohtml.py (marker_*): Use `<h4>'.
	(source_*): Use `<div>'.
	(HtmlFormatter::block_enter): s/<h4>/<h3>/.

2014-11-28  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix compiler warning to conversion specifiers in debug messages.

	* src/autofit/afhints.c (af_glyph_hints_dump_points): Add length
	modifier to dump long integers.
	(af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Ditto.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: Use more CSS for index.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	[docmaker] Replace `name' attribute of `<a>' with `id'.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::block_enter): Do it.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: Remove remaining `width' attributes.

	For `Index' and `TOC' links, we now simply use the `text-align' CSS
	property of `<td>' to enforce flush-left and flush-right,
	eliminating the hack with an empty, full-width `<td>' element
	inbetween.

	The change also enforces the same (smaller) size for all index and
	TOC links.

2014-11-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/cff/cf2font.c: Include `ftcalc.h' to use FT_MSB(),
	cf2font.c could not find it under `make multi' build.

2014-11-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove
	unrequired negative value check for `width' and `height'.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: More HTML table refactoring.

	Replace some `<table>' tags with `<div>' to simplify structure.

	Move `bgcolor' attribute to CSS.

	Replace most `width' attributes with CSS.  The remaining instances
	(providing a similar effect as LaTeX's `\hfill' command) are removed
	in a later patch.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: Replace <font> with CSS.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: Center <table> with CSS.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: Replace `<center>' with `<div>'.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/tohtml.py: Remove redundant `<center>' tags.

	This starts a series of commits into the direction of generating
	valid HTML 5 code, especially using much more CSS.

2014-11-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Prevent too negative values (< FT_INT_MIN) in bitmap metrics,
	suggested by Alexei.

	* src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Prevent too
	negative values in `xpos' and `ypos + ysize'.
	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Prevent
	too negative values in `x_left' and `y_top'.  Either negative
	values in `width' and `height' are checked.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	[docmaker] Produce better HTML code.

	* src/tools/docmaker/tohtml.py: Always use double quotes for
	attribute values.
	(source_footer): Close `td' and `tr' groups.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	Use better way to disable creation of .pyc files for `make refdoc'.

	Python 2.6 was released in 2008...

	* builds/freetype.mk (refdoc): Use python's `-B' option.

	* builds/detect.mk (std_setup, dos_setup): Mention required python
	version for `refdoc' target.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	* src/tools/docmaker/sources.py (re_bold, re_italic): Use
	non-grouping parentheses.
	* src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word):
	Updated.

2014-11-27  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (FT_Get_Glyph_Name): Fix compiler warning.

	Introdruced in previous change.  Reported by Alexei.

2014-11-26  Werner Lemberg  <wl@gnu.org>

	* src/*: Add checks for parameters of API functions where missing.

	`API functions' are functions tagged with `FT_EXPORT_DEF'.

	Besides trivial fixes, the following changes are included, too.

	* src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Set
	error code if no service is available.

	* src/base/ftinit.c (FT_Done_FreeType): Change return value for
	invalid `library' parameter to `Invalid_Library_Handle'.

	* src/base/ftobjs.c (FT_New_Size): Change return value for invalid
	`asize' parameter to `Invalid_Argument'.

	* src/base/ftoutln.c (FT_Outline_Copy): Change return value for
	invalid `source' and `target' parameters to `Invalid_Outline'.
	(FT_Outline_Done_Internal): Change return value for invalid
	`outline' parameter to `Invalid_Outline'.

2014-11-26  Werner Lemberg  <wl@gnu.org>

	* src/cache/ftcbasic.c: Use single calls to `FT_TRACE'.

2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobj.c (Mac_Read_POST_Resource): Additional
	overflow check in the summation of POST fragment lengths,
	suggested by Mateusz Jurczyk <mjurczyk@google.com>.

2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Insert comments
	and fold too long tracing messages.

2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix Savannah bug #43540.

	* src/base/ftmac.c (parse_fond): Prevent a buffer overrun
	caused by a font including too many (> 63) strings to store
	names[] table.

2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Use unsigned long
	variables to read the lengths in POST fragments.  Suggested by
	Mateusz Jurczyk <mjurczyk@google.com>.

2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix Savannah bug #43539.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow
	by a broken POST table in resource-fork.

2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix Savannah bug #43538.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow
	by a broken POST table in resource-fork.

2014-11-26  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	* src/base/ftobjs.c (Mac_Read_POST_Resource): Avoid memory leak
	by a broken POST table in resource-fork.  Return after freeing
	the buffered POST table when it is found to be broken.

2014-11-25  Werner Lemberg  <wl@gnu.org>

	*/*: s/Invalid_Argument/Invalid_Size_Handle/ where appropriate.

2014-11-25  Werner Lemberg  <wl@gnu.org>

	*/*: s/Invalid_Argument/Invalid_Stream_Handle/ where appropriate.

2014-11-25  Werner Lemberg  <wl@gnu.org>

	*/*: s/Invalid_Argument/Invalid_Library_Handle/ where appropriate.

2014-11-25  Werner Lemberg  <wl@gnu.org>

	*/*: s/Invalid_Argument/Invalid_Outline/ where appropriate.

2014-11-25  Werner Lemberg  <wl@gnu.org>

	*/*: s/Invalid_Argument/Invalid_Face_Handle/ where appropriate.

2014-11-24  Werner Lemberg  <wl@gnu.org>

	[Savannah bug #43682] Adjust some renderer callbacks.

	* src/raster/ftraster.c (ft_black_set_mode): Change return type to
	`int' to stay in sync with `FT_Renderer_SetModeFunc' prototype.

	* src/smooth/ftgrays.c (gray_raster_set_mode): New dummy function
	for orthogonality.
	(ft_grays_raster): Use it.

2014-11-25  Werner Lemberg  <wl@gnu.org>

	[Savannah bug #43682] Properly handle missing return errors.

	The functions in this patch *do* return non-trivial errors that must
	be taken care of.

	* src/autofit/afloader.c (af_loader_load_g), src/base/ftobjs.c
	(FT_Render_Glyph_Internal), src/base/ftoutln.c (FT_Outline_Render),
	src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_endchar>,
	src/psaux/psobjs.c (ps_parser_load_field_table), src/psaux/t1decode
	(t1_decoder_parse_charstrings) <op_endchar>, src/truetype/ttgload.c
	(load_truetype_glyph <subglyph loop>, tt_loader_init,
	TT_Load_Glyph), src/truetype/ttgxvar.c (TT_Set_MM_Blend),
	src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Do it.

2014-11-25  Werner Lemberg  <wl@gnu.org>

	[Savannah bug #43682] Add/remove `void' casts to some functions.

	We use a cast to indicate that we intentionally ignore a function's
	return value.  However, this doesn't apply to API functions where
	errors can only happen for trivially invalid input.

	* src/base/ftstroke.c (FT_Glyph_Stroke, FT_Glyph_StrokeBorder),
	src/base/ftsynth.c (FT_GlyphSlot_Embolden), src/cff/cffgload.c
	(cff_slot_load), src/pfr/pfrdrivr.c (pfr_get_kerning),
	src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
	(t42_parse_encoding): Do it.

2014-11-25  Werner Lemberg  <wl@gnu.org>

	[Savannah bug #43682] Change some signatures to `void' return type.

	* include/internal/pshints.h (PSH_Globals_SetScaleFunc),
	include/internal/sfnt.h (TT_Get_Metrics_Func),
	src/pshinter/pshglob.c (psh_globals_set_scale),
	src/pshinter/pshrec.c (ps_hints_init), src/sfnt/ttmtx.c
	(tt_face_get_metrics), src/truetype/ttinterp.c (TT_Goto_CodeRange,
	TT_Set_CodeRange, TT_Clear_CodeRange, TT_Done_Context,
	TT_Save_Context): Do it.

	* src/pshinter/pshglob.h, src/pshinter/pshrec.h, src/sfnt/ttmtx.h,
	src/truetype/ttgload.c (TT_Hint_Glyph), src/truetype/ttinterp.c
	(TT_Run_Context), src/truetype/ttinterp.h, src/truetype/ttobjs.c
	(tt_size_run_fpgm, tt_size_run_prep): Updated.

2014-11-24  Werner Lemberg  <wl@gnu.org>

	Remove all code related to FT_MAX_CHARMAP_CACHEABLE.

	This is no longer used.

	* src/base/ftobjs.c, src/cache/ftccmap.c, src/cff/cffobjs.c,
	src/sfnt/ttcmap.c: Do it.

2014-11-24  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #43680.

	This adds an additional constraint to make the fix from 2013-01-25
	really work.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_image) <index_format==4>:
	Check `p' before `num_glyphs'.

2014-11-24  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix Savannah bug #43679.

	* src/truetype/ttpload.c (tt_face_load_hdmx): Check minimum size of
	`record_size'.

2014-11-24  Jarkko Pöyry  <jarkko.poyry@gmail.com>

	[cff, pfr, psaux, winfonts] Fix Savannah bug #43676.

	Don't cast cmap init function pointers to an incompatible type.

	Without this patch, the number of parameters between declaration and
	the real signature differs.  Calling such a function results in
	undefined behavior.

	  ISO/IEC 9899:TC3 (Committee Draft September 7, 2007)
	    6.5.2.2 Function calls
	      9 If the function is defined with a type that is not
	        compatible with the type (of the expression) pointed to by
	        the expression that denotes the called function, the
	        behavior is undefined.

	On certain platforms (c -> js with emscripten) this causes
	termination of execution or invalid calls because in the emscripten
	implementation, function pointers of different types are stored in
	different pointer arrays.  Incorrect pointer type here results in
	indexing of an incorrect array.

	* src/cff/cffcmap.c (cff_cmap_encoding_init, cff_cmap_unicode_init),
	src/pfr/pfrcmap.c (pfr_cmap_init), src/psaux/t1cmap.c
	t1_cmap_standard_init, t1_cmap_expert_init, t1_cmap_custom_init,
	t1_cmap_unicode_init), src/winfonts/winfnt.c (fnt_cmap_init): Fix
	signature.

2014-11-24  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #43672.

	* src/sfnt/ttkern.c (tt_face_load_kern): Use correct value for
	minimum table length test.

2014-11-24  Werner Lemberg  <wl@gnu.org>

	[type1, type42] Another fix for Savannah bug #43655.

	* src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c
	(t42_parse_charstrings): Add another boundary testing.

2014-11-24  Werner Lemberg  <wl@gnu.org>

	[docmaker] Formatting, copyright, improved documentation.

	* src/tools/docmaker/*: No code changes besides trivial
	modifications.

2014-11-22  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #43660.

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <"ENDFONT">: Check
	`_BDF_GLYPH_BITS'.

2014-11-22  Werner Lemberg  <wl@gnu.org>

	[type42] Allow only embedded TrueType fonts.

	This is a follow-up to Savannah bug #43659.

	* src/type42/t42objs.c (T42_Face_Init): Exclusively use the
	`truetype' font driver for loading the font contained in the `sfnts'
	array.

2014-11-22  Werner Lemberg  <wl@gnu.org>

	[type42] Fix Savannah bug #43659.

	* src/type42/t42objs.c (T42_Open_Face): Initialize `face->ttf_size'.

	* src/type42/t42parse.c (t42_parse_sfnts): Always set
	`face->ttf_size' directly.  This ensures a correct stream size in
	the call to `FT_Open_Face', which follows after parsing, even for
	buggy input data.
	Fix error messages.

2014-11-22  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #43658.

	* src/cff/cf2ft.c (cf2_builder_lineTo, cf2_builder_cubeTo): Handle
	return values of point allocation routines.

2014-11-22  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #43656.

	* src/sfnt/ttcmap.c (tt_cmap4_validate): Fix order of validity
	tests.

2014-11-21  Werner Lemberg  <wl@gnu.org>

	[type1, type42] Fix Savannah bug #43655.

	* src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c
	(t42_parse_charstrings): Fix boundary testing.

2014-11-21  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_get_metrics): Sanitize invalid metrics.

2014-11-21  Werner Lemberg  <wl@gnu.org>

	[ftlcdfil] Obey flow direction.

	* src/base/ftlcdfil.c (_ft_lcd_filter_fir, _ft_lcd_filter_legacy):
	Handle `up' flow.

2014-11-21  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c (FT_Bitmap_Convert): Improve.

	This commit completes argument checks and adds support for different
	flow directions.

2014-11-21  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c (FT_Bitmap_Copy): Improve.

	This commit adds argument checks and support for different flow
	directions.

2014-11-20  Werner Lemberg  <wl@gnu.org>

	* src/base/ftbitmap.c (FT_Bitmap_New): Check argument.

2014-11-19  Werner Lemberg  <wl@gnu.org>

	Change some fields in `FT_Bitmap' to unsigned type.

	This doesn't break ABI.

	* include/ftimage.h (FT_Bitmap): Make `rows', `width', `num_grays',
	`pixel_mode', and `palette_mode' unsigned types.

	* src/base/ftbitmap.c: Updated.
	(FT_Bitmap_Copy): Fix casts.

	* src/cache/ftcsbits.c, src/raster/ftraster.c, src/sfnt/pngshim.c:
	Updated.

2014-11-19  Werner Lemberg  <wl@gnu.org>

	Make `FT_Bitmap_Convert' correctly handle negative `pitch' values.

	* src/base/ftbitmap.c (FT_Bitmap_Convert): Always use positive value
	for the pitch while copying data.
	Correctly set pitch sign in target bitmap.

2014-11-19  Werner Lemberg  <wl@gnu.org>

	Minor code improvement in `FT_Bitmap_Embolden'.

	* src/base/ftbitmap.c (FT_Bitmap_Embolden) <FT_PIXEL_MODE_GRAY[24]>:
	Fix thinko.

2014-11-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/fttrigon.c: Use dedicated `FT_Angle' for arctan table.

2014-11-19  Behdad Esfahbod  <behdad@behdad.org>

	Avoid compiler warnings on x86-64 for `FT_MulFix'.

	`FT_MulFix' takes `FT_Long' parameters as defined in `freetype.h',
	but several inline implementations of it in `ftcalc.h' take
	`FT_Int32' arguments.  This is causing compiler warnings on x86-64:
	If parameters of type `FT_Fixed' (= `FT_Long') are passed to the
	inline implementation of this function, integer values are truncated
	from 64bit to 32bit.

	* include/internal/ftcalc.h (FT_MulFix) [FT_MULFIX_ASSEMBLER]: Add
	casts.

2014-11-15  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #43597.

	* src/sfnt/pngshim.c (Load_SBit_Png): Protect against too large
	bitmaps.

2014-11-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #43591.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_init): Protect against addition
	and multiplication overflow.

2014-11-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #43590.

	* src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir):
	Protect against addition overflow.

2014-11-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #43589.

	* src/sfnt/sfobjs.c (woff_open_font): Protect against addition
	overflow.

2014-11-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #43588.

	* src/sfnt/ttcmap.c (tt_cmap8_validate, tt_cmap10_validate,
	tt_cmap12_validate, tt_cmap13_validate, tt_cmap14_validate): Protect
	against overflow in additions and multiplications.

2014-11-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] CORDIC improvements.

	The scaling between the hypotenuse and its CORDIC approximation is
	based on regression analysis. The smaller padding for `theta' is
	justifed by its maximum error of less than 6.

	* src/base/fttrigon.c (ft_trig_downscale): Borrow code from
	./ftcalc.c (ft_multo64), change linear intercept.
	(ft_trig_pseudo_polarize): Decrease `theta' padding.

2014-11-09  Werner Lemberg  <wl@gnu.org>

	* src/base/ftstroke.c (ft_stroker_inside): Fix border intersections.

	One more place to check whether `radius' is zero.

	Problem reported by Marco Wertz <marco.wertz@gmx.de>.

2014-11-07  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #43535.

	* src/bdf/bdflib.c (_bdf_strncmp): New macro that checks one
	character more than `strncmp'.
	s/ft_strncmp/_bdf_strncmp/ everywhere.

2014-11-06  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix Savannah bug #43548.

	* src/pcf/pcfread.c (pcf_get_encodings): Add sanity checks for row
	and column values.

2014-11-06  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix Savannah bug #43547.

	* src/pcf/pcfread.c (pcf_read_TOC): Check `size' and `offset'
	values.

2014-11-06  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_read_TOC): Avoid memory leak.

2014-11-03  Infinality  <infinality@infinality.net>

	* src/truetype/ttsubpix.c (COMPATIBILITY_MODE_Rules): Updated.

	The previous commit deteriorates rendering of DejaVu and similar
	fonts; this gets compensated with this rule.

2014-11-03  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_DELTAP): Fix subpixel hinting.

	Before this patch, it was impossible to ever call DELTAP[123] in
	subpixel hinting mode as described in the ClearType whitepaper; it
	only worked if in `compatibility mode'.  However, compatibility mode
	essentially disables SHPIX, completely ruining hinting of
	ttfautohint output, for example.

	We now follow the whitepaper more closely so that DELTAP[123]
	instructions for touched points in the non-subpixel direction are
	executed.

2014-10-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Improve code readability.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code.

2014-10-31  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Reduce outline translations during rendering.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Translate origin
	virtually by modifying cbox, actually translate outline if cumulative
	shift is not zero.

2014-10-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Fix Savannah bug #35604 (cont'd).

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove checks and
	casts that became unnecessary after the variable type upgrades.

2014-10-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Improve code readability.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code.

2014-10-29  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Unify hypotenuse approximations.

	* include/internal/ftcalc.h (FT_HYPOT): Move macro from here...
	* include/internal/ftobjs.h: ... to here, next to required `FT_ABS'.
	* src/smooth/ftgrays.c (gray_render_cubic): Use it here.

2014-10-25  Werner Lemberg  <wl@gnu.org>

	[cff] Test valid darkening parameter macros in `ftoption.h'.

	We no longer need an otherwise unused typedef that can cause a gcc
	warning.
	Problem reported by Alexei.

	* src/cff/cffobjs.c (cff_driver_init): Use
	`CFF_CONFIG_OPTION_DARKENING_PARAMETER_XXX' macros directly.
	(SET_DARKENING_PARAMETERS): Removed.
	Compile time tests are now ...

	* devel/ftoption.h, include/config/ftoption.h: ... here.

2014-10-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Improve flat corner definition.

	* include/internal/ftcalc.h (FT_HYPOT): Macro to approximate Euclidean
	distance with the alpha max plus beta min algorithm.
	* src/base/ftcalc.c (ft_corner_is_flat): Use it instead of Taxicab
	metric.

2014-10-23  David Weiß  <David.Weiss@ptvgroup.com>

	[build] Improve property file for vc2010.

	User-defined properties should be empty by default to prevent linker
	failures.

	* builds/windows/vc2010/freetype.user.props,
	builds/windows/vc2010/freetype.vcxproj:
	s/OptionsDirectory/UserOptionDirectory/.
	Comment out all user options.

2014-10-23  Werner Lemberg  <wl@gnu.org>

	[cff] Work around bug in preprocessor of MSVC 2010.

	We have been hit by

	  https://connect.microsoft.com/VisualStudio/feedback/details/718976/msvc-pr

	* devel/ftoption.h, include/config/ftoption.h: Replace
	`CFF_CONFIG_OPTION_DARKENING_PARAMETERS' with eight macros
	`CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}'.

	* src/cff/cffobjs.c (SET_DARKENING_PARAMETERS): Removed.  We no
	longer need double expansion.
	(SET_DARKENING_PARAMETERS_0): Renamed to ...
	(SET_DARKENING_PARAMETERS): ... this.
	Update call.

2014-10-20  Werner Lemberg  <wl@gnu.org>

	[sbit] Minor fixes.

	* src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
	Accept overlay format also, but emit warning message in that case.
	(tt_sbit_decoder_load_metrics): Add missing newline to error
	message.
	(tt_sbit_load_sbix_image): Add `rgbl' graphic type (as used on iOS
	7.1) to the list of unsupported formats.

2014-10-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Clean up bytecode rounding.

	Zero distance does not have to be treated specially if you follow
	specifications and check the sign as the very last step of rounding.

	* src/truetype/ttinterp.c (Round_None, Round_To_Grid,
	Round_Down_To_Grid, Round_Up_To_Grid, Round_To_Double_Grid): Use
	macros when available, do not check for non-zero distance.
	(Round_To_Half_Grid, Round_Super, Round_Super_45): Ditto, return phase
	if sign changed.

2014-10-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Unwrap engine compensation settings.

	* src/truetype/ttobjs.c (tt_size_init_bytecode): Updated.

2014-10-18  David Weiß  <David.Weiss@ptvgroup.com>

	[build] Add property file to vc2010 project.

	This simplifies custom build configurations, especially for
	automated build environments.

	* builds/windows/vc2010/freetype.user.props: New configuration file.

	* builds/windows/vc2010/freetype.vcxproj: Include
	`freetype.user.props' and use its data fields.

	* builds/windows/vc2010/index.html: Updated.

2014-10-18  Werner Lemberg  <wl@gnu.org>

	[autofit] Add blue-zone support for Telugu.

	This essentially moves the Telugu script from the `Indic' hinter to
	the `Latin' hinter.

	Note that this is a first shot and quite certainly needs
	refinements.

	* src/autofit/afblue.dat: Add blue zone data for Telugu.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Telugu standard characters and move
	data out of AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afranges.c: Move Telugu data out of
	AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afstyles.h: Update Telugu data; in particular, use
	AF_WRITING_SYSTEM_LATIN.

2014-10-18  David Wimsey  <david@wimsey.us>

	[cmake] Add iOS build support.
	From Savannah patch #8497.

	* builds/cmake/iOS.cmake: New file.  Universal binaries are built
	with both 32 and 64 bit arm architectures.

	* CMakeLists.txt (IOS_PLATFORM): New variable for running the iOS
	toolchain.  Possible values are `OS' to build on iOS, or
	`SIMULATOR' to build on APPLE.

2014-10-16  Behdad Esfahbod  <behdad@behdad.org>
	    Werner Lemberg  <wl@gnu.org>

	[cff] Add `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' config macro.

	* devel/ftoption.h, include/config/ftoption.h
	(CFF_CONFIG_OPTION_DARKENING_PARAMETERS): New macro.

	* src/cff/cffobjs.c (SET_DARKENING_PARAMETERS,
	SET_DARKENING_PARAMETERS_0): New macros.
	(cff_driver_init): Use new macros.

2014-10-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Limit delta shift range.

	The valid range for delta shift is zero through six.  Negative values
	are invalid according to

	  https://developer.apple.com/fonts/TrueType-Reference-Manual/RM04/Chap4.html#delta%20shift

	* src/truetype/ttobjs.h (delta_shift, delta_base): Make unsigned.
	* src/truetype/ttinterp.h (DO_SDS): Throw an error if `delta_shift'
	is out of range.
	(Ins_DELTAP, Ins_DELTAC): Optimize for valid `delta_shift'.

2014-10-16  Werner Lemberg  <wl@gnu.org>

	A better fix for Savannah bug #43392.
	Suggested by Doug Felt <dougfelt@gmail.com>.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Set
	`vertAdvance' to zero...

	* src/truetype/ttgload.c (TT_Load_Glyph): ... and set here a default
	value for `vertAdvance' based on `linearVertAdvance' in case
	`vertAdvance' is zero.  Note that the previous computed ad-hoc value
	for `linearVertAdvance' was apparently not tested in a real-life
	situation.

2014-10-14  David Weiß  <David.Weiss@ptvgroup.com>

	[build] Better optimization settings for vc2010 solution file.

	* builds/windows/vc2010/freetype.sln,
	builds/windows/vc2010/freetype.vcxproj: Updated.

2014-10-14  Werner Lemberg  <wl@gnu.org>

	[autofit] Adjust Devenagari character range.

	* src/autofit/afranges.c (af_deva_uniranges): Omit characters that
	are common to all other Indic scripts.

2014-10-12  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #43392.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Don't let
	vertical metrics uninitialized.

2014-10-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Small bbox correction.

	* src/base/ftbbox.c (FT_Outline_Get_BBox): Start from nonsense bbox
	instead of initial point that could be `off' in conic outlines.

2014-10-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix Savannah bug #43356.

	* src/base/ftbbox.c (BBox_Move_To, BBox_Conic_To): Update bbox in case
	of implicit `to'.
	(BBox_Line_To): New emitter that does not update bbox.

2014-10-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Introduce and use new macro `FT_UPDATE_BBOX'

	* src/base/ftbbox.c (FT_UPDATE_BBOX): New macro.
	(FT_Outline_Get_BBox): Use it here.

2014-10-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Significant optimization of `ft_div64by32'

	We shift as many bits as we can into the high register, perform
	32-bit division with modulo there, then work through the remaining
	bits with long division. This optimization is especially noticeable
	for smaller dividends that barely use the high register.

	* src/base/ftcalc.c (ft_div64by32): Updated.

2014-10-02  Dave Arnold  <darnold@adobe.com>

	[cff] Fix Savannah bug #43271.

	* src/cff/cf2font.c (cf2_computeDarkening): Change overflow
	detection to use logarithms and clamp `scaledStem'.

2014-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c: Remove miscellaneous type casts.

2014-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Use more common `FT_MSB' implementation with masks.

	* src/base/ftcalc.c (FT_MSB): Updated.

2014-09-30  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Clean up.

	* src/base/ftcalc.c (FT_MOVE_SIGN): New macro for frequently used
	code.

2014-09-25  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Avoid unnecessary long division.

	This applies to `FT_MulDiv' but not to `FT_DivFix', where overflows or
	lack thereof are predicted accurately.

	* src/base/ftcalc.c (ft_div64by32): Improve readability.
	(FT_MulDiv, FT_MulDiv_No_Round) [!FT_LONG64]: Use straight division
	when multiplication stayed within 32 bits.

2014-09-24  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor clean-ups.

	* src/autofit/afhints.c (AF_FLAGS): Remove obsolete values.

	* src/autofit/afhints.c (af_glyph_hints_dump_points,
	af_glyph_hints_align_strong_points): Updated.

	* src/autofit/aflatin.c (af_latin_hints_link_segments,
	af_latin_hints_compute_segments), src/autofit/afcjk.c
	(af_cjk_hints_link_segments), src/autofit/aflatin2.c
	(af_latin2_hints_link_segments, af_latin2_hints_compute_segments):
	There are no longer fake segments since more than 10 years...

2014-09-22  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor code streamlining.

	* src/autofit/afhints.c (af_axis_hints_new_edge): Remove redundant
	initialization.

2014-09-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c: Harmonize code.

2014-09-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Tighten the overflow check in `FT_MulDiv'.

	* src/base/ftcalc.c (FT_MulDiv) [!FT_LONG64]: Updated.

2014-09-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Fix Savannah bug #43153.

	* src/psaux/psconv.c (PS_Conv_ToFixed): Add protection against
	overflow in `divider'.

2014-09-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Tighten the overflow check in `FT_DivFix'.

	This fixes a 13-year old bug. The original overflow check should have
	been updated when rounding was introduced into this function
	(c2cd00443b).

	* src/base/ftcalc.c (FT_DivFix) [!FT_LONG64]: Updated.
	* include/freetype.h (FT_DivFix): Updated documentation.

2014-09-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Tighten the overflow check in `FT_MulFix'.

	* src/base/ftcalc.c (FT_MulFix) [!FT_LONG64]: Updated.

2014-09-02  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Shortcut ppem calculations for square pixels.

	* src/truetype/ttinterp.h (TT_ExecContextRec): New field
	`cur_ppem_func' with a function pointer.
	* src/truetype/ttinterp.c (TT_RunIns): Initialize `cur_ppem_func'
	depending on the pixel geometry to either...
	(Current_Ppem_Stretched): ... this for stretched pixels.
	(Current_Ppem): ... or this for square pixels.
	(DO_MPPEM, DO_MPS, Ins_DELTAP, Ins_DELTAC): Use `cur_ppem_func'.

2014-08-31  Behdad Esfahbod  <behdad@behdad.org>

	Don't use `register' keyword.  Fixes compiler warnings.

	* src/base/ftcalc.c (FT_Add64) [!FT_LONG64]: Do it.
	* src/gzip/inftrees.c (huft_build): Ditto.
	* src/truetype/ttinterp.c (TT_MulFix14_arm): Ditto.

2014-08-24  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Optimize DELTAP and DELTAC.

	* src/truetype/ttinterp.c (Ins_DELTAP, Ins_DELTAC): Move ppem
	calculations outside of the loop.

2014-08-21  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Fix Savannah bug #43033.

	* include/config/ftconfig.h, builds/unix/ftconfig.in,
	builds/vms/ftconfig.h [FT_LONG64]: Do not disable the macro when
	64-bit type is `long'.

2014-08-20  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Small optimization of `FT_MulFix'.

	* src/base/ftcalc.c (FT_MulFix): Loosen up the condition for direct
	32-bit calculations.

2014-08-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Use unsigned calculation in `FT_MulDiv'.

	* src/base/ftcalc.c (FT_MulDiv): Updated to expand 32-bit range.

2014-08-18  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Remove truncation in `FT_DivFix'.

	* src/base/ftcalc.c (FT_DivFix): Updated.

2014-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Minor refactoring.

	* src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Updated.

2014-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Turn FT_MSB into a macro when using gcc builtins.

	* src/base/ftcalc.c, include/internal/ftcalc.h: Updated.

2014-08-12  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Avoid undefined FT_MSB in `BBox_Cubic_Check'.

	* src/base/ftbbox.c (BBox_Cubic_Check): Update.
	(update_cubic_max): Repalce with...
	(cubic_peak): ... this, which now handles upscaling.

2014-08-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Handle collapsed outlines to avoid undefined FT_MSB.

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Update.

2014-08-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Restore FT_MulFix inlining.

	* include/freetype.h (FT_MulFix): Unconditionally defined.

	* src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: Move code from here...

	* include/internal/ftcalc.h [FT_MULFIX_ASSEMBLER]: ... to here,
	which conditionally replaces the function with an inline version
	through the macro.

2014-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Refactor.

2014-07-26  Werner Lemberg  <wl@gnu.org>

	[cff] Fix typo.

	* src/cff/cf2hints.c (cf2_glyphpath_computeOffset): Use correct
	offsets in third quadrant.

	Reported by maks <maksqwe1@ukr.net>.

2014-07-17  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #42788.

	* src/pfr/pfrobjs.c: Include `ftcalc.h'.

2014-07-16  Alexei Podtelezhnikov  <apodtele@gmail.com>

	Replace `ft_highpow2' function.

	* src/pfr/pfrobjs.c (pfr_face_get_kerning): Use `FT_MSB' instead of
	`ft_highpow2'.

	* src/base/ftutil.c, include/internal/ftobjs.h (ft_highpow2): Remove
	it.

2014-07-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c (FT_MSB): Utilize gcc builtins.

2014-07-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Move assembler code back in the source file.

	FT_MulFix assembler used to reside in ftcalc.c before f47d263f1b.

	* include/config/ftconfig.h, builds/unix/ftconfig.in,
	builds/vms/ftconfig.h [FT_MULFIX_ASSEMBLER]: Move code from here...

	* src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: ... to here.

2014-07-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Further clean up color bitmap conversion.

	* src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Stop
	using FT_MulFix and FT_DivFix since all calculations fit into 32 bits.

2014-07-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve handling of buggy `prep' tables.

	In case of an error in the `prep' table, no longer try to execute it
	again and again.  This makes FreeType handle endless loops in buggy
	fonts much faster.

	* src/truetype/ttobjs.h (TT_SizeRec): The fields `bytecode_ready'
	and `cvt_ready' are now negative if not initialized yet, otherwise
	they indicate the error code of the last run.

	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep,
	tt_size_done_bytecode, tt_size_init_bytecode,
	tt_size_ready_bytecode, tt_size_init, tt_size_done, tt_size_reset):
	Updated.

	* src/truetype/ttgload.c (tt_loader_init): Updated.
	* src/truetype/ttinterp.c (TT_RunIns): Force reexecution of `fpgm'
	and `prep' only if we are in the `glyf' table.

2014-07-12  Werner Lemberg  <wl@gnu.org>

	* builds/vms/ftconfig.h: Synchronize.
	Problem reported by Alexei.

2014-07-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Clean up bitmap conversion.

	* src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
	appropriate FT_DivFix and remove superfluous upscaling.

2014-07-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Small optimization of the ancient code.

	* src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Loosen up the
	condition for direct 32-bit calculations.

2014-06-27  Werner Lemberg  <wl@gnu.org>

	Fix Apple standard glyph names.

	* src/sfnt/ttpost.c (tt_post_default_names): Synchronize with
	`tools/glnames.py'

	Problem reported by Adam Twardoch <adam@fontlab.com>.

2014-06-17  Werner Lemberg  <wl@gnu.org>

	Partially revert commit from 2014-06-13.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Move
	declaration of `p_first' and `p_last' out of the loop.

2014-06-17  Werner Lemberg  <wl@gnu.org>

	* builds/unix/freetype2.m4: s/AC_PATH_PROG/AC_PATH_TOOL/.

	This simplifies cross-compiling.

2014-06-13  Werner Lemberg  <wl@gnu.org>

	Fix more compiler warnings.
	Reported by Wojciech Mamrak <wmamrak@gmail.com>.

	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
	Make integer constant unsigned.

	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
	<TT_SBIT_TABLE_TYPE_SBIX>: Fix types.
	(tt_sbit_decoder_load_compound, tt_face_load_sbix_image): Add proper
	casts.

2014-06-13  Werner Lemberg  <wl@gnu.org>

	Fix compiler warnings.
	Reported by Wojciech Mamrak <wmamrak@gmail.com>.

	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage),
	src/autofit/afmodule.c (af_property_set): Fix `signed' vs.
	`unsigned' issues.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Make compiler
	happy.

	* src/base/ftlcdfil.c (_ft_lcd_filter_fir): Use only four elements
	for `fir'.
	Fix `signed' vs. `unsigned' issues.

	* src/sfnt/sfobjs.c (WRITE_BYTE): Removed, unused.
	(WRITE_USHORT, WRITE_ULONG): Add proper casts.

	* src/truetype/ttgload.c (TT_Get_VMetrics): Add proper casts.

	* src/truetype/ttinterp.c (Ins_DELTAP): Add proper casts for `B1'
	and `B2'.

2014-05-16  Alexey Petruchik  <alexey.petruchik@gmail.com>

	[cmake] Add option to build OS X framework.

	* CMakeLists.txt: Update accordingly.

	* builds/mac/freetype-Info.plist: New file.

2014-05-13  Pavel Koshevoy  <pkoshevoy@gmail.com>

	* CMakeLists.txt (BASE_SRCS): Add missing `ftbdf.c'.

2014-05-11  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix variable initializations.

	* src/autofit/afhints.c (af_glyph_hints_reload): Assign default
	values to `in_dir' and `out_dir' for all points.

2014-05-11  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix crash with font `CabinSketch-Bold.ttf'.

	Problem reported by Ralf S. Engelschall <rse@engelschall.com>.

	* src/autofit/afhints.c (af_glyph_hints_reload): Fix threshold for
	finding first non-near point.
	Properly initialize non-near point deltas.

2014-05-01  Werner Lemberg  <wl@gnu.org>

	[autofit] Add blue-zone support for Devanagari.

	This essentially moves the Devanagari script from the `Indic' hinter
	to the `Latin' hinter.  Thanks to Girish Dalvi
	<girish.dalvi@gmail.com> for guidance with blue zone characters!

	* src/autofit/afblue.dat: Add blue zone data for Devanagari.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afscript.h: Add Devanagari standard characters and
	move data out of AF_CONFIG_OPTION_INDIC block.

	* src/autofit/afranges.c: Move Devanagari data out of
	AF_CONFIG_OPTION_INDIC block.
	Move U+20B9, (new) Rupee sign, from Latin to Devanagari.

	* src/autofit/afstyles.h: Update Devanagari data; in particular, use
	AF_WRITING_SYSTEM_LATIN.

2014-05-01  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix handling of neutral blue zones in stems.

	* src/autofit/afhints.h (AF_Edge_Flags): New value
	`AF_EDGE_NEUTRAL'.

	* src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Trace
	neutral blue zones with AF_EDGE_NEUTRAL.
	(af_latin_hint_edges): Skip neutral blue zones if necessary.

2014-04-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Introduce neutral blue zones to the latin module.

	Such blue zones match either the top or the bottom of a contour.  We
	need them for scripts where accent-like elements directly touch the
	base character (for example, some vowel signs in Devanagari, cf.
	U+0913 or U+0914).

	* src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_NEUTRAL): New
	property.

	* src/autofit/afblue.h: Regenerated.

	* src/autofit/aflatin.h (AF_LATIN_IS_NEUTRAL_BLUE): New macro.
	(AF_LATIN_BLUE_NEUTRAL): New enumeration value.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues,
	af_latin_hints_compute_blue_edges): Handle neutral blue zones.

2014-04-25  Werner Lemberg  <wl@gnu.org>

	* src/autofit/hbshim.c: Partially revert commit from 2014-04-17.

	Using input glyph coverage data is simply wrong.

	Problem reported by Nikolaus Waxweiler <madigens@gmail.com> and
	Mantas Mikulėnas <grawity@gmail.com>.

2014-04-23  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c (Vertical_Sweep_Span): Use drop-out mode.

	This spot has been missed while introducing support for various
	drop-out modes years ago (including no drop-out mode, which this
	commit fixes).

	Problem reported by Patrick Thomas <pthomas505@gmail.com>.

2014-04-22  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/pngshim.c (error_callback): s/longjmp/ft_longjmp/.

2014-04-20  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix Savannah bug #42148.

	The adaptation of the cjk auto-hinter module to blue stringsets in
	2013-08-25 had three severe bugs.  Mea culpa.

	1. Contrary to the latin auto-hinter, characters for reference and
	   overshoot values of a blue zone are specified separately.  Due to
	   the screwed-up change it didn't work at all.

	2. A boolean comparison was erroneously replaced with a cast,
	   causing invalid results with the `^' operator later on.  The
	   visual artifact caused by this problem is the topic of the bug
	   report.

	3. Two flag values were inverted, causing incorrect assignment of
	   reference and overshoot values.

	* src/autofit/afblue.dat: Fix CJK bluestrings, introducing a new
	syntax to have both reference and overshoot characters in a single
	string.  This is error #1.
	Add extensive comments.

	* src/autofit/afblue.hin (AF_BLUE_PROPERTY_CJK_FILL): Removed, no
	longer used.
	(AF_BLUE_PROPERTY_CJK_TOP, AF_BLUE_PROPERTY_CJK_HORIZ): Fix values.
	This is error #3.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/afcjk.c (af_cjk_metrics_init_blues): Correct error #1.
	Use character `|' to separate characters for reference and overshoot
	values.
	Improve tracing messages, synchronizing them with the latin
	auto-hinter.
	(af_cjk_hints_compute_blue_edges): Fix value of `is_top_right_blue'.
	This is error #2.
	(af_cjk_align_linked_edge): Add tracing message.

	* src/autofit/afcjk.h (AF_CJK_IS_FILLED_BLUE): Removed, no longer
	used.

2014-04-17  Werner Lemberg  <wl@gnu.org>

	[autofit] More coverage fixes for complex scripts.

	* src/autofit/hbshim.c (af_get_coverage): Merge input glyph coverage
	of GSUB lookups into output coverage.  Otherwise, ligatures are not
	handled properly.
	Don't check blue zone characters for default coverage.

2014-04-17  Werner Lemberg  <wl@gnu.org>

	Make `FT_Get_SubGlyph_Info' actually work.

	* src/base/ftobjs.c (FT_Get_SubGlyph_Info): Return FT_Err_Ok
	if there is no error.

2014-04-15  Werner Lemberg  <wl@gnu.org>

	[afblue.pl]: Minor improvements.

	* src/tools/afblue.pl: Allow whitespace before comments.
	Ignore whitespace in strings.

2014-04-14  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve coverage handling.

	* src/autofit/hbshim.c (af_get_coverage): Don't exclude glyphs
	appearing in the GPOS table if we are processing the default
	coverage.

2014-04-13  David Weber <weber.aulendorf@googlemail.com>

	[smooth] Fix stand-alone compilation.

	* src/smooth/ftgrays.c (FT_BEGIN_STMNT, FT_END_STMNT): Define.

2014-04-12  Werner Lemberg  <wl@gnu.org>

	[autofit] Redesign the recognition algorithm of strong points.

	In particular, local extrema without horizontal or vertical segments
	are better recognized:

	  + A                + D
	   \                /
	    \              /
	     \            /
	      \          /
	       \        + C
	        \    /
	       B +/

	If the distances AB and CD are large, point B wasn't previously
	detected as an extremum since the `ft_corner_is_flat' function
	`swallowed' BC regardless of its direction, tagging point B as weak.
	The next iteration started at B and made `ft_corner_is_flat' swallow
	point C, tagging it as weak also, et voilà.

	To improve that, another pass gets now performed before calling
	`ft_corner_is_flat' to improve the `topology' of an outline: A
	sequence of non-horizontal or non-vertical vectors that point into
	the same quadrant are handled as a single, large vector.

	Additionally, distances of near points are now accumulated, which
	makes the auto-hinter handle them as if they were prepended to the
	next non-near vector.

	This generally improves the auto-hinter's rendering results.

	* src/autofit/afhints.c (af_glyph_hints_reload): Implement it.

	* src/autofit/afhints.h (AF_FLAGS): Remove no longer used flag
	`AF_FLAG_NEAR'.

2014-04-05  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve scoring algorithm for identifying stems.

	Problem reported by Karsten Lücke <karsten.luecke@kltf.de>.

	The new algorithm takes care of the width of stems: If the distance
	between two segments is larger than the largest stem width, the
	demerits quickly increase for larger distances.  This improves
	hinting of slanted fonts (especially if the inner parts of serifs
	have non-horizontal `shoulders'), avoiding false stem links.

	* src/autofit/aflatin.c (af_latin_hints_link_segments): Use largest
	stem width (if available) to compute better demerits for distances
	between stems.
	(af_latin_hints_detect_features): Pass stem width array and array
	size.
	(af_latin_metrics_init_widths): Updated to use original algorithm.
	(af_latin_hints_apply): Updated to use new algorithm.

	* src/autofit/aflatin.h: Updated.
	* src/autofit/afcjk.c: Updated.

2014-04-03  Werner Lemberg  <wl@gnu.org>

	Don't require `gzip' module for `sfnt'.

	Reported by Preet <prismatic.project@gmail.com>.

	* src/sfnt/sfobjs.c (woff_open_font): Guard use of
	FT_Gzip_Uncompress with FT_CONFIG_OPTION_USE_ZLIB.

2014-03-27  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #38235.

	Work around a bug in pkg-config version 0.28 and earlier: If a
	variable value gets surrounded by doublequotes (in particular values
	for the `prefix' variable), the prefix override mechanism fails.

	* builds/unix/freetype2.in: Don't use doublequotes.
	* builds/unix/unix-def.in (freetype.pc): Escape spaces in directory
	names with backslashes.

2014-03-24  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #41946.

	Based on a patch from Marek Kašík <mkasik@redhat.com>.

	* builds/unix/configure.raw (LIBS_CONFIG): Remove.
	* builds/unix/freetype-config.in (libs): Hard-code value.
	* builds/unix/unix-def.in: Updated.

2014-03-22  Werner Lemberg  <wl@gnu.org>

	Another revert for the change from 2014-03-18.

	Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.

	* src/base/ftcalc.c (FT_MulFix): Ensure that an `FT_MulFix' symbol
	gets always exported.

2014-03-20  Werner Lemberg  <wl@gnu.org>

	CMakeLists.txt: Another fix for include directories.

	Problem reported by Taylor Holberton <taylorcholberton@gmail.com>.

2014-03-19  Werner Lemberg  <wl@gnu.org>

	CMakeLists.txt: Fix include directories.

	Problem reported by Taylor Holberton <taylorcholberton@gmail.com>.

2014-03-19  Werner Lemberg  <wl@gnu.org>

	Partially revert last commit.

	Found by Alexei.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Initializing
	those variables is plain wrong, since we are in a loop.

2014-03-18  Sean McBride  <sean@rogue-research.com>
	    Werner Lemberg  <wl@gnu.org>

	Fix clang warnings.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Initialize
	some variables.

	* src/base/ftcalc.c (FT_MulFix): Only use code if
	`FT_MULFIX_INLINED' is not defined.

	* src/bdf/bdfdrivr.c (bdf_cmap_class), src/cache/ftcbasic.c
	(ftc_basic_image_family_class, ftc_basic_image_cache_class,
	ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class),
	src/cache/ftccmap.c (ftc_cmap_cache_class), src/cache/ftcmanag.c
	(ftc_size_list_class, ftc_face_list_class), src/pcf/pcfdrivr.c
	(pcf_cmap_class), src/pfr/pfrdrivr.c (pfr_metrics_service_rec): Make
	function static.

	* src/type1/t1driver.c (t1_ps_get_font_value): Remove redundant
	code.

2014-03-17  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #41869.

	This works around a problem with HarfBuzz (<= 0.9.26), which doesn't
	validate glyph indices returned by
	`hb_ot_layout_lookup_collect_glyphs'.

	* src/autofit/hbshim.c (af_get_coverage): Guard `idx'.

	* docs/CHANGES: Updated.

2014-03-14  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.raw: Don't show error messages of `which'.

2014-03-09  Alan Coopersmith  <alan.coopersmith@oracle.com>

	Fix cppcheck 1.64 warning.

	* src/autofit/afglobal.c (af_face_globals_new): Catch NULL pointer
	dereference in case of error.

2014-03-09  Sean McBride  <sean@rogue-research.com>

	* src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove clang warning.

2014-03-06  Werner Lemberg  <wl@gnu.org>

	* Version 2.5.3 released.
	=========================


	Tag sources with `VER-2-5-3'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.5.3.

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.5.2/2.5.3/, s/252/253/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.

	* builds/unix/configure.raw (version_info): Set to 17:2:11.
	* CMakeLists.txt (VERSION_PATCH): Set to 3.
	* docs/CHANGES: Updated.

2014-03-06  Werner Lemberg  <wl@gnu.org>

	Fixes for compilation with C++.

	* src/autofit/hbshim.c (scripts): Change type to `hb_script_t'.
	(af_get_coverage): Updated.
	(COVERAGE): Add cast.

2014-03-06  Sean McBride  <sean@rogue-research.com>

	Remove more clang analyzer warnings.

	* src/bdf/bdflib.c (_bdf_readstream), src/truetype/ttgload.c
	(TT_Load_Glyph): Remove dead stores.

2014-03-05  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.raw: Simplify.

2014-03-05  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Fix a bug in configure in library dependency setting
	Reported in https://bugs.freedesktop.org/show_bug.cgi?id=75652.

	* builds/unix/configure.raw: Use `x"${xxx}" != xno' style.

2014-03-04  Werner Lemberg  <wl@gnu.org>

	Minor fix for `make devel'.

	* builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Don't use
	pkg-config for bzip2 since not all GNU/Linux distributions have
	`bzip2.pc' (and the header file `bzlib.h' is located in /usr/include
	normally).

2014-03-04  Sean McBride  <sean@rogue-research.com>

	Fix several clang static analyzer dead store warnings.

	* src/autofit/afhints.c (af_glyph_hints_reload,
	af_glyph_hints_align_weak_points): Remove unnecessary assignments.

	* src/bdf/bdflib.c (bdf_font_load): Ditto.

	* src/pshinter/pshalgo.c (psh_glyph_compute_extrema,
	psh_glyph_interpolate_other_points): Ditto.

	* src/type1/t1load.c (T1_Set_MM_Blend): Ditto.

2014-03-03  Werner Lemberg  <wl@gnu.org>

	Rewrite library option handling in `configure'.

	o Introduce `auto' value for `--with-XXX' library options; this is
	  now the default.

	o First use `pkg-config' for library detection, then fall back to
	  other tests.

	* builds/unix/configure.raw (--with-zlib, --with-bzip2, --with-png,
	--with-harfbuzz): Rewrite.
	Use new `xxx_reqpriv', `xxx_libpriv', and `xxx_libstaticconf'
	variables to collect data for `freetype2.pc' and `freetype-config'.
	(FT2_EXTRA_LIBS): Renamed to ...
	(ft2_extra_libs): This since it gets no longer substituted.
	(REQUIRES_PRIVATE, LIBS_PRIVATE, LIBS_CONFIG, LIBSSTATIC_CONFIG):
	New output variables, replacing `XXX_PKG' and `LIBXXX'.
	Add notice at the end of `configure' showing the library
	configuration.

	* builds/unix/freetype-config.in (--static): New command line
	option.
	(libs): Updated.
	(staticlibs): New variable, to be used if `--static' is given.
	* docs/freetype-config.1: Document `--static'.

	* builds/unix/freetype2.in, builds/unix/unix-def.in: Updated.

2014-03-01  Werner Lemberg  <wl@gnu.org>

	Avoid `long long' warnings with older gcc compilers.
	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.

	* builds/unix/configure.raw: Don't use gcc's `-pedantic' flag for
	versions < 4.6.  This is especially needed for Max OS X since this
	OS runs a gcc variant (or emulation) based on version 4.2.1.

2014-03-01  Werner Lemberg  <wl@gnu.org>

	* docs/INSTALL.CROSS: Revised and updated.

2014-03-01  Werner Lemberg  <wl@gnu.org>

	Make `make clean' remove `freetype2.pc'.

	This is a generated file at build time, not configure time.

	* builds/unix/unix-def.in (DISTCLEAN): Move `freetype2.pc' to ...
	(CLEAN): This variable.

2014-03-01  Werner Lemberg  <wl@gnu.org>

	Use pkg-config for detecting libpng and libbz2 also.

	* builds/unix/configure.raw (HAVE_PKG): New variable.
	Search for libbz2 using `pkg-config'; s/BZ2/BZIP2/.
	Search for libpng using `pkg-config'.
	Fix definition of `LIBHARFBUZZ' variable.
	* builds/unix/freetype-config.in ($libs): Updated.
	* builds/unix/freetype2.in: Add `URL' field.
	Update `Requires.private' and `Libs.private'.
	* builds/unix/unix-def.in: Updated.

2014-03-01  Werner Lemberg  <wl@gnu.org>

	Add configure support for HarfBuzz.

	* builds/unix/pkg.m4: New file.
	* builds/unix/configure.raw: Search for libharfbuzz using
	`pkg-config'.
	Add `--without-harfbuzz' option.
	* builds/unix/freetype-config.in, builds/unix/freetype2.in,
	builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle
	HarfBuzz.

	* docs/INSTALL.UNIX: Document interdependency of Freetype with
	HarfBuzz.

2014-02-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[cff] Math simplifications.

	* src/cf2blues.c (cf2_blues_init): Use `FT_MulDiv'.
	* src/cf2ft.c (cf2_getScaleAndHintFlag): Use simple division.

2014-02-28  Dave Arnold  <darnold@adobe.com>

	[cff] Fix Savannah bug #41697, part 2.

	* src/cff/cf2ft.c (cf2_initLocalRegionBuffer,
	cf2_initGlobalRegionBuffer): It is possible for a charstring to call
	a subroutine if no subroutines exist.  This is an error but should
	not trigger an assert.  Split the assert to account for this.

2014-02-28  Dave Arnold  <darnold@adobe.com>

	[cff] Fix Savannah bug #41697, part 1.

	* src/cff/cf2hints.c (cf2_hintmap_build): Return when `hintMask' is
	invalid.  In this case, it is not safe to use the length of
	`hStemHintArray'; the exception has already been recorded in
	`hintMask'.

2014-02-26  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #41696.

	* src/sfnt/ttcmap.c (tt_cmap0_validate, tt_cmap2_validate,
	tt_cmap4_validate, tt_cmap14_validate): Fix limit tests.

2014-02-26  Werner Lemberg  <wl@gnu.org>

	[winfnt] Fix Savannah bug #41694.

	* src/winfonts/winfnt.c (FNT_Load_Glyph): Check glyph offset.

2014-02-26  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #41693.

	* src/cff/cffload.c (CFF_Load_FD_Select): Reject empty array.

2014-02-26  Werner Lemberg  <wl@gnu.org>

	[bdf] Fix Savannah bug #41692.

	bdflib puts data from the input stream into a buffer in chunks of
	1024 bytes.  The data itself gets then parsed line by line, simply
	increasing the current pointer into the buffer; if the search for
	the final newline character exceeds the buffer size, more data gets
	read.

	However, in case the current line's end is very near to the buffer
	end, and the keyword to compare with is longer than the current
	line's length, an out-of-bounds read might happen since `memcmp'
	doesn't stop properly at the string end.

	* src/bdf/bdflib.c: s/ft_memcmp/ft_strncmp/ to make comparisons
	stop at string ends.

2014-02-17  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[autofit] Fix `make multi' compilation.

	* src/autofit/hbshim.c: Include `afglobal.h' and `aftypes.h'.

2014-02-19  Werner Lemberg  <wl@gnu.org>
	    Simon Bünzli  <zeniko@gmail.com>

	Fix Savannah bug #32902.

	Patch taken from

	  https://code.google.com/p/sumatrapdf/source/browse/trunk/ext/_patches/freetype2.patch?spec=svn8620&r=8620#87

	with slight modifications.

	* src/type1/t1parse.c (T1_Get_Private_Dict): Add heuristic test to
	handle fonts that incorrectly use \r at the beginning of an eexec
	block.

2014-02-19  Simon Bünzli  <zeniko@gmail.com>

	Fix Savannah bug #41590.

	* src/type1/t1load.c (parse_encoding): Protect against invalid
	number.

2014-02-12  Dave Arnold  <darnold@adobe.com>

	[cff] Optimize by using `FT_MulDiv'.
	Suggested by Alexei.

	* src/cff/cf2font.c (cf2_computeDarkening): Do it.

2014-02-12  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #41465.

	* builds/unix/unix-def.in (CLEAN): Add `freetype-config'.
	(DISTCLEAN): Remove `freetype-config'.

2014-02-08  Sean McBride  <sean@rogue-research.com>

	Fix clang static analyzer and compiler warnings.

	* src/autofit/afhints.c (af_glyph_hints_align_weak_points),
	src/autofit/afloader (af_loader_load_g) <FT_GLYPH_FORMAT_COMPOSITE>,
	src/base/ftcalc.c (FT_MSB), src/base/ftoutln.c
	(FT_Outline_Decompose), src/bdf/bdfdrivr.c (bdf_interpret_style),
	src/cff/cffparse.c (cff_parse_integer), src/cid/cidparse.c
	(cid_parser_new), src/pfr/pfrload.c (pfr_phy_font_load),
	src/raster/ftraster.c (Decompose_Curve), src/sfnt/sfdriver.c
	(sfnt_get_ps_name), src/sfnt/ttcmap.c (tt_cmap12_next,
	tt_cmap13_next), src/smooth/ftgrays.c (gray_hline): Remove dead
	code.

	* src/autofit/afmodule.c (af_property_get_face_globals,
	af_property_set, af_property_get), src/base/ftbitmap.c
	(ft_gray_for_premultiplied_srgb_bgra): Make functions static.

	* src/base/ftobjs.c (ft_remove_renderer): Protect against
	library == NULL.
	(ft_property_do): Make function static.

	* src/base/ftrfork.c: Include `ftbase.h'.

	* src/sfnt/ttsbit.c (tt_face_load_sbix_image)
	[!FT_CONFIG_OPTION_USE_PNG], src/type1/t1gload.c
	(T1_Compute_Max_Advance): Avoid compiler warning.

	* src/truetype/ttinterp.c (TT_New_Context): Reduce scope of
	variable.

2014-02-08  Werner Lemberg  <wl@gnu.org>

	Fix Windows build directories.

	The build target is now `windows' instead of `win32'.

	Problem reported by Nickolas George <darknova.clan@gmail.com>.

	* builds/modules.mk: Don't use `win32' and `win16' (!) but
	`windows'.

	* builds/windows/detect.mk, builds/windows/win32-def.mk:
	s/win32/windows/.

2014-02-08  Eugen Sawin  <esawin@mozilla.com>

	Fix Savannah bug #41507.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap)
	[!FT_CONFIG_OPTION_USE_PNG] <17, 17, 19>: Fix error handling.

2014-02-08  Dave Arnold  <darnold@adobe.com>

	[cff] Fix minor performance bug.

	* src/cff/cf2font.c (cf2_font_setup): Darkening amount and blue zone
	calculations are now cached and not recomputed on each glyph.

2014-02-05  Werner Lemberg  <wl@gnu.org>

	Fix problems with perl 5.8.8 as distributed with current MinGW.

	* src/tools/afblue.pl: Work-around for Perl bug #63402.
	(string_re): Avoid `possessive quantifiers', which have been
	introduced in Perl version 5.10.

2014-02-04  Werner Lemberg  <wl@gnu.org>

	Fix compilation with MinGW.

	Right now, compilation out of the box with latest MinGW is broken
	due to bugs in header files of mingwrt 4.0.3 in strict ANSI mode,
	cf.

	  https://sourceforge.net/p/mingw/bugs/2024/
	  https://sourceforge.net/p/mingw/bugs/2046/

	* builds/unix/configure.raw: Don't set `-ansi' flag for MinGW.

2014-02-04  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor fix.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths),
	src/autofit/aflatin.c (af_latin_metrics_init_widths): Fix handling
	of alternative standard characters.
	This also fixes a compilation warning in non-debug mode.

2014-02-03  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #41363.

	* src/cff/cf2ft.c (cf2_checkTransform): Convert assertion into
	parameter check.
	(cf2_decoder_parse_charstrings): Call `cf2_checkTransform' only if
	we are scaling the outline.
	(cf2_getPpemY): Remove problematic assertion.

2014-01-26  Werner Lemberg  <wl@gnu.org>

	[autofit] Introduce two more slots for standard characters.

	This is useful for OpenType features like `c2sc' (caps to small
	caps) that don't have lowercase letters by definition, or other
	features that mainly operate on numerals.

	* src/autofit/afscript.h: Add more standard characters.

	* src/autofit/aftypes.h: Update use of `SCRIPT' macro.
	(AF_ScriptClassRec): Add members to hold two more standard
	characters.
	(AF_DEFINE_SCRIPT_CLASS): Updated.

	* src/autofit/afglobal.c, src/autofit/afglobal.h,
	* src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/hbshim.c:
	Update use of `SCRIPT' macro.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths),
	src/autofit/aflatin.c (af_latin_metrics_init_widths): Scan two more
	standard characters.

2014-01-24  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #41320.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues)
	<AF_LATIN_IS_LONG_BLUE>: Avoid negative index of `last'.

2014-01-23  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #41310.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) <glyph_format==5>:
	Don't check metrics, which this format doesn't have.
	This is another correction to the commit from 2013-11-21.

2014-01-23  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #41309.

	* src/type1/t1load.c (t1_parse_font_matrix): Properly handle result
	of `T1_ToFixedArray'.

	* src/cid/cidload.c (cid_parse_font_matrix): Synchronize with
	`t1_parse_font_matrix'.

	* src/type42/t42parse.c (t42_parse_font_matrix): Synchronize with
	`t1_parse_font_matrix'.
	(t42_parse_encoding): Synchronize with `t1_parse_encoding'.

	* src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_BBOX>,
	<T1_FIELD_TYPE_MMOX>: Properly handle result of `ps_tofixedarray'.

2014-01-22  Werner Lemberg  <wl@gnu.org>

	* src/autofit/hbshim.c (af_get_coverage): Fix memory leaks.

2014-01-16  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve tracing of style coverages.

	* include/internal/fttrace.h: Add `afglobal' for tracing style
	coverages.

	* src/autofit/afglobal.c: Include FT_INTERNAL_DEBUG_H.
	(FT_COMPONENT): Define.
	(af_face_globals_compute_style_coverage): Trace `gstyles' array
	data.

2014-01-09  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #41158.

	* builds/unix/install.mk (install): Create man page directory.

2014-01-08  Chongyu Zhu  <lembacon@gmail.com>

	[arm] Fix Savannah bug #41138, part 2.

	* builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h
	(FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix
	preprocessor conditionals for `add.w'.

2014-01-08  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix Savannah bug #41138, part 1.

	* src/tools/afblue.pl <Handling #endif>: Produce correct auxiliary
	enumeration names for generated `#else'.

	* src/autofit/afblue.h: Regenerated.

2014-01-06  Werner Lemberg  <wl@gnu.org>

	Add manual page for `freetype-config'.
	Contributed by Nis Martensen <nis.martensen@web.de>.

	* docs/freetype-config.1: New file.

	* builds/unix/unix-def.in (mandir): Define.
	* builds/unix/install.mk (install, uninstall): Handle manpage.

2014-01-05  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor fixes for `afblue.pl'.

	* src/tools/afblue.pl (aux_name): Don't use `reverse'.
	<Handling #endif>: Use proper indentation for generated `#else'.

	* src/autofit/afblue.h: Regenerated.

2014-01-04  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix Indic scripts.

	Split the single, incorrect Indic entry into separate scripts so
	that the covered ranges are the same: Bengali, Devanagari, Gujarati,
	Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese,
	Syloti Nagri, Tamil, Telugu, and Tibetan.  At the same time, remove
	entries for Meetai Mayak and Sharada – the Unicode ranges were
	incorrect (and nobody has complained about that), fonts are scarce
	for those scripts, and the Indic auto-hinter support is rudimentary
	anyways.

	* src/autofit/afscript.h: Updated, using AF_CONFIG_OPTION_INDIC and
	AF_CONFIG_OPTION_CJK.

	* src/autofit/afstyles.h (STYLE_DEFAULT_INDIC): New auxiliary macro.
	Use it, together with AF_CONFIG_OPTION_INDIC and
	AF_CONFIG_OPTION_CJK, to update.

	* src/autofit/afranges.c [AF_CONFIG_OPTION_INDIC]: Updated.
	[!AF_CONFIG_OPTION_INDIC, !AF_CONFIG_OPTION_CJK]: Removed.
	Sort entries by tags.

2014-01-03  Werner Lemberg  <wl@gnu.org>

	[autofit] Thinko.

	* src/autofit/hbshim.c (af_get_char_index): Similar to
	`af_get_coverage', reject glyphs which are not substituted.

2014-01-03  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix handling of default coverages.

	With this commit, the implementation of coverage handling is
	completed.

	* src/autofit/hbshim.c (af_get_coverage): Exit early if nothing to
	do.
	Reject coverages which don't contain appropriate glyphs for blue
	zones.

2014-01-03  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix handling of default coverages.

	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
	First handle non-default coverages, then the default coverage of the
	default script, and finally the other default coverages.

2014-01-03  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix scaling of HarfBuzz shaping.

	* src/autofit/hbshim.c (af_get_char_index): Scale to units per EM.

2014-01-03  Werner Lemberg  <wl@gnu.org>

	[autofit] Better ftgrid support.

	* src/autofit/afhints.c (af_glyph_hints_get_segment_offset): Add
	parameters `is_blue' and `blue_offset'.

2014-01-01  Werner Lemberg  <wl@gnu.org>

	[autofit] Remove some styles.

	* src/autofit/afcover.h: Remove coverages for alternative fractions,
	denominators, numerators, and fractions.

	* src/autofit/afstyles.h (META_STYLE_LATIN): Updated.

2014-01-01  Werner Lemberg  <wl@gnu.org>

	[autofit] Add more styles.

	* src/autofit/afstyles.h (STYLE_LATIN, META_STYLE_LATIN): New
	auxiliary macros; use them to define styles for Cyrillic, Greek, and
	Latin.

	* src/autofit/afcover.h: Remove coverage for oldstyle figures.
	Since those digits are used in combination with ordinary letters, it
	makes no sense to handle them separately.

	* src/autofit/afglobal.c (af_face_globals_get_metrics): Don't limit
	`options' parameter to 4 bits.

2014-01-01  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix style assignments to glyphs.

	* src/autofit/hbshim.c (af_get_coverage)
	[FT_CONFIG_OPTION_USE_HARFBUZZ]: Scan GPOS coverage of features also
	so that we can skip glyphs that have both GSUB and GPOS data.

2014-01-01  Werner Lemberg  <wl@gnu.org>

	* src/autofit/hbshim.c: s/{lookups,glyphs}/gsub_{lookups,glyphs}/.

2014-01-01  Werner Lemberg  <wl@gnu.org>

	[autofit] Implement and use `af_get_char_index' with HarfBuzz.

	* src/autofit/hbshim.c (COVERAGE) [FT_CONFIG_OPTION_USE_HARFBUZZ]:
	Redefine to construct HarfBuzz features.
	(af_get_char_index) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Rewritten.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Use
	`y_offset' to adjust `best_y'.

2013-12-31  Werner Lemberg  <wl@gnu.org>

	[autofit] s/AF_STYLE_...._DEFAULT/AF_STYLE_...._DFLT/i.

2013-12-31  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix interface of `af_get_char_index'.

	* src/autofit/hbshim.c (af_get_char_index): Return error value.
	Add argument for y offset (to be used in a yet-to-come patch).

	* src/autofit/hbshim.h, src/autofit/afcjk.c,
	src/autofit/aflatin.c: Updated.

2013-12-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Don't combine multiple features into one set.

	Combining them, as originally envisioned, would lead to much more
	complicated code, as investigations have shown meanwhile.  The major
	drawback is that we run out of available style slots much earlier.
	However, this is only a theoretical issue since we don't support a
	large number of scripts currently.

	* src/autofit/afcover.h: Replace `COVERAGE_{1,2,3}' macros with
	a single-element `COVERAGE' macro, sort the elements by the feature
	tags, and add entry for `ruby'.

	* src/autofit/aftypes.h: Updated.
	* src/autofit/hbshim.c: Updated.

2013-12-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Code shuffling to reduce use of cpp macros.

	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
	Call `af_get_coverage' unconditionally.

	* src/autofit/autofit.c: Include `hbshim.c' unconditionally.

	* src/autofit/hbshim.c (af_get_coverage)
	[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Provide dummy function.

	* src/autofit/hbshim.h: Provide function declarations
	unconditionally.

2013-12-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Add wrapper function for `FT_Get_Char_Index'.

	Yet-to-come changes will provide HarfBuzz functionality for the new
	function.

	* src/autofit/hbshim.c (af_get_char_index): New function.
	* src/autofit/hbshim.h: Updated.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
	af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths,
	af_latin_metrics_init_blues, af_latin_metrics_check_digits):
	Updated.

2013-12-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Use `global' HarfBuzz font object.

	We now use `hb_font' instead of `hb_face' since yet-to-come changes
	need this.

	* src/autofit/afglobal.h: Include `hbshim.h'.
	(AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member
	`hb_font'.

	* src/autofit/afglobal.c (af_face_globals_new)
	[FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'.
	(af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy
	`hb_font'.

	* src/autofit/hbshim.h: Include HarfBuzz headers.

	* src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz
	headers.
	(af_get_coverage): Updated.

2013-12-27  Werner Lemberg  <wl@gnu.org>

	[autofit] Handle `DFLT' OpenType script for coverages.

	* include/ftautoh.h: Document new `default-script' property.

	* src/autofit/hbshim.c (af_get_coverage): Use `AF_FaceGlobals' for
	type of first parameter.
	(script_tags): Add one more element.
	(af_get_coverage): Adjust `script_tags' to handle `DFLT' script tag.

	* src/autofit/hbshim.h: Updated.

	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
	Updated.

	* src/autofit/afglobal.h (AF_SCRIPT_DEFAULT): New macro.

	* src/autofit/afmodule.h (AF_ModuleRec): New `default_script'
	member.

	* src/autofit/afmodule.c (af_property_set, af_property_get): Handle
	`default-script' property.
	(af_autofitter_init): Updated.

2013-12-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[ftrfork] Fix the face order difference between POSIX and Carbon.

	The fragmented resources in Suitcase and .dfont should be reordered
	when `POST' resource for Type1 is being restored, but reordering of
	sfnt resources induces the different face order.  Now the ordering
	is restricted to `POST' resource only, to prevent the different
	order issue (e.g. the face index in the fontconfig cache generated
	with Carbon framework is incompatible with that by FreeType 2
	without Carbon framework.)  Found by Khaled Hosny and Hin-Tak Leung.

	http://lists.gnu.org/archive/html/freetype-devel/2013-02/msg00035.html
	http://lists.gnu.org/archive/html/freetype-devel/2013-12/msg00027.html

	* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Add a switch
	`sort_by_res_id' to control the fragmented resource ordering.
	* include/internal/ftrfork.h: Declare new switch.
	* src/base/ftobjs.c (IsMacResource): Enable the sorting for `POST'
	resource, and disable the sorting for `sfnt' resource.

2013-12-25  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #40997.

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Only use OR operator to
	adjust face flags since FT_FACE_FLAG_EXTERNAL_STREAM might already
	be set.
	* src/cff/cffobjs.c (cff_face_init): Ditto.
	* src/cid/cidobjs.c (cid_face_init): Ditto.
	* src/pcf/pcfread.c (pcf_load_font): Ditto.
	* src/pfr/pfrobjs.c (pfr_face_init): Ditto.
	* src/type1/t1objs.c (T1_Face_Init): Ditto.
	* src/type42/t42objs.c (T42_Face_Init): Ditto.
	* src/winfonts/winfnt.c (FNT_Face_Init): Ditto.

2013-12-21  Werner Lemberg  <wl@gnu.org>

	[autofit] Introduce `coverages'.

	Coverages are the interface to the HarfBuzz library to acces
	OpenType features for handling glyphs not addressable by the cmap.

	Right now, compilation of HarfBuzz is only added to the development
	build.  A solution for standard build mode will be delayed until
	HarfBuzz gets split into two libraries to avoid mutual dependencies
	between FreeType and HarfBuzz.

	Note that this is only a first step in handling coverages, basically
	providing the framework only.  Code for handling selected OpenType
	features (this is, actually using the data in `afcover.h') will
	follow.

	* devel/ftoption.h, include/config/ftoption.h
	(FT_CONFIG_OPTION_USE_HARFBUZZ): New macro.

	* src/autofit/hbshim.c, src/autofit/hbshim.h, src/autofit/afcover.h:
	New files.

	* src/autofit/afscript.h: Add HarfBuzz script name tags.

	* src/autofit/afstyles.h: Add default coverage enumeration values.

	* src/autofit/aftypes.h: Update use of `SCRIPT' and `STYLE' macros.
	(AF_Coverage): New enumeration (generated by `afcover.h').
	(AF_StyleClassRec): New member `coverage'.
	(AF_DEFINE_STYLE_CLASS): Updated.

	* include/internal/fttrace.h: Add `afharfbuzz' for tracing coverage
	data.

	* src/autofit/afglobal.h: Update use of `SCRIPT' and `STYLE' macros.
	(AF_SCRIPT_FALLBACK): Renamed to ...
	(AF_STYLE_FALLBACK): ... this.

	* src/autofit/afglobal.c: Include `hbshim.c'.
	Update use of `SCRIPT' and `STYLE' macros.
	(af_face_globals_compute_style_coverage)
	[FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_get_coverage'.
	Update.

	* src/autofit/afmodule.h (AF_ModuleRec):
	s/fallback_script/fallback_style/.

	* src/autofit/afmodule.c (af_property_set): Adapt handling of
	`fallback-script' property to set a fallback style.
	(af_property_get, af_autofitter_init): Updated.

	* src/autofit/afpic.c: Update use of `SCRIPT' and `STYLE' macros.

	* src/autofit/afranges.h: Update use of `SCRIPT' macro.

	* src/autofit/autofit.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include
	`hbshim.c'.

	* src/autofit/rules.mk (AUTOF_DRV_SRC): Add `hbshim.c'.
	(AUTOF_DRV_H): Add `afcover.h'.

	* builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Use pkg-config for
	all libraries needed by FreeType.

2013-12-21  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #40975 (sort of).

	* src/truetype/ttinterp.c (Ins_IP): Fix sign typo to make FreeType
	behave the same as the Windows TrueType engine for the invalid case.

2013-12-21  Werner Lemberg  <wl@gnu.org>

	[autofit] Make PIC mode work actually.

	* src/autofit/afpic.h (AFModulePIC): Fix array sizes to fit the
	enumeration values automatically generated by including `afscript.h'
	and friends.

	* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.

2013-12-21  Werner Lemberg  <wl@gnu.org>

	Fix PIC linking.

	* include/internal/ftrfork.h (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Fix
	generated function name.

	* src/base/basepic.c (FT_Init_Table_raccess_guess_table): Rename
	to ...
	(FT_Init_Table_ft_raccess_guess_table): ... this so that the
	function name correctly corresponds to what the macro framework
	expects.

	* src/psnames/rules.mk (PSNAMES_DRV_SRC_S): Use correct file name so
	that PIC functions are compiled also.

2013-12-21  Werner Lemberg  <wl@gnu.org>

	[base] Add missing dependencies to Makefile.

	* src/base/rules.mk (BASE_SRC): Add `basepic.c' and `ftpic.c'.
	(BASE_H): Add `basepic.h'.

2013-12-20  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix PIC compilation.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths),
	src/autofit/aflatin.c (af_latin_metrics_init_widths)
	[FT_CONFIG_OPTION_PIC]: Declare `globals'.

	* src/autofit/afglobal.c: Always call AF_DEFINE_SCRIPT_CLASS, and
	AF_DEFINE_STYLE_CLASS.

	* src/autofit/afpic.c: Include `afglobal.h'.
	(autofit_module_class_pic_init): Typo.

	* src/autofit/aftypes.h (AF_DEFINE_SCRIPT_CLASS,
	AF_DEFINE_STYLE_CLASS): Don't use the same identifier for macro
	parameter and structure member.

2013-12-20  Werner Lemberg  <wl@gnu.org>

	[autofit] Introduce `styles'.

	This is the new top-level structure for handling glyph input data;
	scripts are now defined separately.

	* src/autofit/aftypes.h (SCRIPT): Updated.
	(AF_ScriptClassRec): Move `blue_stringset' and `writing_system'
	members to ...
	(AF_Style_ClassRec): ... this new structure.
	(AF_Style): New enumeration.
	(AF_StyleMetricsRec): Replace `script' enumeration with
	`style_class' pointer.
	(AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated.
	(AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros.

	* src/autofit/afstyles.h: New file, using data from `afscript.h'.
	* src/autofit/afscript.h: Updated.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
	af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated.

	* src/autofit/afglobal.c (SCRIPT): Updated.
	(STYLE): Redefine macro to load `afstyles.h'.
	(af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with...
	(af_style_names): ... this array.
	(af_face_globals_compute_script_coverage): Renamed to...
	(af_face_globals_compute_style_coverage): ... this.
	Updated.
	(af_face_globals_new, af_face_globals_free,
	af_face_globals_get_metrics): Updated.

	* src/autofit/afglobal.h (SCRIPT): Updated.
	(STYLE): Redefine macro to load `afstyles.h'.
	(AF_SCRIPT_FALLBACK): Update definition.  This will get more
	refinements with later on.
	(AF_SCRIPT_UNASSIGNED): Replace with...
	(AF_STYLE_UNASSIGNED): ... this macro.
	(AF_FaceGlobalsRec): Updated.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths,
	af_latin_metrics_init_blues, af_latin_metrics_scale_dim,
	af_latin_hint_edges): Updated.

	* src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated.
	(af_ltn2_uniranges): Removed.

	* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
	Updated.

	* src/autofit/afpic.c (autofit_module_class_pic_init): Updated.
	* src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro.
	(AFModulePIC): Add `af_style_classes' and `af_style_classes_rec'
	members.

	* src/autofit/afranges.h: Updated.

	* src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'.

2013-12-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Factor scripts and uniranges out of writing system files.

	* src/autofit/afranges.c, src/autofit/afranges.h: New files.

	* src/autofit/afscript.h: Extend `SCRIPT' macro with more
	parameters, taking data from the writing system files.

	* src/autofit/aftypes.h: Updated.

	* src/autofit/afglobal.c: Include `afranges.h'.
	Load `afscript.h' to call AF_DEFINE_SCRIPT_CLASS.
	* src/autofit/afglobal.c: Include `afranges.h'.
	Load `afscript.h' to call AF_DECLARE_SCRIPT_CLASS.

	* src/autofit/afcjk.c, src/autofit/afcjk.h: Updated.
	* src/autofit/afdummy.c, src/autofit/afdummy.h: Updated.
	* src/autofit/afindic.c, src/autofit/afindic.h: Updated.
	* src/autofit/aflatin.c, src/autofit/aflatin.h: Updated.
	* src/autofit/aflatn2.c, src/autofit/aflatn2.h: Updated.

	* src/autofit/afpic.c: Updated.

	* src/autofir/autofit.c: Include `afranges.c'.
	* src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'.

2013-12-18  Werner Lemberg  <wl@gnu.org>

	[autofit] More code orthogonality.

	* src/autofit/aftypes.h (AF_StyleMetrics): Replace `script_class'
	pointer to an `AF_ScriptClass' structure with `script' index of type
	`AF_Script'.
	Move some code around.

	* src/autofit/afcjk.c: Include `afpic.h'.
	(af_cjk_metrics_init_widths, af_cjk_metrics_init_blues,
	af_cjk_hint_edges): Updated.

	* src/autofit/aflatin.c: Include `afpic.h'.
	(af_latin_metrics_init_widths, af_latin_metrics_init_blues,
	af_latin_metrics_scale_dim, af_latin_hint_edges): Updated.

	* src/autofit/afglobal.c (af_face_globals_get_metrics): Updated.

	* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
	Updated.

2013-12-18  Werner Lemberg  <wl@gnu.org>

	[autofit] s/ScriptMetrics/StyleMetrics/.

2013-12-18  Werner Lemberg  <wl@gnu.org>

	[autofit] s/script_{metrics,hints}/style_{metrics,hints}/

2013-12-18  Werner Lemberg  <wl@gnu.org>

	[autofit] s/gscripts/gstyles/.

2013-12-18  Werner Lemberg  <wl@gnu.org>

	[autofit] s/glyph_scripts/glyph_styles/.

	This is the first commit of a series to create a new top-level
	structure (a `style') for handling scripts, writing_systems, and
	soon-to-be-added coverages.

2013-12-17  Werner Lemberg  <wl@gnu.org>

	[autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate.

2013-12-11  Infinality  <infinality@infinality.net>

	[truetype] Simplify logic of rendering modes.

	This patch unifies the subpixel and non-subpixel cases.

	* src/truetype/ttinterp.h (TT_ExecContextRec): Remove
	`grayscale_hinting'; all code should refer to `grayscale' instead.
	Remove unused `native_hinting' member.
	Rename `subpixel_hinting' member to `subpixel.

	* src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated.
	(tt_loader_init): Updated.

	* src/truetype/ttinterp.c (Ins_GETINFO): Simplify.
	Updated.

2013-12-11  Werner Lemberg  <wl@gnu.org>

	[documentation] Add section how to include FreeType header files.
	Problem reported by David Kastrup <dak@gnu.org>.

	Surprisingly, a description how to do that was completely missing in
	the API reference.

	* include/freetype.h, include/ftchapters.h: New documentation
	section `header_inclusion'.

2013-12-10  Werner Lemberg  <wl@gnu.org>

	[autofit] s/DFLT/NONE/, s/dflt/none/.

2013-12-10  Werner Lemberg  <wl@gnu.org>

	[autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/.

2013-12-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix scaling of vertical phantom points.

	* src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and
	pp4.x also.

2013-12-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix positioning of composite glyphs.
	Problem reported by Nigel Tao <nigeltao@golang.org>.

	* src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts
	the glyph (component) by a fractional value computed from the LSB
	phantom point.  This is wrong, since the horizontal phantom points
	get rounded horizontally later on.

2013-12-08  Werner Lemberg  <wl@gnu.org>

	* Version 2.5.2 released.
	=========================


	Tag sources with `VER-2-5-2'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.5.2.

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.5.1/2.5.2/, s/251/252/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.

	* builds/unix/configure.raw (version_info): Set to 17:1:11.
	* CMakeLists.txt (VERSION_PATCH): Set to 2.
	* docs/CHANGES: Updated.

2013-12-07  Werner Lemberg  <wl@gnu.org>

	[truetype] Next round in phantom point handling.

	Greg Hitchcock provided very interesting insights into the
	complicated history of the horizontal positions of the TSB and BSB
	phantom points.

	* src/truetype/ttgload.c (TT_LOADER_SET_PP)
	[TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Use `subpixel_hinting' and
	`grayscale_hinting' flags as conditionals for the x position of TSB
	and BSB.

2013-12-05  Werner Lemberg  <wl@gnu.org>

	* builds/freetype.mk (FT_CC): Removed.  Unused.

2013-12-04  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix handling of embedded bitmap strikes.

	This corrects the commit from 2013-11-21.  Problem reported by
	Andrey Panov <panov@canopus.iacp.dvo.ru>.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to
	detect excessive bytes for bit-aligned bitmaps.

2013-12-03  Werner Lemberg  <wl@gnu.org>

	[truetype] Remove dead code.

	Reported by Nigel Tao <nigeltao@golang.org>.

	* include/internal/tttypes.h (TT_LoaderRec): Remove unused
	`preserve_pps' field.
	* src/truetype/ttgload.c (TT_Hint_Glyph): Updated.

2013-12-03  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix phantom point handling.

	This is a further improvement to the changes from 2013-11-06.

	* src/truetype/ttgload.c (TT_Hint_Glyph): Horizontal phantom points
	are rounded horizontally, vertical ones are rounded vertically.
	(TT_LOADER_SET_PP): The horizontal position of vertical phantom
	points in pre-ClearType mode is zero, as shown in the OpenType
	specification.

2013-12-02  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix change from 2013-11-20.

	Problem reported by Akira Kakuto <kakuto@fuk.kindai.ac.jp>.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Protect call to
	`Update_Max' with both a TT_USE_BYTECODE_INTERPRETER guard and a
	`IS_HINTED' clause.
	Also remove redundant check using `maxSizeOfInstructions' – in
	simple glyphs, the bytecode data comes before the outline data, and
	a validity test for this is already present.

2013-11-27  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix use of dumping functions in `ftgrid' demo program.

	* src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro.
	(af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
	af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to
	handle output to stdout.
	Use AF_DUMP.
	(af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
	af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.

2013-11-25  Werner Lemberg  <wl@gnu.org>

	* Version 2.5.1 released.
	=========================


	Tag sources with `VER-2-5-1'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.5.1.

	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2005/index.html,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2008/index.html,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/index.html,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualc/index.html,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj,
	builds/windows/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.5.0/2.5.1/, s/250/251/.

	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.

	* builds/unix/configure.raw (version_info): Set to 17:0:11.
	* CMakeLists.txt (VERSION_PATCH): Set to 1.
	* docs/CHANGES, docs/release: Updated.

2013-11-23  Werner Lemberg  <wl@gnu.org>

	[truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'.

	* src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS,
	TRICK_NAMES_COUNT): Updated.
	(trick_names): Add family name for the two fonts.

2013-11-23  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo.

2013-11-21  Werner Lemberg  <wl@gnu.org>

	[sfnt] Typo.

	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.

	* src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width'
	value if the font lacks an `OS/2' table.

2013-11-21  Werner Lemberg  <wl@gnu.org>

	[sfnt] Improve handling of buggy embedded bitmap strikes.

	We are now able to successfully load `AppleMyoungJo.ttf'.
	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph
	format.

2013-11-20  Werner Lemberg  <wl@gnu.org>

	[truetype] Don't trust `maxp's `maxSizeOfInstructions'.

	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>; see

	  http://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html

	for details.

	* src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep'
	tables also for setting `autohint'.

	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from
	`TT_Process_Composite_Glyph' for handling unreliable values of
	`maxSizeOfInstructions'.

2013-11-16  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix `OS/2' table version 5 support.

	We now follow the `official' announcement from Microsoft (on the
	OpenType mailing list, which unfortunately hasn't a public archive).

	* include/freetype/tttables.h (TT_OS2):
	s/usLowerPointSize/usLowerOpticalPointSize/,
	s/usUpperPointSize/usUpperOpticalPointSize/.

	* src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct
	default values.

2013-11-13  Werner Lemberg  <wl@gnu.org>

	* builds/unix/ft2unix.h: Remove.  No longer necessary.

	* builds/unix/install.mk (install): Updated.

2013-11-13  Werner Lemberg  <wl@gnu.org>

	Simplify header file hierarchy.

	This large patch changes the header file directory layout from
	`include/freetype/...' to `include/...', effectively removing one
	level.  Since the file `ft2build.h' is also located in `include'
	(and it stays there even after installation), all FreeType header
	files are now in a single directory.

	Applications that use (a) `freetype-config' or FreeType's
	`pkg-config' file to get the include directory for the compiler, and
	(b) the documented way for header inclusion like

	  #include <ft2build.h>
	  #include FT_FREETYPE_H
	  ...

	don't need any change to the source code.

	* include/freetype/*: Move up to...
	* include/*: ... this directory.

	* builds/amiga/include/freetype/*: Move up to...
	* builds/amiga/include/*: ... this directory.

	*/*: Essentially do `s@/freetype/@/@' where appropriate.

	* CMakeList.txt: Simplify.
	* builds/unix/freetype-config.in, builds/unix/freetype2.in: For
	`--cflags', return a single directory.
	* builds/unix/install.mk (install): No longer try to remove `cache'
	and `internal' subdirectories; instead, remove the `freetype'
	subdirectory.

2013-11-12  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix last `truetype' commit.

	* src/truetype/ttgload.c (tt_get_metrics): Preserve stream position.
	Return error value.
	(load_truetype_glyph): Updated.

2013-11-10  Werner Lemberg  <wl@gnu.org>

	* docs/CMAKE: New dummy file.

2013-11-08  Dave Arnold  <darnold@adobe.com>

	[cff] Fix for hints that touch.

	* src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for
	finding index value of insertion point.

2013-11-06  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix handling of phantom points in composite glyphs.
	Problem reported by Nigel Tao <nigeltao@golang.org>.

	This is a follow-up commit to the previous one.

	* src/truetype/ttgload.c (load_truetype_glyph): Call
	`tt_get_metrics' after loading the glyph header.

2013-11-06  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve emulation of vertical metrics.

	This commit also improves the start values of vertical phantom
	points.  Kudos to Greg Hitchcock for help.

	* src/truetype/ttgload.c (TT_Get_VMetrics): Add parameter to pass
	`yMax' value.  Replace code with fixed Microsoft definition.
	(tt_get_metrics): Updated.
	(TT_LOADER_SET_PP): Add explanation how to initialize phantom
	points, taken from both the OpenType specification and private
	communication with Greg (which will eventually be added to the
	standard).
	Fix horizontal position of `pp3' and `pp4'.

	* src/truetype/ttgload.h: Updated.

	* src/truetype/ttdriver.c (tt_get_advances): Updated.

	* docs/CHANGES: Updated.

2013-11-05  Werner Lemberg  <wl@gnu.org>

	* builds/windows/vc2010/freetype.vcxproj: s/v110/v100/.
	PlatformToolSet version 110 is for VC2012.

	Problem reported (with solution) by Dave Arnold <darnold@adobe.com>.

2013-11-05  Werner Lemberg  <wl@gnu.org>

	[truetype] Correctly reset point tags for glyph components.
	Problem reported by Nigel Tao <nigeltao@golang.org>.

	* src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop.

2013-11-02  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix GETINFO opcode handling of subpixel hinting bits.

	* src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to
	get info on subpixel hinting.

	* docs/CHANGES: Updated.

2013-11-02  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #40451.

	Simply apply the patch from the bug report.

	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
	include/freetype/config/ftconfig.h: The used #pragma directives only
	work with gcc versions 4.6 and higher.

2013-11-01  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2013-11-01  Werner Lemberg  <wl@gnu.org>

	[truetype] Minor code refactoring.

	Two benefits: The allocated FDEF (and IDEF) array gets slightly
	smaller, and the `ttdebug' demo program has access to function
	numbers without additional costs.

	Fortunately, no changes to FontForge are necessary – this is the
	only external TrueType debugger I know of, but others may exist and
	should check the code accordingly.

	* src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and
	`Cur_End' with a pointer to the corresponding `TT_DefRecord'
	structure.

	* src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF,
	Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns <Invalid_Opcode>):
	Updated.

2013-10-27  Werner Lemberg  <wl@gnu.org>

	[sfnt] Implement support for `OS/2' table version 5.

	See

	  http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism

	for the announcement.

	* include/freetype/tttables.h (TT_OS2): Add fields
	`usLowerPointSize' and `usUpperPointSize'.  Since FreeType returns
	this structure only as a pointer through `FT_Get_Sfnt_Table', there
	shouldn't be any ABI problems.

	* src/sfnt/ttload.c (tt_face_load_os2): Implement it.

	* docs/CHANGES: Updated.

2013-10-24  Werner Lemberg  <wl@gnu.org>

	* README.git, docs/CHANGES, docs/INSTALL: Updated.

2013-10-24  John Cary  <cary@txcorp.com>

	Provide cmake support.

	* CMakeLists.txt: New file.

2013-10-23  Kenneth Miller  <kennethadammiller@yahoo.com>
	    Werner Lemberg  <wl@gnu.org>

	Provide support for x64 builds in Visual C++ project files.

	* src/builds/win32: Renamed to...
	* src/builds/windows: This.

	* src/builds/windows/vc2010/*: Updated to handle x64 target.

	* src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where
	appropriate.

2013-10-22  Werner Lemberg  <wl@gnu.org>

	* src/base/md5.c, src/base/md5.h: Updated to recent version.

	* src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'.

	The canonical URL to get updates for this file is

	  http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/

	as the author told me in private communication.

2013-10-19  Werner Lemberg  <wl@gnu.org>

	[autofit] s/SMALL_TOP/X_HEIGHT/.

	* src/autofit/afblue.dat: Updated.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/aflatin.c, src/autofit/aflatin.h,
	src/autofit/atlatin2.c: Updated.

2013-10-19  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afblue.dat: s/MINOR/DESCENDER/.

	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

2013-10-16  Werner Lemberg  <wl@gnu.org>

	[autofit] Add description strings to script entries.

	Currently, this is unused.

	* src/autofit/afscript.h: Do it.
	* src/autofit/afglobal.c, src/autofit/afpic.c,
	src/autofit/aftypes.h: Updated.

2013-10-16  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve tracing message for extra light flag.

	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it.

2013-10-15  Chongyu Zhu  <lembacon@gmail.com>

	[arm] Fix thumb2 inline assembly under LLVM.

	When using `ADD' with an immediate operand, the instruction is
	actually `ADD Rd, Rn, #<imm12>', that is, the maximum of the
	immediate operand cannot exceed 4095.  It will fail to compile with
	LLVM.

	However, in GCC, due to some legacy compatibility considerations,
	`ADD.W' will be automatically emitted when the immediate operand is
	larger than 4095.

	* builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
	(FT_MulFix_arm) [__GNUC__]: Support clang compiler.

	* src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto.

2013-10-12  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve tracing of `latin' hinter.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
	zone types.
	(af_latin_metrics_scale_dim): Report scaling changes due to x height
	alignment.
	Report scaled stroke width and blue zone values.

2013-10-03  Dave Arnold  <darnold@adobe.com>

	* src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.

	Note that the old code avoided using a region of the piecewise
	linear function where the slope was zero.  The recovery was to use a
	different section of the function, which produced a different,
	incorrect amount of darkening.

2013-10-02  Darrell Bellert  <darrell.bellert@hl.konicaminolta.us>

	* src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'.

2013-10-02  Dave Arnold  <darnold@adobe.com>

	* src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount.

	This line was lost in commit 89ca1fd6 (from 2013-06-25).  The effect
	is to use a previous darkening amount when producing an unhinted,
	unscaled outline.  This can cause autohint samples in ftgrid and
	ftview to be based on darkened CFF outlines instead of unhinted,
	undarkened ones.

2013-09-29  Dave Arnold  <darnold@adobe.com>

	Fix Savannah bug #39295.

	The bug was caused by switching to the initial hintmap (the one in
	effect when `moveto' executes) just before drawing the final element
	in the charstring.  This ensured that the path was closed (in both
	Character Space and Device Space).  But if the final element was a
	curve and if the final hintmap was different enough from the initial
	one, then the curve was visibly distorted.

	The first part of the fix is to draw the final curve using the final
	hintmap as specified by the charstring.  This corrects the
	distortion but does not ensure closing in Device Space.  It may
	require the rasterizer to automatically generate an extra closing
	line.  Depending on the hintmap differences, this line could be from
	zero to a couple pixels in length.

	The second part of the fix covers the case where the charstring
	subpath is closed with an explicit line.  We now modify that line's
	end point to avoid the distortion.

	Some glyphs in the bug report font (TexGyreHeros-Regular) that show
	the change are:

	  25ppem    S (98)
	  24ppem    eight (52)
	  25.5ppem  p (85)

	Curves at the *end* of a subpath are no longer distorted.  However,
	some of these glyphs have bad hint substitutions in the middle of a
	subpath, and these are not affected.

	The patch has been tested with a set of 106 fonts that shipped with
	Adobe Creative Suite 4, together with 756 Open Source CFF fonts from
	Google Fonts.  There are 1.5 million glyphs, of which some 20k are
	changed with the fix.  A sampling of a few hundred of these changes
	have been examined more closely, and the changes look good (or at
	least acceptable).

	* src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing'
	to indicate that we synthesize a closepath line.

	* src/cff/cf2hints.c (cf2_glyphpath_init): Updated.
	(cf2_glyphpath_pushPrevElem): If closing, use first hint map (for
	`lineto' operator) and adjust hint zone.
	For synthesized closing lines, use end point in first hint zone.
	(cf2_glyphpath_lineTo): Take care of synthesized closing lines.  In
	particular, shift the detection of zero-length lines from character
	space to device space.
	(cf2_glyphpath_closeOpenPath): Remove assertion.
	Updated.

2013-09-25  Werner Lemberg  <wl@gnu.org>

	* src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays.

2013-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[bdf, pcf] Refuse non-zero face_index.

	Suggested by Akira Tagoh, see

	  http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html

	* src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument'
	error if the font could be opened but non-zero `face_index' is
	given.
	* src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto.

	* src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED
	macro for `face_index' because it is validated later.

2013-09-23  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #40090.

	* src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit
	306f8c5d (from 2013-08-25) affecting this function.

2013-09-22  Werner Lemberg  <wl@gnu.org>

	[autofit] Disunify Cyrillic and Greek handling from Latin.

	* src/autofit/afscript.h: Add Cyrillic and Greek.

	* src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK,
	AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic.
	(AF_BLUE_STRINGSET_LATN): Fix typo.
	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New
	arrays.
	(af_grek_script_class, af_cyrl_script_class): New scripts.
	* src/autofit/aflatin.h: Updated.

2013-09-20  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2013-09-20  Behdad Esfahbod  <behdad@behdad.org>

	Fix vertical size of emboldened glyphs.

	Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709

	* src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY'
	also.

2013-09-11  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation
	algorithm description.

2013-09-11  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve Hebrew rendering.

	This change introduces a new blue zone property
	`AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short
	top segments.

	* src/autofit/afblue.dat: Fix Hebrew blue strings.
	Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP.

	* src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro.

	* src/autofit/afblue.c, src/autofit/afblue.h: Updated.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle
	`AF_LATIN_IS_LONG_BLUE'.

	* src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro.

2013-08-28  Behdad Esfahbod  <behdad@google.com>

	[sfnt] Fix frame access while reading WOFF table directory.

	* src/sfnt/sfobjs.c (woff_open_font): Using single memory frame
	while reading the directory entries for the whole loop.

2013-08-29  Werner Lemberg  <wl@gnu.org>
            Behdad Esfahbod  <behdad@google.com>

	Implement support for WOFF containers.

	We simply synthesize a SFNT from the WOFF, create a memory stream
	for the new data, and load the SFNT as usual.

	Does NOT add any API to access WOFF metadata or private blocks.

	* include/freetype/internal/tttypes.h (WOFF_HeaderRec,
	WOFF_TableRec): New structures.

	* include/freetype/tttags.h (TTAG_wOFF): New macro.

	* src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling
	`open_face'.

	* src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include
	`FT_GZIP_H'.
	(WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for
	writing to a stream.
	(sfnt_stream_close, compare_offsets, woff_open_font): New functions.
	(sfnt_open_font): Handle `TTAG_wOFF'.
	(sfnt_init_face): Set `stream' after calling `sfnt_open_font'.

	* src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling
	`sfnt->init_face'.

	* src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an
	argument so that a changed stream survives.
	Update callers.

2013-08-28  Werner Lemberg  <wl@gnu.org>

	[gzip] New function `FT_Gzip_Uncompress'.

	This is modeled after zlib's `uncompress' function.  We need this
	for WOFF support.

	* include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress):
	New function.

	* src/gzip/rules.mk: Rewrite to better reflect dependencies.

2013-08-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix `make multi' compilation.

	* src/autofit/afblue.cin, src/autofit/afblue.c: Don't include
	`afblue.h' but `aftypes.h'.
	* src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'.

2013-08-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix C++ compilation.

	* src/autofit/afglobal.c (af_face_globals_get_metrics),
	src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c
	(af_deva_script_class): Use proper casts.

2013-08-27  Behdad Esfahbod  <behdad@google.com>

	* src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos.

2013-08-27  Behdad Esfahbod  <behdad@google.com>

	FT_Open_Face: Improve external stream handling.

	If the font's `clazz->init_face' function wants to swap to new
	stream, handling of whether original stream was external could
	result to either memory leak or double free.  Mark externality into
	face flags before calling `init_face' such that the clazz can handle
	external streams properly.

	* src/base/ftobjs.c (FT_Open_Face): Move code to set
	FT_FACE_FLAG_EXTERNAL_STREAM to...
	(open_face): This function.

2013-08-27  Werner Lemberg  <wl@gnu.org>

	Remove `FT_SqrtFixed' function.

	It's no longer used.

	* include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it.

2013-08-27  Werner Lemberg  <wl@gnu.org>

	[autofit] While tracing, report script names instead of ID values.

	* src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]:
	New array.
	* src/autofit/afglobal.h: Updated.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
	af_cjk_hint_edges): Use `af_script_names'.
	* src/autofit/aflatin.c (af_latin_metrics_init_widths,
	af_latin_hint_edges): Ditto.

2013-08-26  Werner Lemberg  <wl@gnu.org>

	[autofit] Report used script while hinting a glyph.

	* src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c
	(af_latin_hint_edges): Implement it.

2013-08-26  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Hebrew script.

	* src/autofit/afblue.dat: Add blue strings for Hebrew.
	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

	* src/autofit/aflatin.c (af_hebr_uniranges): New array.
	(af_hebr_script_class): New script.
	* src/autofit/aflatin.h, src/autofit/afscript.h: Updated.

2013-08-26  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve tracing messages.

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script
	ID in tracing message.
	(af_cjk_metrics_init_blues): Initialize `axis' outside of the inner
	loop.
	Improve tracing messages.
	(af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable
	`num_actions' to count hinting actions.
	Improve tracing messages.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention
	script ID in tracing message.
	(af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing
	messages.

2013-08-26  Werner Lemberg  <wl@gnu.org>

	Better tracing of loaded glyphs.

	Previously, the loading of a glyph was traced at level 4, if at all.
	With this change, all font loading routines emit a tracing message
	at level 1, making it easier to select tracing output (for example
	using F2_DEBUG="any:1 afhints:7 aflatin:7").

	* src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message.
	* src/cff/cffdrivr.c (cff_glyph_load): Ditto.
	* src/cff/cffgload.c (cff_decoder_prepare): Improve tracing
	messages.
	* src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing
	message.
	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
	* src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message.
	* src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
	* src/type1/t1gload.c (T1_Load_Glyph): Ditto.
	* src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
	* src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.

2013-08-26  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix script selection.

	* src/autofit/afglobal.c (af_face_globals_get_metrics): Use
	`AF_SCRIPT_DFLT', not value 0.
	Simplify code.

	* src/autofit/afscript.h: Sort by script name.

2013-08-26  Werner Lemberg  <wl@gnu.org>

	[autofit] Make `dummy' hinter work as expected.

	* src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling
	information.
	(af_dummy_hints_apply): Scale the glyphs.

2013-08-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Make `cjk' module use blue stringsets.

	* src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed.
	(af_cjk_hani_blue_chars): Removed.
	(AF_CJK_BLUE_TYPE_*): Removed.
	(af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with
	AF_BLUE_STRING_MAX_LEN.
	Change loops to use offsets (in file `afblue.h') into the new arrays
	`af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
	Instead of three dimensions (as used in the old blue string array)
	we now use properties to do the same, saving one loop nesting level.

	* src/autofit/afcjk.h: Remove old enumeration values superseded by
	the new data in `afblue.h'.
	(AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE,
	AF_CJK_IS_RIGHT_BLUE): New macros, to be used in
	`af_cjk_metrics_init_blues'.
	(AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value.
	(AF_CJK_BLUE_IS_TOP): Renamed to...
	(AF_CJK_BLUE_TOP): This.
	(AF_CJK_MAX_BLUES): Remove.
	(AF_CJKAxisRec): Updated.

2013-08-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Typo.

	* src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use
	cast.

2013-08-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Synchronize `cjk' with `latin' module (and vice versa).

	* src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing
	messages.
	(af_cjk_metrics_init_blues): Don't pass blue string array as
	argument but use the global array directly.
	Use `outline' directly.
	Update and add tracing messages.
	(af_cjk_metrics_init): Simplify code.
	(af_cjk_metrics_scale_dim): Improve tracing message.
	(af_cjk_metrics_scale): Synchronize.

	* src/autofit/aflatin.c (af_latin_metrics_init_widths,
	af_latin_metrics_init_blues): Improve and add tracing messages.

2013-08-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Make `latin' module use blue stringsets.

	* src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed.
	(af_latin_blue_chars): Removed.
	(af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS
	with AF_BLUE_STRING_MAX_LEN.
	Change loops to use offsets (in file `afblue.h') into the new arrays
	`af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
	Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro.

	* src/autofit/aflatin.h: Remove old enumeration values superseded by
	the new data in `afblue.h'.
	(AF_LATIN_IS_TOP_BLUE): Updated definition.
	(AF_LATIN_IS_SMALL_TOP_BLUE): New macro.
	(AF_LATIN_MAX_BLUES): Remove.
	(AF_LatinAxisRec): Updated.

2013-08-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Add blue stringsets.

	* src/autofit/aftypes.h: Include `afblue.h'.
	(AF_ScriptClassRec): Add `blue_stringset' field.
	(AF_DEFINE_SCRIPT_CLASS): Updated.

	* src/autofit/autofit.c: Include `afblue.c'.

	* src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c
	(af_dflt_script_class), src/autofit/afindic.c
	(af_deva_script_class), src/autofit/aflatin.c
	(af_latn_script_class), src/autofit/aflatin2.c
	(af_ltn2_script_class): Updated.

	* src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'.

2013-08-25  Werner Lemberg  <wl@gnu.org>

	[autofit] Introduce data file for blue strings.

	The idea is to have a central file which gets processed by a Perl
	script to create proper `.c' and `.h' files using templates.  There
	are two other reasons to do that:

	  . The data file should be easily readable.  We use UTF-8 encoding
	    which then gets converted to single bytes.

	  . Since the number of supported scripts will increase soon, the
	    current usage of blue string arrays is a waste of space.  Using
	    the Perl script it is possible to imitate jagged arrays,
	    defining enumeration constants as offsets into the arrays.

	This commit only adds files without changing any functionality.

	* src/autofit/afblue.dat: New data file.
	* src/tools/afblue.pl: New Perl script for processing `afblue.dat'.

	* src/autofit/afblue.cin, src/autofit/afblue.hin: New template files
	for...
	* src/autofit/afblue.c, src/autofit/afblue.c: New source files.
	To avoid a dependency on Perl, we add them too.

2013-08-19  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Enable new algorithm for `BBox_Cubic_Check'.

	* src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove
	the old one.
	Improve comments.

2013-08-18  Werner Lemberg  <wl@gnu.org>

	* builds/unix/unix-def.in (freetype2.pc): Don't set executable bit.

2013-08-18  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #39804.

	* builds/unix/configure.raw (LIBPNG): Define and export.
	* builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle
	libpng.

2013-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Clean up BBox_Conic_Check.

	* src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for
	extremum at the segment ends, which are already within the bbox.
	Slightly modify calculations.

2013-08-15  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Finish experimental (disabled) BBox_Cubic_Check implementation.

	* src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve
	accuracy and avoid overflows.

2013-08-13  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Refactor experimental (disabled) BBox_Cubic_Check.

	* src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search
	as the mirror image of the maximum search implemented here...
	(update_max): New function.

2013-08-06  John Tytgat  <John.Tytgat@esko.com>

	Fix Savannah bug #39702.

	* src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset
	!= 0'; this stronger test is mandated by the CFF specification.
	Fix test for INDEX structures which have one or more empty entries
	at the end.

2013-08-05  Werner Lemberg  <wl@gnu.org>

	Fix gcc pragmas, part 2.

	* src/truetype/ttinterp.c (TT_MulFix14_long_long,
	TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been
	introduced with gcc version 4.6.

2013-08-05  Werner Lemberg  <wl@gnu.org>

	Fix gcc pragmas.

	* src/truetype/ttinterp.c (TT_MulFix14_long_long,
	TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
	pragmas within a function body.

2013-08-05  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #39700.

	* builds/unix/ftconfig.h: Synchronize with
	`include/freetype/config/ftconfig.h'.

	* builds/vms/ftconfig.h: Ditto.
	Make the differences to the master `ftconfig.h' file as small as
	possible for easier maintainance.

2013-08-05  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve handling of `near' points.

	Points which are very near to each other are now marked as such.
	The `weak' flag is then computed by using the `in' vector of the
	first and the `out' vector of the last point of a group of near
	points.

	For example, this fixes the rendering of glyph `Oslash' in
	`Roboto-Thin.ttf'.

	* src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'.

	* src/autofit/afhints.c (af_glyph_hints_reload): Introduce
	the heuristic value `near_limit' to decide whether the current point
	is near to the previous one, then set `AF_FLAG_NEAR' accordingly.
	Store good `in' vector (of last non-near point) in
	`last_good_in_{x,y}' and use it as an argument to
	`ft_corner_is_flat' if necessary.

2013-08-02  Werner Lemberg  <wl@gnu.org>

	* include/freetype/ftcffdrv.h: Improve documentation.
	This is based on blog entries from David Lemon and Dave Arnold (both
	from Adobe) with kind permission.  Dave also helped in
	proof-reading.

2013-08-02  Werner Lemberg  <wl@gnu.org>

	[autofit] Move declaration of scripts into separate file.

	This has the benefit that we don't need to duplicate the data at
	different places.

	* src/autofit/afscript.h: New file.

	* src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
	the enumeration values.

	* src/autofit/afglobal.c: Include `afscript.h' to get the script
	specific header files.
	(af_script_classes): Include `afscript.h' to fill this array.

	* src/autofit/afpic.c: Include `afscript.h' to get the script
	specific header files.
	(autofit_module_class_pic_init): Include `afscript.h' for
	initialization.
	* src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
	AF_SCRIPT_CLASSES_REC_COUNT): Removed.  Use `AF_SCRIPT_MAX' instead.

	* src/autofit/rules.mk (AUTOF_DRV_H): Updated.

2013-08-02  Werner Lemberg  <wl@gnu.org>

	[autofit] Move declaration of writing systems into separate file.

	This has the benefit that we don't need to duplicate the data at
	different places.

	* src/autofit/afwrtsys.h: New file.

	* src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to
	define the enumeration values.

	* src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing
	system specific header files.
	Include `afpic.h'.
	(af_writing_system_classes): Include `afwrtsys.h' to fill this
	array.

	* src/autofit/afpic.c: Include `afwrtsys.h' to get the writing
	system specific header files.
	(autofit_module_class_pic_init): Include `afwrtsys.h' for
	initialization.
	* src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT,
	AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed.  Use
	`AF_WRITING_SYSTEM_MAX' instead.

2013-08-02  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix compilation with g++.

	* src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use
	cast.
	(Load_SBit_Png): Pacify compiler.

2013-08-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
            Werner Lemberg  <wl@gnu.org>

	[autofit] Fix `make multi'.

	* include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY,
	FT_LOCAL_ARRAY_DEF): New macros.

	* src/autofit/afglobal.c (af_writing_system_classes,
	af_script_classes): Use FT_LOCAL_ARRAY_DEF.
	* src/autofit/afglobal.h: Declare `af_writing_system_classes' and
	`af_script_classes'.
	* src/autofit/afloader.c: Include `afpic.h'.

2013-08-01  Werner Lemberg  <wl@gnu.org>

	Another round of cppcheck nitpicks.

	The call was (from the top-level of the FreeType tree):

	  cppcheck --force \
	           --enable=all \
	           -I /usr/include \
	           -I /usr/local/include \
	           -I /usr/lib/gcc/i586-suse-linux/4.7/include \
	           -I include \
	           -I include/freetype \
	           -I include/freetype/config \
	           -I include/freetype/internal \
	           -DFT2_BUILD_LIBRARY \
	           . &> cppcheck.log

	using cppcheck git commit f7e93f99.

	Note that cppcheck still can't handle `#include FOO' (with `FOO' a
	macro).

	*/* Improve variable scopes.
	*/* Remove redundant initializations which get overwritten.

	* src/gxvalid/*: Comment out redundant code or guard it with
	FT_DEBUG_LEVEL_TRACE.

2013-07-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Introduce `writing systems'.

	This patch adds a new top level to the auto-hinter's script class
	hierarchy.  It defines `writing systems' which can contain multiple
	scripts.

	For example, the `latin' writing system (in file `aflatin.c') is
	able to support scripts like Latin, Cyrillic, Armenian, etc., which
	can be handled similarly.

	Scripts are now named using four-letter OpenType tags.

	* src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members
	to...
	(AF_WritingSystemClassRec): This new structure.  It holds pointers
	to functions which can be shared among related scripts.
	(AF_WritingSystem): New enumeration.
	(AF_Script): Revised values using four-letter tags.
	(AF_DEFINE_WRITING_SYSTEM_CLASS): New macro.
	(AF_DEFINE_SCRIPT_CLASS): Updated.

	* src/autofit/afglobal.c (af_writing_system_classes): New global,
	constant array.
	(af_script_classes): Updated.
	(af_face_globals_free): Updated.
	Remove assertion.
	(af_face_globals_get_metrics): Updated.

	* src/autofit/afglobal.h (AF_SCRIPT_FALLBACK)
	[!AF_CONFIG_OPTION_CJK]: Handle this case.

	* src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
	Updated.

	* src/autofit/afpic.c (autofit_module_class_pic_init): Updated;
	initialize structures for both writing systems and scripts.
	* src/autofit/afpic.h: Updated.
	(AF_WRITING_SYSTEM_CLASSES_GET): New macro.

	* src/autofit/afcjk.c (af_cjk_writing_system_class): New writing
	system.
	(af_cjk_uniranges): Renamed to...
	(af_hani_uniranges): This.
	(af_cjk_script_class): Reduced and renamed to...
	(af_hani_script_class): This.
	* src/autofit/afcjk.h: Updated.

	* src/autofit/afdummy.c (af_dummy_writing_system_class): New writing
	system.
	(af_dummy_script_class): Reduced and renamed to...
	(af_dflt_script_class): This.
	* src/autofit/afdummy.h: Updated.

	* src/autofit/afindic.c (af_indic_writing_system_class): New writing
	system.
	(af_indic_uniranges): Renamed to...
	(af_deva_uniranges): This.
	(af_indic_script_class): Reduced and renamed to...
	(af_deva_script_class): This.
	* src/autofit/afcjk.h: Updated.

	* src/autofit/aflatin.c (af_latin_writing_system_class): New writing
	system.
	(af_latin_uniranges): Renamed to...
	(af_latn_uniranges): This.
	(af_latin_script_class): Reduced and renamed to...
	(af_latn_script_class): This.
	* src/autofit/aflatin.h: Updated.

	* src/autofit/aflatin2.c (af_latin2_writing_system_class): New
	writing system.
	(af_latin2_uniranges): Renamed to...
	(af_ltn2_uniranges): This.
	Synchronize ranges with `latin'.
	(af_latin2_script_class): Reduced and renamed to...
	(af_ltn2_script_class): This.
	* src/autofit/aflatin2.h: Updated.

2013-07-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Variable renaming.

	* src/autofit/aftypes.h (AF_ScriptMetricsRec):
	s/clazz/script_class/.
	Update all users.

2013-07-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	Ignore libpng-config under cross-building configuration,
	because it will return the flags for the hosting environment.

	* builds/unix/configure.raw: Ignore libpng-config when
	`cross_compiling' == yes.

2013-07-30  Behdad Esfahbod  <behdad@google.com>

	Prevent division by zero by a transparent color.

	* src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra):
	Return 0 immediately, when alpha channel is zero.

2013-07-25  Behdad Esfahbod  <behdad@google.com>

	Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR.

	Also disambiguate Google's color bitmap tables.

	* include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR):
	New macros.

	* include/freetype/internal/tttypes.h (TT_SbitTableType): Add
	TT_SBIT_TABLE_TYPE_CBLC.

	* src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR.

	* src/sfnt/ttsbit.c (tt_face_load_sbit,
	tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle
	TT_SBIT_TABLE_TYPE_CBLC.

2013-07-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[sfnt] Fix for `make multi' target.

	* src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF().

2013-07-20  Werner Lemberg  <wl@gnu.org>

	* docs/INSTALL.GNU: Updated.

2013-07-20  Behdad Esfahbod  <behdad@google.com>

	[sfnt] Fix `sbix' table version handling.

	* src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
	USHORT version numbers are to be considered as `minor'.

2013-07-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix segment classification for blue zones.

	The old code (essentially unchanged since the very beginning)
	incorrectly handled this configuration

	               x -o- x
	                /   \
	               /     \
	              /       \
	             o         o

	as flat and this

	                o               o
	               /               /
	             x|              x|
	              |               |
	              o---------------o

	as round.  (`o' and `x' are on and off points, respectively).

	This is a major change which should improve the rendering results
	enormously for many TrueType fonts, especially in the range approx.
	20-40ppem, fixing the appearance of many overshoots.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the
	first and last points of the segment, not the points right before
	and after.

2013-07-19  Behdad Esfahbod  <behdad@google.com>

	[sfnt] `sbix' fix-ups.

	* src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps
	are rendered scaled and then the `glyf' outline rendered on top.  We
	don't support that yet, so just ignore the `glyf' outline and
	advertise it as a bitmap-only font.

	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
	[TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units.
	(tt_face_load_sbix_image): Typo.

2013-07-18  Behdad Esfahbod  <behdad@google.com>

	[sfnt] Add support for Apple's `sbix' color bitmap table.

	* include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen
	fields to FT_Short and FT_UShort, respectively.
	(TT_SBitTableType): New enumeration.
	(TT_FaceRec): Add `sbit_table_type' field.

	* include/freetype/tttags.h (TTAG_sbix): New macro.

	* src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic
	FT_GlyphSlot argument instead FT_Bitmap.
	Add flag to control map and metrics handling.
	Update all users.

	* src/sfnt/ttsbit.c: Include `ttmtx.h'.
	(tt_face_load_eblc): Renamed to...
	(tt_face_load_sbit): This.
	Handlic `sbix' bitmaps.
	(tt_face_free_eblc): Renamed to...
	(tt_face_load_sbit): This.
	Updated.
	(tt_face_load_strike_metrics): Handle `sbix' bitmaps.
	(tt_face_load_sbix_image): New function.
	(tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image,
	tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
	tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
	tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass
	and handle load flags.
	(tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better
	handle formats 17-19.
	Move color to grayscale conversion to...
	(tt_face_load_sbit_image): Here.
	Handle `sbix' bitmaps.

	* src/sfnt/pngshim.h: Updated.
	* src/sfnt/ttsbit.h: Updated.
	* src/sfnt/sfdriver.c: Updated.

2013-07-18  Werner Lemberg  <wl@gnu.org>

	[sfnt] Ignore invalid magic number in `head' or `bhed'.

	Other font engines seem to ignore it also.  Problem reported by
	Hin-Tak Leung <htl10@users.sourceforge.net>.

	* src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if
	we have an invalid magic number.

2013-07-16  Werner Lemberg  <wl@gnu.org>

	[smooth] Fix segfault caused by previous commit.

	* src/smooth/ftgrays.c (gray_set_cell): Always compute
	`ras.invalid'.

2013-07-16  David Turner  <digit@google.com>

	[smooth] Improve performance.

	Provide a work-around for an ARM-specific performance bug in GCC.
	This speeds up the rasterizer by more than 5%.

	Also slightly optimize `set_gray_cell' and `gray_record_cell' (which
	also improves performance on other platforms by a tiny bit (<1%).

	* src/smooth/ftgrays.c (FT_DIV_MOD): New macro.
	Use it where appropriate.

	(gray_record_cell, gray_set_cell, gray_move_to,
	gray_convert_glyph_inner): Streamline condition handling.

2013-07-16  David Turner  <digit@google.com>

	[truetype] Add assembler code for TT_MulFix14 and TT_DotFix14.

	This patch provides slightly optimized versions for ARM, x86, and
	x86_64 CPUs if built with GCC.

	Also remove some dead code.

	* src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long,
	TT_DotFix14_long_long): New functions.

2013-07-16  David Turner  <digit@google.com>

	Optimize FT_MulFix for x86_64 GCC builds.

	This patch provides an optimized `FT_MulFix' implementation for
	x86_64 machines when FreeType is built with GCC, or compatible
	compilers like Clang.

	Example:
	  bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf

	Before:

	  Load                       4.863 us/op
	  Load_Advances (Normal)     4.816 us/op
	  Load_Advances (Fast)       0.028 us/op
	  Render                     2.753 us/op
	  Get_Glyph                  0.463 us/op
	  Get_CBox                   0.077 us/op
	  Get_Char_Index             0.023 us/op
	  Iterate CMap              13.898 us/op
	  New_Face                  12.368 us/op
	  Embolden                   0.028 us/op
	  Get_BBox                   0.302 us/op

	After:

	  Load                       4.617 us/op
	  Load_Advances (Normal)     4.645 us/op
	  Load_Advances (Fast)       0.027 us/op
	  Render                     2.789 us/op
	  Get_Glyph                  0.460 us/op
	  Get_CBox                   0.077 us/op
	  Get_Char_Index             0.024 us/op
	  Iterate CMap              13.403 us/op
	  New_Face                  12.278 us/op
	  Embolden                   0.028 us/op
	  Get_BBox                   0.301 us/op

	* builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
	(FT_MulFix_x86_64): New function.

2013-07-16  David Turner  <digit@google.com>

	Speed up ARMv7 support.

	When building for ARMv7 with thumb2 instructions, the optimized
	`FT_MulFix_arm' assembly routine was not being used.

	The reason for this is in the `ftconfig.h' header, namely:

	- The assembly routine uses the `smull' instruction which is not
	  available when generating Thumb-1 machine code.  It is available
	  in Thumb-2 mode, though.

	- The header was written a long time ago before Thumb-2 became
	  widely popular (e.g. with Android).  So it simply doesn't use the
	  assembly routine if the `__thumb__' built-in macro is defined.

	- When compiling in Thumb-2 mode, the compiler will define both
	  `__thumb__' and `__thumb2__'.

	By checking for `(__thumb2__ || !__thumb__)', we ensure that the
	assembly routine is only avoided when generating Thumb-1 code.

	Given that this is performance-sensitive function, this improves
	`ftbench' as follows on a Galaxy Nexus:

	                           Before (us/op)   After (us/op)

	  - loading Arial.ttf glyphs at 14 ppem [1]

	      Load                   34.285          33.098

	  - same operation with the light auto-hinter [2]

	      Load                   31.317          29.590

	  - same operation without hinting [3]

	      Load                    6.143           5.376

	  - loading Arial.ttf advances at 14 ppem [4]

	      Load_Advances (normal) 34.216          33.016
	      Load_Advances (fast)    0.176           0.176

	  [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
	  [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
	  [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
	  [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf

	* builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
	(FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.

2013-06-28  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2013-06-27  Werner Lemberg  <wl@gnu.org>

	* src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard.

2013-06-25  Werner Lemberg  <wl@gnu.org>

	[cff] Add darkening limit to `darkening-parameters'.

	* src/cff/cffdrivr.c (cff_property_set): Add check.

2013-06-25  Werner Lemberg  <wl@gnu.org>

	[cff] Add `darkening-parameters' property.

	* include/freetype/ftcffdrv.h: Document it.

	* src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
	`darkening-parameters' property.

	* src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array.

	* src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams'
	argument and use it.
	Update all callers.

	* src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy
	`darken_params' values.

	* src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array.

	* src/cff/cffobjs.c (cff_driver_init): Set default values for
	`darken_params'.

2013-06-25  Werner Lemberg  <wl@gnu.org>

	[docmaker] Code shuffling.

	* src/tools/docmaker/tohtml.py (re_url): Move regexp...
	* src/tools/docmaker/sources.py: ... to this file.

2013-06-25  Werner Lemberg  <wl@gnu.org>

	[docmaker] Remove unused functions.

	* src/tools/docmaker/content.py (DocMarkup.get_start,
	DocBlock.get_markup_name): Removed.
	* src/tools/docmaker/tohtml.py (html_quote0, dump_html_code,
	HtmlFormatter.make_html_words): Removed.

2013-06-25  Werner Lemberg  <wl@gnu.org>

	* builds/freetype.mk (dll): Remove target.

	Problem reported by Jörg Günnewig <joerg.guennewig@googlemail.com>.

2013-06-25  Werner Lemberg  <wl@gnu.org>

	[docmaker] Recognise URLs.

	* src/tools/docmaker/tohtml.py (re_url): New regular expression.
	(make_html_para): Use it.

2013-06-19  Werner Lemberg  <wl@gnu.org>

	* Version 2.5.0.1 released.
	===========================


	Tag sources with `VER-2-5-0-1'.

	* include/freetype/config/ftoption.h: Undefine
	CFF_CONFIG_OPTION_OLD_ENGINE.
	* devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE.

2013-06-19  Werner Lemberg  <wl@gnu.org>

	* builds/unix/install.mk (install): Don't create `cache' directory.

	Found by Peter Breitenlohner <peb@mppmu.mpg.de>.

2013-06-19  Werner Lemberg  <wl@gnu.org>

	* Version 2.5.0 released.
	=========================


	Tag sources with `VER-2-5-0'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.5.0.

	* README, Jamfile (RefDoc),
	builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
	builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
	builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
	builds/win32/visualc/freetype.dsp,
	builds/win32/visualc/freetype.vcproj,
	builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
	builds/win32/visualce/freetype.vcproj,
	builds/win32/visualce/index.html,
	builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2005-ce/index.html,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/wince/vc2008-ce/index.html: s/2.4.12/2.5.0/, s/2412/250/.

	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 5.
	(FREETYPE_PATCH): Set to 0.

	* builds/unix/configure.raw (version_info): Set to 16:2:10.

	* src/base/ftobjs.c (FT_Open_Face): Pacify compiler.
	* src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto.

2013-06-18  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #39269.

	* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in
	case of reacollocation failures.

2013-06-18  Andrew Church  <achurch+savannah@achurch.org>

	Fix Savannah bug #39266.

	If memory allocations fail at certain points while opening a font,
	FreeType can either crash due to a NULL dereference or leak memory.

	* include/freetype/internal/ftobjs.c (FT_Face_InternalRec,
	FT_LibraryRec): Make `refcount' a signed integer.  If, for example,
	FT_Open_Face() fails in a memory allocation before the face's
	reference count is set to 1, a subsequent `FT_Done_Library' call
	would otherwise loop over `FT_Done_Face' 2^32 times before freeing
	the face.

	* src/base/ftobjs.c (open_face): Initialize `stream' and friends
	earlier.
	(FT_Open_Face) <Fail>: Behave correctly if `node' is NULL.
	(FT_Destroy_Module) <Fail>: Check that `renderer_clazz' is valid.

2013-06-14  Werner Lemberg  <wl@gnu.org>

	* src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC.

2013-06-06  Dave Arnold  <darnold@adobe.com>
	    Werner Lemberg  <wl@gnu.org>

	[cff] Add code to Adobe's engine to handle ppem > 2000.

	* src/cff/cffgload.c (cff_slot_load): If we get
	FT_Err_Glyph_Too_Big, retry unhinted and scale up later on.

2013-06-12  Werner Lemberg  <wl@gnu.org>

	Another try on pragmas.

	* include/freetype/internal/ftdebug.h: Move pragmas to...
	* include/freetype/internal/internal.h: ... this file since it gets
	included by all source files.
	* include/freetype/internal/ftserv.h: Remove pragma which has no
	effect.

2013-06-12  Werner Lemberg  <wl@gnu.org>

	* include/freetype/internal/ftdebug.h: Disable MSVC warning C4127.

	This partially undoes commit 3f6e0e0c.

2013-06-12  Werner Lemberg  <wl@gnu.org>

	More compiler warning fixes.

	*/*: Use cast to `FT_Bool' (or `Bool') where appropriate.

2013-06-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve handling of broken sbit advance widths.

	* src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled)
	`linearHoriAdvance' if the sbit's `horiAdvance' value is zero.

	Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem.

2013-06-10  Werner Lemberg  <wl@gnu.org>

	[sfnt] Improve embedded bitmap tracing.

	* src/base/ftobjs.c (FT_Request_Size): Move trace message regarding
	bitmap strike match to...
	(FT_Match_Size): This function.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics,
	tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
	tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
	tt_sbit_decoder_load_image): Decorate with tracing messages.

2013-06-10  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #39160.

	* src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too
	for the degenerate case.

2013-06-09  David Turner  <digit@google.com>

	* src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush.

	This code, present since eight(!) years in the unused `CACHE'
	branch, has been forgotten to apply to the master branch.  It's
	really amazing that noone has ever complained since
	`FTC_Manager_Reset' is pretty useless without flushing the cache.

2013-06-07  Werner Lemberg  <wl@gnu.org>

	Add and improve pragmas for MSVC compiler.

	* include/freetype/internal/ftdebug.h: Remove pragmas.
	* include/freetype/internal/ftserv.h: Use push and pop for pragmas.
	* include/freetype/internal/ftvalid.h: Handle warning C4324.
	* src/base/ftobjs.c: Use push and pop for pragmas.
	* src/gzip/ftgzip.c: Handle warning C4244.

2013-06-07  Werner Lemberg  <wl@gnu.org>

	[cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/.

	* src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it.

2013-06-06  Dave Arnold  <darnold@adobe.com>

	[cff] Add early exit feature for width-only calls.

	This is for `FT_Get_Advance'.

	There are 7 places where the spec says the width can be defined:

	  hstem/hstemhm
	  vstem/vstemhm
	  cntrmask/hintmask
	  hmoveto
	  vmoveto
	  rmoveto
	  endchar

	* src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls,
	if possible.

	(cf2_interpT2CharString) <cf2_cmdHSTEM>, <cf2_cmdVSTEM>,
	<cf2_cmdVMOVETO>, <cf2_cmdENDCHAR>, <cf2_cmdHINTMASK>,
	<cf2_cmdRMOVETO>, <cf2_cmdHMOVETO>: Exit early for width-only calls.

2013-06-06  Werner Lemberg  <wl@gnu.org>

	Next round of compiler fixes.

	* builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init):
	Add proper cast.

	* include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix
	cast.
	* include/freetype/internal/ftstream.h: Decorate stream and frame
	macros with `FT_Long' and `FT_ULong' as appropriate.

	* src/base/ftrfork.c (raccess_guess_darwin_hfsplus,
	raccess_guess_darwin_newvfs): Use cast.

	* src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast.

	* src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast.
	* src/cache/ftcmanag.h (FTC_ManagerRec): Ditto.

	* src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast.
	* src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto.
	* src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto.

	* src/cid/cidparse.c (cid_parser_new): Use cast.

	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast.

	* src/psaux/psobjs.c (reallocate_t1_table): Fix argument type.

	* src/raster/ftraster.c (ft_black_reset): Use cast.

	* src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast.
	(ALL_POINTS): Fix cast.

	* src/type1/t1driver.c (t1_ps_get_font_value): Add casts.
	* src/type1/t1parse.c (T1_Get_Private_Dict): Add cast.

2013-06-05  Dave Arnold  <darnold@adobe.com>

	Fix more MSVC Win32 compiler warnings.

	* src/base/ftobjs.c: Fix typo in MS pragma.

	* src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property):
	`lineno' is only used in debug mode.

	* src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in
	debug mode.

2013-06-05  Werner Lemberg  <wl@gnu.org>

	Fix compiler warnings.

	* include/freetype/internal/ftmemory.h: Decorate memory allocation
	macros with `FT_Long' where appropriate.
	Remove duplicate of FT_MEM_QRENEW_ARRAY definition.

	* src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use
	cast.

	* src/base/ftobjs.c: Add warning disabling pragma for MSVC while
	including `md5.c'.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdESC>: Add
	cast.

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts.
	(tt_sbit_decoder_load_bitmap): Beautification.

	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize
	variables (earlier).

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler.

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants
	where appropriate.

	* src/type1/t1load.c (T1_Get_MM_Var): Ditto.

2013-06-04  Werner Lemberg  <wl@gnu.org>

	* src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'.

	Problem reported by Ingmar Sittl <ingmar.sittl@elektrobit.com>.

2013-06-04  Werner Lemberg  <wl@gnu.org>

	Apply fixes for cppcheck nitpicks.

	  http://cppcheck.sourceforge.net/

	The call was (from the top-level of the FreeType tree):

	  cppcheck --force \
	           --enable=all \
	           -I include \
	           -I include/freetype/ \
	           -I include/freetype/config/ \
	           -I include/freetype/internal/ \
	           . &> cppcheck.log

	Note that the current version heavily chokes on FreeType, delivering
	many wrong results.  I will report those issues to the cppcheck team
	so that a newer version gives improved results hopefully.

	*/* Improve variable scopes.
	*/* Remove redundant initializations which get overwritten.

	* src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable):
	Remove unused variable.

	* src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero.

	* src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate):
	Remove functionless code.

	* src/tools/ftrandom.c (main): Fix memory leak.

2013-06-03  Werner Lemberg  <wl@gnu.org>

	Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option.

	This controls whether the old FreeType CFF engine gets compiled into
	FreeType.  It is now disabled by default.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(CFF_CONFIG_OPTION_OLD_ENGINE): New macro.

	* src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c
	(CFF_Operator, cff_argument_counts, cff_builder_add_point,
	cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load),
	src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use
	CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code.

	* docs/CHANGES: Updated.

2013-06-02  Werner Lemberg  <wl@gnu.org>

	Fix PNG library handling.

	* builds/unix/configure.raw: Don't use LIBPNG_LIBS but
	LIBPNG_LDFLAGS.

2013-05-23  Behdad Esfahbod  <behdad@google.com>

	Add support for color embedded bitmaps (eg. color emoji).

	A new load flag, FT_LOAD_COLOR, makes FreeType load color
	embedded-bitmaps, following this draft specification

	  https://color-emoji.googlecode.com/git/specification/v1.html

	which defines two new SFNT tables, `CBDT' and `CBLC' (named and
	modeled after `EBDT' and `EBLC', respectively).  The color bitmaps
	are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA
	pre-multiplied sRGB images.  If PNG support is available, PNG color
	images as defined in the same proposed specification are supported
	also.

	Note that color bitmaps are converted to grayscale if client didn't
	ask for color.

	* builds/unix/configure.raw: Search for libpng.
	Add `--without-png' option.

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(FT_CONFIG_OPTION_USE_PNG): New macro.

	* include/freetype/freetype.h (FT_LOAD_COLOR): New load flag.

	* include/freetype/ftimage.h (FT_Pixel_Mode): Add
	`FT_PIXEL_MODE_BGRA'.

	* include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags.

	* src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated.
	(ft_gray_for_premultiplied_srgb_bgra): New function.
	(FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA.

	* src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files.

	* src/sfnt/sfnt.c: Include `pngshim.c'.

	* src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h'
	(tt_face_load_eblc): Load `CBLC'.
	(tt_sbit_decoder_init): Load `CBDT'.
	(tt_sbit_decoder_alloc_bitmap): Pass load flags to select between
	color and grayscale bitmaps.
	Set `num_grays'.  This is used by `ftview' to choose the blending
	algorithm.
	(tt_sbit_decoder_load_byte_aligned,
	tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound,
	tt_sbit_decoder_load_image): Pass load flag.
	s/write/pwrite/.
	Don't call `tt_sbit_decoder_alloc_bitmap'.
	Updated.
	(tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function.
	(tt_sbit_decoder_load_bitmap): Pass load flag.
	Handle new glyph formats 17, 18, and 19.
	Call `tt_sbit_decoder_alloc_bitmap'.
	Flatten color bitmaps if necessary.
	(tt_face_load_sbit_image): Updated.

	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'.

	* docs/CHANGES: Updated.

2013-05-24  Guenter  <info@gknw.net>

	Apply Savannah patch #8055.

	Make `apinames' create an import file for NetWare.

	* src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2.
	(OutputFormat): Add `OUTPUT_NETWARE_IMP'.
	(names_dump): Handle it.
	(usage): Updated.
	(main): Handle new command line flag `-wN'.

2013-05-23  Behdad Esfahbod  <behdad@behdad.org>

	Compilation fix.

	* src/truetype/ttinterp.c (TT_RunIns)
	[!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work.

2013-05-22  Infinality  <infinality@infinality.net>

	[truetype] Formatting and an additional subpixel tweak.

	* src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix.
	* src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules):
	Revert previous modification for Verdana clones.

2013-05-22  Infinality  <infinality@infinality.net>

	[truetype] Adjust subpixel zp2 moves and tweak rules.

	These modifications fix thin diagonal stems in some legacy fonts.

	* src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro.
	(Move_Zp2_Point): Don't always disable x moves for subpixel rendering.
	(Ins_SHP): Disable x moves here for subpixel rendering.
	(Ins_SHPIX): Only disable x moves in compatibility mode.
	Split out zp2 move reversals and reorder conditional respectively.

	* src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight.
	Only adjust Verdana clones for 17 ppem.
	(SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New.
	(ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'.

2013-05-20  Infinality  <infinality@infinality.net>

	[truetype] Simplify and improve subpixel function detection.

	Some small enhancements have allowed the removal of many macros and
	the simplification of existing rules in `ttsubpix.c'.

	* src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX,
	SPH_TWEAK_ALLOW_X_MOVE_ZP2,
	SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES,
	SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed.
	(SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro.

	* src/truetype/ttsubpix.c: Updated affected rules.

	* src/truetype/ttinterp.c (Direct_Move_X): Updated.
	(INS_FDEF): Add additional function detection.
	(INS_ENDF): Set runtime flag.
	(Ins_CALL): Skip the call under certain conditions.
	Remove bad code.
	(Ins_LOOPCALL): Skip the call under certain conditions.
	Remove bad code.
	(Move_Zp2_Point): Updated.
	(Ins_SHPIX): Updated.
	Skip the move under some situations.
	(Ins_MIAP): Improve conditions.
	(Ins_MIRP): Updated.
	(Ins_DELTAP): Skip move under certain conditions.
	Simplify conditions.
	(TT_RunIns): Updated.
	Add code to handle new function detection.
	Trace messages.

2013-05-17  Werner Lemberg  <wl@gnu.org>

	Update more FT_Err_XXX macros using FT_ERR and FT_THROW;

	* builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c,
	builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it.

2013-05-15  Werner Lemberg  <wl@gnu.org>

	[truetype] Add `interpreter-version' property.

	This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable
	at runtime.

	* include/freetype/ftttdrv.h: New file.

	* include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New
	macro.

	* src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H.
	(tt_property_set, tt_property_get): Fill templates.

	* src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version'
	member.
	Remove unused `extension_component' member.

	* src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H.
	(tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph,
	compute_glyph_metrics, tt_loader_init): Use `interpreter_version'.

	* src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H.
	(SUBPIXEL_HINTING): New macro to check `interpreter_version' flag.
	Update all affected functions to use it.
	Use TT_INTERPRETER_VERSION_XXX where appropriate.

	* src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H.
	(tt_driver_init): Initialize `interpreter_version'.

	* src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H.
	Use TT_INTERPRETER_VERSION_XXX where appropriate.

2013-05-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Avoid empty source file.

	* src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]:
	Provide dummy typedef.

2013-05-13  Werner Lemberg  <wl@gnu.org>

	* src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable.

	Fix suggested by Vaibhav Nagarnaik <vnagarnaik@gmail.com>.

2013-05-13  Brian Nixon  <bnixon@yahoo.com>

	Fix Savannah bug #38970.

	* src/base/ftdebug.c, builds/win32/ftdebug.c,
	builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c
	(ft_debug_init): Don't read past the environment variable FT2_DEBUG.

2013-05-12  Werner Lemberg  <wl@gnu.org>

	[truetype] Add framework for TrueType properties.

	* src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H.
	(tt_property_set, tt_property_get): New functions, still empty.
	Define `tt_service_properties' service.
	Update `tt_services'.

	* src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H.
	(TT_SERVICE_PROPERTIES_GET): New macro.
	(TTModulePIC): Add `tt_service_properties'.

2013-05-12  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #38967.

	* src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast.

2013-05-12  Werner Lemberg  <wl@gnu.org>

	Introduce unsigned 64bit type (if available).

	* include/freetype/config/ftconfig.h: Define FT_UINT64 if available.
	[FT_LONG64]: Provide FT_UInt64.

	* builds/unix/ftconfig.in: Synchronized.

2013-05-12  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #38968.

	* include/freetype/ftmodapi.h: Add `FT_EXPORT' to
	FT_Property_{Set,Get}.
	* src/base/ftobjs.c: Add `FT_EXPORT_DEF' to
	FT_Property_{Set,Get}.

2013-05-10  Werner Lemberg  <wl@gnu.org>

	[sfnt] Clean up bitmap code.

	* src/sfnt/ttsbit.c: Deleted.
	* src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'.
	* rules.mk (SFNT_DRV_H): Updated.

2013-05-10  Werner Lemberg  <wl@gnu.org>

	*/* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code.

----------------------------------------------------------------------------

Copyright 2013-2016 by
David Turner, Robert Wilhelm, and Werner Lemberg.

This file is part of the FreeType project, and may only be used, modified,
and distributed under the terms of the FreeType project license,
LICENSE.TXT.  By continuing to use, modify, or distribute this file you
indicate that you have read the license and understand and accept it
fully.


Local Variables:
version-control: never
coding: utf-8
End:
