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-2014 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:
