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.
	* builds/doc/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:
