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

	* Version 2.6.2 released.
	=========================


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

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.6.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.6.1/2.6.2/, s/261/262/.

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

	* builds/unix/configure.raw (version_info): Set to 18:2:12.
	* CMakeLists.txt (VERSION_PATCH): Set to 2.

	* docs/CHANGES: Updated.

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

	Fix C++ compilation.

	* src/autofit/afloader.c: Include FT_INTERNAL_CALC_H.

	* src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler.

2015-11-28  Nikolaus Waxweiler  <madigens@gmail.com>

	Change default LCD filter to be normalized and color-balanced.

	* src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update
	`default_filter'.

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

	[docmaker] Allow references to section names.

	In the reference, we show the section's title enclosed in single
	quotes.

	* src/tools/docmaker/formatter.py (Formatter::__init__): Collect
	section names as identifiers.

	* src/tools/docmaker/tohtml.py (section_title_header): Split into...
	(section_title_header1, section_title_header2): ... these two
	strings.
	(HtmlFormatter::make_block_url, make_html_word, html_source_quote):
	Handle sections.
	(HtmlFormatter::section_enter): Updated to add `id' HTML attribute.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	[cmake] Add script to test the config module.

	* builds/cmake/testbuild.sh: New file.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	* CMakeLists.txt: Create `freetype-config.cmake' config module.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	* CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	[cmake] Add better control of library dependencies.

	* CMakeLists.txt: Add `WITH_*' variables to force/auto/omit
	ZLIB/BZip2/PNG/HarfBuzz.

2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>

	[cmake] Make `FindHarfbuzz' observe the REQUIRED option.

	* builds/cmake/FindHarfBuzz.cmake: Implement it.

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

	[cmake] Collect files specific to cmake in `builds/cmake'.

	* builds/FindHarfBuzz.cmake: Move to ...
	* builds/cmake/FindHarfBuzz.cmake: ... this place.

	* CMakeLists.txt (CMAKE_MODULE_PATH): Updated.

2015-11-27  Alexander Bock  <alexander.j.bock@nasa.gov>

	CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'.

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

	[docmaker] Allow `foo[bar]' as identifier.

	We need this to handle equally named properties in different
	modules.

	* src/tools/docmaker/content.py (re_identifier),
	src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'.

	* src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word,
	HtmlFormatter::index_exit, HtmlFormatter::section_enter,
	HtmlFormatter::block_enter): Handle `foo[bar]'.

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

	* src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480).

	(_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its
	contents.

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

	* include/freetype/internal/ftcalc.h: Don't use `register' keyword.

	This fixes compiler warnings.

	Reported by Behdad.

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

	Add `FT_LCD_FILTER_LEGACY1' enum value.

	This does the same as `FT_LCD_FILTER_LEGACY'.

	See

	  https://bugs.freedesktop.org/show_bug.cgi?id=92981

	for the reasoning.

	* include/freetype/ftlcdfil.h (FT_LcdFilter): New value
	`FT_LCD_FILTER_LEGACY1'.

	* src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it.

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

	* src/autofit/afhints.c (af_get_segment_index): Fix it.

	The old code was too simple, returning invalid values in most cases
	where a segment crosses the contour start.

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

	* src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439).

2015-11-11  Werner Lemberg  <wl@gnu.org>

	[cff, autofit] Switch off stem darkening by default.

	* src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c
	(cff_driver_init): Do it.

2015-11-10  Jan Alexander Steffens (heftig)  <jan.steffens@gmail.com>

	Allow native CFF hinter in FT_RENDER_MODE_LIGHT.

	Both the native CFF hinter and the auto-hinter now have a very
	similar rendering style.

	* include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no
	longer implies FT_LOAD_FORCE_AUTOHINT.

	* include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New
	macro.

	* include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New
	macro.

	* src/cff/cffdrivr.c (cff_driver_class): Use it.

	* src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection
	logic.

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

	* src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408).

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

	[truetype] Remove integer to pointer conversion compiler warning.

	Problem reported by Alexei.

	* src/truetype/ttgload.c (load_truetype_glyph): Use a solution found
	in the glib library to fix the issue.

2015-11-08  Behdad Esfahbod  <behdad@behdad.org>

	[sfnt] Accept version 3 of `EBLC' and `CBLC' tables also.

	* src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it.

2015-11-08  Philipp Knechtges  <philipp-dev@knechtges.com>

	[autofit] Don't distort (latin) glyphs too much (#46195).

	* src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and
	`descender' fields.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect
	ascender and descender data for blue zones.
	(af_latin_metrics_scale_dim): Reject vertical scaling values that
	change the result by more than two pixels.

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

	[sfnt] Ignore embedded bitmaps with zero size (#46379).

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement
	it.

2015-11-04  Werner Lemberg  <wl@gnu.org>

	[truetype] Catch infinite recursion in subglyphs (#46372).

	* include/freetype/internal/tttypes.h (TT_LoaderRec): New field
	`composites'.

	* src/truetype/ttgload.c: Include FT_LIST_H.
	(load_truetype_glyph): Add composite subglyph index to a list;
	abort if index is already in list.
	(tt_loader_init): Updated.
	(tt_loader_done): New function.
	(TT_Load_Glyph): Call `tt_loader_done'.

2015-11-04  Werner Lemberg  <wl@gnu.org>

	[truetype] Better tracing of composite glyphs.

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph,
	load_truetype_glyph): Implement it.

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

	[sfnt] Protect against zero-size bitmaps (#46345).

	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check
	`glyph_size'.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	* src/autofit/afloader.c (af_loader_load_g): Implement emboldening.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[autofit] Implement darkening computation function.

	This is a crude adaption of the original `cf2_computeDarkening'
	function.

	* src/autofit/afloader.c (af_intToFixed, af_fixedToInt,
	af_floatToFixed): New macros, taken from `cf2fixed.h'.
	(af_loader_compute_darkening): New function.
	* src/autofit/afloader.h: Updated.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[autofit] Add functions to get standard widths for writing systems.

	We need the computed standard horizontal and vertical widths for the
	emboldening calculation.  This method provides a convenient way to
	extract it from writing-system-specific metrics structures, which
	all script definitions must implement.

	* src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New
	function type.
	(AF_WritingSystemClassRec): New member `style_metrics_getstdw'.
	(AF_DEFINE_WRITING_SYSTEM_CLASS): Updated.

	* src/autofit/afcjk.c (af_cjk_get_standard_width): New function.
	(af_cjk_writing_system_class): Updated.
	* src/autofit/afdummy.c	(af_dummy_writing_system_class): Updated.
	* src/autofit/afindic.c (af_cjk_get_standard_width): New function.
	(af_indic_writing_system_class): Updated.
	* src/autofit/aflatin.c (af_latin_get_standard_width): New function.
	(af_indic_writing_system_class): Updated.
	* src/autofit/aflatin.c (af_latin_get_standard_width): New function.
	(af_indic_writing_system_class): Updated.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data.

	* src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields.

	* src/autofit/afglobal.c (af_face_globals_new): Initialize new
	fields.
	(af_face_globals_free): Reset new fields.

2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>

	[autofit] Add stem-darkening properties.

	Actual code follows in a later commit.

	* include/freetype/ftautoh.h: Document `no-stem-darkening' and
	`darkening-parameters'.

	* src/autofit/afmodule.h: New fields `no_stem_darkening' and
	`darken_params'.

	* src/autofit/afmodule.c (af_property_set, af_property_get):
	Handle them.
	(af_autofitter_init): Initialize them.

2015-11-02  Bungeman  <bungeman@gmail.com>

	[ftfuzzer] Add support for multiple files (patch #8779).

	Currently, libFuzzer only supports mutation of a single file.  We
	circumvent this problem by using an uncompressed tar archive as
	multiple-file input for the fuzzer.

	This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing;
	a constructed tarball should contain a font file as the first
	element, and files to be attached as further elements.

	* src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers.
	(archive_read_entry_data, parse_data): New functions.
	(LLVMFuzzerTestOneInput): Updated.

	* src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom
	mutator for libFuzzer that can mutate tarballs in a sensible way.

2015-10-31  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix cmap 14 validation (#46346).

	* src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before
	accessing `numRanges' and `numMappings'.
	Fix size check for non-default UVS table.

2015-10-31  Werner Lemberg  <wl@gnu.org>

	[sfnt] Handle infinite recursion in bitmap strikes (#46344).

	* src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc,
	tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned,
	tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add
	argument for recursion depth.
	(tt_sbit_decoder_load_compound): Add argument for recursion depth.
	Increase recursion counter for recursive call.
	(tt_sbit_decoder_load_image): Add argument for recursion depth.
	Check recurse depth.
	(tt_face_load_sbit_image): Updated.

2015-10-29  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afhints.c (af_glyph_hints_dump_points): Minor.

2015-10-29  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Remove code to set MSVC's /FD compiler switch.

	Problem reported by David Capello <davidcapello@gmail.com>; see

	  http://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html

	for details.

2015-10-27  Werner Lemberg  <wl@gnu.org>

	[pfr] Add some safety guards (#46302).

	* src/pfr/pfrload.h (PFR_CHECK): Rename to...
	(PFR_CHECK_SIZE): ... this.
	(PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE.

	* src/pfr/pfrload.c (pfr_log_font_count): Check `count'. 
	(pfr_extra_item_load_kerning_pairs): Remove tracing message.
	(pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate.
	Allocate `chars' after doing a size checks.

	* src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid
	bitmap format to...
	(pfr_slot_load_bitmap): ... this function.
	Check bitmap size.

2015-10-26  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix sanitizing logic for `loca' (#46223).

	* src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an
	incorrect adjustment of the number of glyphs, most often using far
	too large values.

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

	[autofit] Improve tracing.

	* src/autofit/afhints.c (af_print_idx, af_get_segment_index,
	af_get_edge_index): New functions.

	(af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'.
	Add segment and edge index for each point.
	Slightly change printing order of some elements.
	Don't print `-1' but `--' for missing elements.

	(af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove
	unnecessary `|', `[', and `]'.
	Don't print `-1' but `--' for missing elements.

2015-10-24  Werner Lemberg  <wl@gnu.org>

	[sfnt] Sanitize bitmap strike glyph height.

	Problem reported by Nikolay Sivov <bunglehead@gmail.com>.

	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value
	for `metrics->height' by applying some heuristics.

2015-10-22  Werner Lemberg  <wl@gnu.org>

	[sfnt, type42] Fix clang compiler warnings.

	* src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'.

	* src/type42/t42parse.c (t42_parse_sfnts): Use proper cast.

2015-10-22  Dave Arnold  <darnold@adobe.com>
	    Werner Lemberg  <wl@gnu.org>

	[cff] Avoid overflow/module arithmetic.

	This modifies the addition of subroutine number to subroutine bias
	from unsigned to signed, but does not change any results.

	* src/cff/cf2ft.c (cf2_initGlobalRegionBuffer,
	cf2_initLocalRegionBuffer): Change variable names from (unsigned)
	`idx' to (signed) `subrNum', since it is not an index until after
	the bias is added.
	* src/cff/cf2ft.h: Updated.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
	Updated similarly.

2015-10-22  Werner Lemberg  <wl@gnu.org>

	[cid] Better check of `SubrCount' dictionary entry (#46272).

	* src/cid/cidload.c (cid_face_open): Add more sanity tests for
	`fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'.

2015-10-21  Werner Lemberg  <wl@gnu.org>

	[base] Pacify compiler (#46266).

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and
	`anchor'.

2015-10-21  Werner Lemberg  <wl@gnu.org>

	[type42] Fix heap buffer overflow (#46269).

	* src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in
	bounds checking.

2015-10-21  Dave Arnold  <darnold@adobe.com>

	[cff] Fix limit in assert for max hints.

	* src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the
	limit (96 bits).

2015-10-21  Dave Arnold  <darnold@adobe.com>

	[cff] Remove an assert (#46107).

	* src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges
	in wrong order.

2015-10-21  Werner Lemberg  <wl@gnu.org>

	[sfnt] Avoid unnecessarily large allocation for WOFFs (#46257).

	* src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize'
	only after thorough checks.
	Add tracing messages.

2015-10-21  Werner Lemberg  <wl@gnu.org>

	[type42] Better check invalid `sfnts' array data (#46255).

	* src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be
	checked individually against available data size.

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

	[cid] Add a bunch of safety checks.

	* src/cid/cidload.c (parse_fd_array): Check `num_dicts' against
	stream size.
	(cid_read_subrs): Check largest offset against stream size.
	(cid_parse_dict): Move safety check to ...
	(cid_face_open): ... this function.
	Also test length of binary data and values of `SDBytes',
	`SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'.

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

	[cid] Avoid segfault with malformed input (#46250).

	* src/cid/cidload.c (cid_read_subrs): Return a proper error code for
	unsorted offsets.

2015-10-20  StudioEtrange  <nomorgan@gmail.com>

	* CMakeLists.txt: Enable shared library builds on MinGW (#46233).

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

	* src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229).

2015-10-19  Bungeman  <bungeman@gmail.com>

	[cid] Better handle invalid glyph stream offsets (#46221).

	* src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph
	length.

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

	[psaux] Fix tracing of negative numbers.

	Due to incorrect casting negative numbers were shown as very large
	(positive) integers on 64bit systems.

	* src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_none>:
	Use division instead of shift.

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

	[truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223).

	* devel/ftoption.h, include/freetype/config/ftoption.h: Surround it
	with #ifndef ... #endif, as suggested in the tracker issue.

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

	[truetype] Better protection against malformed `fpgm' (#46223).

	* src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a
	malformed `fpgm' table more than once.

2015-10-17  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidgload.c (cid_load_glyph): Fix memory leak.

	Reported by Kostya Serebryany <kcc@google.com>.

2015-10-17  Werner Lemberg  <wl@gnu.org>

	[bdf] Prevent memory leak (#46217).

	* src/bdf/bdflib.c (_bdf_parse_glyphs) <STARTCHAR>: Check
	_BDF_GLYPH_BITS.

2015-10-17  Werner Lemberg  <wl@gnu.org>

	[bdf] Use stream size to adjust number of glyphs.

	* src/bdf/bdflib.c (ACMSG17): New message macro.
	(_bdf_parse_t): Add member `size'.
	(bdf_load_font): Set `size'.
	(_bdf_parse_glyphs): Adjust `cnt' if necessary.

2015-10-17  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size.

2015-10-17  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222).

2015-10-17  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix heap buffer overflow (#46221).

	* src/psaux/t1decode.c (t1_decoder_parse_charstring) <operator 12>:
	Fix limit check.

2015-10-17  Werner Lemberg  <wl@gnu.org>

	* src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220).

2015-10-15  Kostya Serebryany  <kcc@google.com>

	[ftfuzzer] Add README.

	* src/tools/ftfuzzer/README: New file.

2015-10-15  Bungeman  <bungeman@gmail.com>

	[bdf] Fix memory leak (#46213).

	* src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in
	case of error.

2015-10-15  Werner Lemberg  <wl@gnu.org>

	[truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208).

	* devel/ftoption.h, include/freetype/config/ftoption.h
	(TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro.

	* src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed.
	(TT_RunIns): Updated.

2015-10-15  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing.

	The used indices were off by 1.

2015-10-15  Bungeman  <bungeman@gmail.com>
	    Werner Lemberg  <wl@gnu.org>

	* src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).

2015-10-15  Werner Lemberg  <wl@gnu.org>

	[base] Compute MD5 checksums only if explicitly requested.

	This improves profiling accuracy.

	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.

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

	[base] Use `FT_' namespace for MD5 functions (#42366).

	* src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'.
	Undefine HAVE_OPENSSL.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[type1] Correctly handle missing MM axis names (#46202).

	* src/type1/t1load.c (T1_Get_MM_Var): Implement it.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[pcf] Quickly exit if font index < 0.

	Similar to other font formats, this commit makes the parser no
	longer check the whole PCF file but only the header and the TOC if
	we just want to get the number of available faces (and a proper
	recognition of the font format).

	* src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
	Exit quickly if face_index < 0.

	* src/pcfread.c (pcf_load_font): Add `face_index' argument.
	Exit quickly if face_index < 0.

	* src/pcf/pcf.h: Updated.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[ftfuzzer] Handle TTCs and MM/GX variations.

	This patch also contains various other improvements.

	* src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject
	pre-C++11 compilers.
	(FT_Global): New class.  Use it to provide a global constructor and
	destructor for the `FT_Library' object.
	(setIntermediateAxis): New function to select an (arbitrary)
	instance.
	(LLVMFuzzerTestOneInput): Loop over all faces and named instances.
	Also call `FT_Set_Char_Size'.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Refine some GX sanity tests.

	Use the `gvar' table size instead of the remaining bytes in the
	stream.

	* src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'.

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'.
	(ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument
	`size'.
	(tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Another GX sanity test.

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
	`tupleCount'.
	Add tracing message.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix memory leak for broken GX fonts (#46188).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
	deallocation.

2015-10-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix commit from 2015-10-10.

	* src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error
	handling body to condition.

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

	[unix] Make MKDIR_P actually work.

	* builds/unix/configure.raw: Fix underquoting of `INSTALL' and
	`MKDIR_P'.

	Problem reported by Dan Liddell <lddll@yahoo.com>.

2015-10-11  Werner Lemberg  <wl@gnu.org>

	[sfnt] Improve extraction of number of named instances.

	* src/sfnt/sfobjs.c (sfnt_init_face)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against
	`fvar' table size.

2015-10-10  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow
	(#46149).

2015-10-10  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix infinite loops with broken cmaps (#46167).

	* src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care
	of border conditions (i.e., if the loops exit naturally).

2015-10-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More sanity tests for GX handling.

	These tests should mainly help avoid unnecessarily large memory
	allocations in case of malformed fonts.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints,
	ft_var_readpackeddeltas): Check number of points against stream
	size.
	(ft_var_load_avar): Check `pairCount' against table length.
	(ft_var_load_gvar): Check `globalCoordCount' and `glyphCount'
	against table length.
	(tt_face_vary_cvt): Check `tupleCount' and `offsetToData'.
	Fix trace.
	(TT_Vary_Apply_Glyph_Deltas): Fix trace.
	Free `sharedpoints' to avoid memory leak.

2015-10-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Better protection against malformed GX data (#46166).

	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly
	handle empty `localpoints' array.

2015-10-10  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162).

2015-10-09  Werner Lemberg  <wl@gnu.org>

	* src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size.

2015-10-08  Werner Lemberg  <wl@gnu.org>

	[pcf] Protect against invalid number of TOC entries (#46159).

	* src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries
	against size of data stream.

2015-10-08  Werner Lemberg  <wl@gnu.org>

	[type42] Protect against invalid number of glyphs (#46159).

	* src/type42/t42parse.c (t42_parse_charstrings): Check number of
	`CharStrings' dictionary entries against size of data stream.

2015-10-08  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix some signed overflows (#46149).

	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
	<TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'.

2015-10-08  Werner Lemberg  <wl@gnu.org>

	[type1] Protect against invalid number of subroutines (#46150).

	* src/type1/t1load.c (parse_subrs): Check number of
	`Subrs' dictionary entries against size of data stream.

2015-10-07  Kostya Serebryany  <kcc@google.com>

	[ftfuzzer] Add support for LLVM's LibFuzzer.

	* src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.

2015-10-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[smooth] Faster alternative line renderer.

	This implementation renders the entire line segment at once without
	subdividing it into scanlines.  The main speed improvement comes from
	reducing the number of divisions to just two per line segment, which
	is a bare minimum to calculate cell coverage in a smooth rasterizer.
	Notably, the progression from cell to cell does not itself require any
	divisions at all.  The speed improvement is more noticeable at larger
	sizes.

	* src/smooth/ftgrays.c (gray_render_line): New implementation.

2015-10-06  Werner Lemberg  <wl@gnu.org>

	[cff] Return correct PS names from pure CFF (#46130).

	* src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for
	SFNT.

2015-10-04  Werner Lemberg  <wl@gnu.org>

	[base] Replace left shifts with multiplication (#46118).

	* src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it.

2015-10-04  Werner Lemberg  <wl@gnu.org>

	* Version 2.6.1 released.
	=========================


	Tag sources with `VER-2-6-1'.

	* docs/VERSION.DLL: Update documentation and bump version number to
	2.6.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.6/2.6.1/, s/26/261/.

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

	* builds/unix/configure.raw (version_info): Set to 18:1:12.
	* CMakeLists.txt (VERSION_PATCH): Set to 1.

	* src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for
	dumping functions.

2015-10-04  Werner Lemberg  <wl@gnu.org>

	[bzip2, gzip] Avoid access of unitialized memory (#46109).

	* src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c
	(ft_gzip_file_fill_input): In case of an error, adjust the limit to
	avoid copying uninitialized memory.

2015-10-03  Werner Lemberg  <wl@gnu.org>

	[bzip2, gzip] Avoid access of unitialized memory (#46109).

	* src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c
	(ft_gzip_file_fill_output): In case of an error, adjust the limit to
	avoid copying uninitialized memory.

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

	[smooth] Clean up worker.

	* src/smooth/ftgrays.c (gray_TWorker): Remove never used fields.

2015-10-01  Werner Lemberg  <wl@gnu.org>

	[sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078).

	* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of
	border conditions (i.e., if the loop exits naturally).

2015-10-01  Werner Lemberg  <wl@gnu.org>

	* src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges.
	They should be a subset of `af_deva_uniranges'.

2015-10-01  Werner Lemberg  <wl@gnu.org>

	[sfnt] Make `tt_cmap4_char_map_linear' faster (#46078).

	* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to
	reject too large glyph indices.

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

	[smooth] Clean up worker.

	* src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'.
	(gray_start_cell, gray_render_line): Update.

2015-09-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Replace `no-base' with `non-base'.

	* src/autofit/*: Do it.

2015-09-30  Werner Lemberg  <wl@gnu.org>

	[sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078).

	* src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better
	skip invalid segments.
	If searching the next character, provide a more efficient logic to
	speed up the code.

2015-09-30  Werner Lemberg  <wl@gnu.org>

	[truetype] Adjust number of glyphs for malformed `loca' tables.

	* src/truetype/ttpload.c (tt_face_load_loca): Implement it.

2015-09-29  Werner Lemberg  <wl@gnu.org>

	[pshinter] Avoid harmless overflow (#45984).

	* src/pshinter/pshglob.c (psh_blues_set_zones): Fix it.

2015-09-28  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Lao script.

	Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone
	characters!

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

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

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

	* src/autofit/afranges.c: Add Lao data.

	* src/autofit/afstyles.h: Add Lao data.

2015-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
 
	[base] Fix a leak by broken sfnt-PS or resource fork (#46028).

	open_face_from_buffer() frees passed buffer if valid font
	is not found.  But if copying to the buffer is failed,
	the allocated buffer should be freed within the caller.

	* src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free
	the buffer `sfnt_ps' if an error caused before calling
	open_face_from_buffer().
	(Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if
	an error caused before calling open_face_from_buffer();

2015-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[mac] Fix buffer size calculation for LWFN font.

	* src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong
	to prevent confused copy by too large chunk size.

2015-09-26  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro.

2015-09-26  Werner Lemberg  <wl@gnu.org>

	[autofit] Minor tracing improvement.

	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit
	blue zones header line if there are no blue zones.

2015-09-26  Werner Lemberg  <wl@gnu.org>

	[bzip2, gzip, lzw] Harmonize function signatures with prototype.

	Suggested by Hin-Tak Leung.

	* src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c
	(ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it.

2015-09-26  Hin-Tak Leung  <htl10@users.sourceforge.net>

	Add new FT_LOAD_COMPUTE_METRICS load flag.

	* include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro.
	* src/truetype/ttgload.c (compute_glyph_metrics): Usage.

2015-09-26  Werner Lemberg  <wl@gnu.org>

	* src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast.

2015-09-25  Werner Lemberg  <wl@gnu.org>

	[type1] Protect against invalid number of glyphs (#46029).

	* src/type1/t1load.c (parse_charstrings): Check number of
	`CharStrings' dictionary entries against size of data stream.

2015-09-23  Werner Lemberg  <wl@gnu.org>

	[sfnt] Better checks for invalid cmaps (2/2) (#46019).

	While the current code in `FT_Get_Next_Char' correctly rejects
	out-of-bounds glyph indices, it can be extremely slow for malformed
	cmaps that use 32bit values.  This commit tries to improve that.

	* src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next,
	tt_cmap12_char_map_binary, tt_cmap13_next,
	tt_cmap13_char_map_binary): Reject glyph indices larger than or
	equal to the number of glyphs.

2015-09-23  Werner Lemberg  <wl@gnu.org>

	[base, sfnt] Better checks for invalid cmaps (1/2).

	* src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds
	glyph indices.
	(FT_Get_First_Char): Updated.

	* src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character
	codes greater than 0xFFFF.

	(tt_cmap8_char_index): Avoid integer overflow in computation of
	glyph index.
	(tt_cmap8_char_next): Avoid integer overflows in computation of
	both next character code and glyph index.

	(tt_cmap10_char_index): Fix unsigned integer logic.
	(tt_cmap10_char_next): Avoid integer overflow in computation of
	next character code.

	(tt_cmap12_next): Avoid integer overflows in computation of both
	next character code and glyph index.
	(tt_cmap12_char_map_binary): Ditto.
	(tt_cmap12_char_next): Simplify.

	(tt_cmap13_char_map_binary): Avoid integer overflow in computation
	of next character code.
	(tt_cmap13_char_next): Simplify.

2015-09-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>

	[base] Check too long POST and sfnt resource (#45919).

	* src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the
	resource fork for Mac OS.  Resource forks larger than 16 MB can be
	written but can't be handled correctly, at least in Carbon routine.
	See https://support.microsoft.com/en-us/kb/130437.

	* src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x'
	prefix for `%p' formatter.

	* src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and
	total size of the concatenated POST resource before buffer
	allocation.
	(Mac_Read_sfnt_Resource): Check the declared size of sfnt resource
	before buffer allocation.

	* src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the
	total resource size before buffer allocation.

2015-09-19  Werner Lemberg  <wl@gnu.org>

	[sfnt] Improve handling of invalid SFNT table entries (#45987).

	This patch fixes weaknesses in function `tt_face_load_font_dir'.

	- It incorrectly assumed that valid tables are always at the
	  beginning.  As a consequence, some valid tables after invalid
	  entries (which are ignored) were never seen.

	- Duplicate table entries (this is, having the same tag) were not
	  rejected.

	- The number of valid tables was sometimes too large, leading to
	  access of invalid tables.

	* src/sfnt/ttload.c (check_table_dir): Add argument to return number
	of valid tables.
	Add another tracing message.
	(tt_face_load_font_dir): Only allocate table array for valid
	entries as returned by `check_table_dir'.
	Reject duplicate tables and adjust number of valid tables
	accordingly.

2015-09-19  Werner Lemberg  <wl@gnu.org>

	[pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999).

	* src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short,
	then take the absolute value.
	Also apply FT_ABS to `height'.

2015-09-17  Werner Lemberg  <wl@gnu.org>

	[type42] Fix memory leak (#45989).

	* src/type42/t42parse.c (t42_parse_charstrings): Allow only a single
	`CharStrings' array.

2015-09-17  Werner Lemberg  <wl@gnu.org>

	[psaux] Fix memory leak (#45986).

	* src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
	Free `temp' in case of error.

2015-09-17  Werner Lemberg  <wl@gnu.org>

	[psaux] Improve tracing message.

	* src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
	Handle plural correctly.

2015-09-17  Werner Lemberg  <wl@gnu.org>

	[pcf] Fix integer overflows (#45985).

	* src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv.

2015-09-17  Werner Lemberg  <wl@gnu.org>

	[pcf] Use FT_ABS for some property values (#45893).

	* src/pcf/pcfread.c (pcf_load_font): Take absolute values for
	AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
	RESOLUTION_Y.  In tracing mode, add warnings.

2015-09-16  Werner Lemberg  <wl@gnu.org>

	Minor fixes for some clang warnings.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing
	initialization.

	* src/truetype/ttgload.c (TT_Process_Composite_Component): Cast.

2015-09-15  Werner Lemberg  <wl@gnu.org>

	[type1, type42] Fix memory leaks (#45966).

	* src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis
	names.
	(parse_blend_design_map): Allow only a single design map.
	(parse_encoding): Handle multiple encoding vectors.

	* src/type42/t42parse.c (t42_parse_encoding): Handle multiple
	encoding vectors.

2015-09-15  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix integer type (#45965).

	* src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.

2015-09-15  Werner Lemberg  <wl@gnu.org>

	* src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964).

2015-09-15  Werner Lemberg  <wl@gnu.org>

	[type1, type42] Check encoding array size (#45961).

	* src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
	(t42_parse_encoding): Do it.

2015-09-14  Alexei Podtelezhnikov  <apodtele@gmail.com>

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

2015-09-14  Werner Lemberg  <wl@gnu.org>

	[type1] Fix another potential buffer overflow (#45955).

	* src/type1/t1parse (T1_Get_Private_Dict): Assure that check for
	`eexec' doesn't exceed `limit'.

2015-09-13  Werner Lemberg  <wl@gnu.org>

	Replace `mkinstalldirs' with AC_PROG_MKDIR_P.

	* builds/unix/mkinstalldirs: Removed, no longer needed.

	* builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'.
	Update pwd call for `$INSTALL'.

	* builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'.

	* autogen.sh: Updated.

2015-09-13  Werner Lemberg  <wl@gnu.org>

	[winfonts] Check alignment shift count for resource data (#45938).

	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.

2015-09-13  Werner Lemberg  <wl@gnu.org>

	[type1] Fix potential buffer overflow (#45923).

	* src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't
	point to end of file buffer.

2015-09-13  Werner Lemberg  <wl@gnu.org>

	[gzip] Fix access of small compressed files (#45937).

	* src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.

	(ft_gzip_get_uncompressed_file): Correct byte order while reading
	unsigned long value.  Without this change, the whole optimization of
	accessing small files in `FT_Stream_OpenGzip' is never executed!  As
	a consequence, access to PCF files in general (which are normally
	small files) should be much improved now as originally intended.

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

	[psaux] Fix potential buffer overflow (#45922).

	* src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is
	enclosed in balanced expressions, ensure that the cursor position
	doesn't get larger than the current limit.

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

	[base] Avoid crash while tracing `load_mac_face'.

	Reported in Savannah bug #45919.

	* src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while
	tracing.

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

	[type42] Fix endless loop (#45920).

	* src/type42/t42parse.c (t42_parse_encoding): Synchronize with
	type1's `parse_encoding'.

2015-09-10  Werner Lemberg  <wl@gnu.org>

	[docmaker] Allow `-' in bold and italic markup.

	* src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
	accordingly.

2015-09-09  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c (FT_RoundFix): Improve.

2015-09-09  Wojciech Mamrak  <wmamrak@gmail.com>

	* src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.

	This commit makes the functions behave as expected, this is,
	rounding towards plus or minus infinity.

2015-09-07  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/smooth/ftgrays.c (gray_render_line): Simplify clipping.

2015-09-04  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[raster,smooth] Microoptimizations.

	* src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
	Beziier_Up, ): Use do-while loops.

	* src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
	gray_convert_glyph): Ditto.

2015-09-04  Werner Lemberg  <wl@gnu.org>

	[autofit] Redesign code ranges (2/2).

	This commit adds two fallback scripts (`latb', `latp') and
	implements support for the no-base character ranges introduced in
	the previous commit.

	* src/autofit/aftypes.h (AF_ScriptClassRec): Add
	`script_uni_nobase_ranges' field.
	(AF_DEFINE_SCRIPT_CLASS): Updated.

	* src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and
	`latp' fallback scripts.

	* src/autofit/afblue.dat: Add blue zones for Latin subscript and
	superscript fallback scripts.

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

	* src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base
	characters.
	(AF_STYLE_MASK): Updated.

	* src/autofit/afglobal.c (SCRIPT): Updated.
	(af_face_globals_compute_style_coverage): Handle new style flag.

	* src/autofit/aflatin.c (af_latin_hints_apply): Handle new style
	flag.

	* src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges.

2015-09-04  Werner Lemberg  <wl@gnu.org>

	[autofit] Redesign code ranges (1/2).

	This patch introduces auxiliary code ranges that identify no-base
	characters; they refer to glyphs of a script that should be hinted
	without alignments to blue zones (mostly diacritics).

	It also splits off ranges for fallback scripts that handle subscript
	and superscript characters not covered by OpenType features.  For
	example, this greatly helps improve the hinting of various phonetic
	alphabets, which contain a large amount characters that look like
	superscript glyphs.

	Finally, code ranges are updated to Unicode 8.0, and enclosed
	characters are removed in general since they normally look better if
	they stay unhinted.

	* src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode
	8.0.
	Split off superscript-like and subscript-like glyphs into...

	(af_latb_uniranges, af_latp_uniranges): ... these two new arrays.

	(af_xxxx_nobase_uniranges): New arrays that hold no-base characters
	of the corresponding character ranges.

2015-09-03  Werner Lemberg  <wl@gnu.org>

	[autofit] Pass glyph index to hinting function.

	No functionality change yet.

	* src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass
	glyph index.

	* src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply),
	src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c
	(af_indic_hints_apply), src/autofit/aflatin.c
	(af_latin_hints_apply), src/autofit/aflatin2.c
	(af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g):
	Updated.

2015-08-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Code clean-up.

	* src/autofit/afglobal.h (AF_STYLE_MASK): New macro.
	(AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition.

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

2015-08-30  Werner Lemberg  <wl@gnu.org>

	[autofit] Make glyph style array use 16bit values.

	* include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use
	`FT_UShort' for `map' field.

	* src/autofit/afglobal.c (af_face_globals_compute_style_coverage,
	af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h
	(af_get_coverage): Use FT_UShort for `glyph_styles' array.

	* src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to
	16 bits.
	(AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field.

2015-08-26  Werner Lemberg  <wl@gnu.org>

	* builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828).

2015-08-25  Werner Lemberg  <wl@gnu.org>

	[base] Improve kerning tracing and documentation.

	* src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
	scaled-down kerning values differ.

2015-08-18  Werner Lemberg  <wl@gnu.org>

	[raster] Remove last remnants of `raster5' driver.

	* src/raster/ftrend1.h (ft_raster5_renderer_class): Removed.

	* src/raster/rastpic.c, src/raster/rastpic.h
	(ft_raster5_renderer_class_pic_init,
	ft_raster5_renderer_class_pic_free): Removed.

2015-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Improve emboldener (#45596).

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
	of zero-lenght segments.

2015-08-16  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Reoptimize arithmetic.

	* src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
	special cases that slow down the general use.

2015-08-15  pazer  <ibemad@gmail.com>

	Fix C++ compilation (#45762).

	* src/base/ftstroke.c (ft_outline_glyph_class): Use
	FT_CALLBACK_TABLE.

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

	[truetype] Clean up.

	* src/truetype/ttgload.c (TT_Process_Composite_Component): Use
	`FT_Outline_Transform' and `FT_Outline_Translate'.
	(translate_array): Dropped.

2015-08-14  Andreas Enge  <andreas.enge@inria.fr>

	* builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).

2015-08-13  Werner Lemberg  <wl@gnu.org>

	[truetype] Introduce named instance access to GX fonts.

	For functions querying a face, bits 16-30 of the face index can hold
	the named instance index if we have a GX font.  The indices start
	with value 1; value 0 indicates font access without GX variation
	data.

	* include/freetype/freetype.h (FT_FaceRec): Update documentation.
	* include/freetype/internal/sfnt.h: Ditto.

	* src/sfnt/sfobjs.c (sfnt_init_face)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and
	do argument checks.
	(sfnt_load_face): Updated.

	* src/truetype/ttobjs.c (tt_face_init)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
	the style name.

	* src/base/ftobjs.c (open_face_from_buffer,
	open_face_PS_from_sfnt_stream): Updated.
	* src/bdf/bdfdrivr.c (BDF_Face_Init): Updated.
	* src/cff/cffload.c (cff_font_load): Updated.

	* src/cff/cffobjs.c (cff_face_init): Make function exit early for
	pure CFF fonts if `font_index < 0'.
	Updated.

	* src/cid/cidobjs.c (cid_face_init): Updated.
	* src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
	* src/pfr/pfrobjs.c (pfr_face_init): Updated.
	* src/type1/t1objs.c (T1_Face_Init): Updated.
	* src/type42/t42objs.c (T42_Face_Init): Updated.
	* src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
	Updated.

	* docs/CHANGES: Updated.

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

	[type1,cff,cid] Streamline font matrix application.

	* src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only
	if font matrix is not trivial.
	* src/cff/cffgload.c (cff_slot_load): Ditto.
	* sff/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
	entire outline.

2015-08-11  Werner Lemberg  <wl@gnu.org>

	[builds/unix] Minor.

	* builds/unix/configure.raw:
	s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
	similarly named uppercase variables.

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

	[type1,cid,type42] Minor improvements.

	* src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only
	when necessary. Refresh comments.
	* src/cid/cidload.c (cid_parse_font_matrix): Ditto.
	* src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments.

2015-08-08  Werner Lemberg  <wl@gnu.org>

	[type42] Fix glyph access.

	This is a severe bug: We've missed one level of indirection, as
	described in the Type 42 specification.  As a result, ftview
	sometimes showed incorrect glyphs for given glyph names, and even
	displayed `error 0x0006' (invalid argument!) in case the number of
	glyph indices differed between the Type 42 font and the embedded
	TTF.

	Apparently, noone ever noticed it; this shows how much Type 42 fonts
	are in use...

	* src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
	to embedded TTF's glyph index.

2015-08-08  Werner Lemberg  <wl@gnu.org>

	[type42] Minor clean-up.

	* src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
	variable.

2015-08-06  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[type42] Parse FontMatrix according to specifications.

	* src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix
	does not need scaling by 1000. Units_per_EM are taken from the
	embedded TrueType.

2015-08-06  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve Arabic hinting.

	Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
	ttfautohint).

	* src/autofit/afblue.dat: Add neutral blue zone for the tatweel
	character.

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

2015-08-05  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[truetype] Clean up types.

	* src/truetype/ttobjs.c (TT_Size): Move declaration from here.
	* include/freetype/internal/tttypes.h (TT_Size): ... to here.
	(TT_LoaderRec): Switch to appropriate types for `face' and `size'.
	* src/truetype/ttgload.c: Remove corresponding type casts.
	* src/truetype/ttsubpix.c: Ditto.

2015-08-05  Werner Lemberg  <wl@gnu.org>

	[autofit] Improve recognition of flat vs. rounded segments.

	Lower the flatness threshold from upem/8 to upem/14, making the
	auto-hinter accept shorter elements.

	Synchronize flat/round stem selection algorithm with blue zone code.

	* src/autofit/aflatin.c (FLAT_THRESHOLD): New macro.
	(af_latin_metrics_init_blues): Use it.
	(af_latin_hints_compute_segments): Collect information on maximum
	and minimum coordinates of `on' points; use this to add a constraint
	for the flat/round decision similar to
	`af_latin_metrics_init_blues'.

2015-08-04  Werner Lemberg  <wl@gnu.org>

	Another left-shift bug (#45681).

	* src/base/ftobjs.c (IsMacBinary): Only accept positive values for
	`dlen'.

2015-08-03  Alexei Podtelezhnikov  <apodtele@gmail.com>

	[base] Fix `ft_corner_orientation'.

	Remove casting from `FT_Long' to `FT_Int' that might change the sign
	of the return value and make it faster too.

	* src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay
	with 32-bit arithmetic when safe. Use plain math on 64-bit systems.
	* src/pshinter/pshalgo.c: Remove old unused code.

2015-08-03  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgload.c (load_truetype_glyph)
	[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs
	having a depth greater than 1.

2015-08-03  Werner Lemberg  <wl@gnu.org>

	Fix typo in clang bug from 2015-07-31 (#45678).

	* src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.

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

	* CMakeLists.txt: Improve shared library support.

	Based on a patch from John Cary <cary@txcorp.com>.

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

	* builds/unix/freetype-config.in (enable_shared): Remove.  Unused.

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

	Fix more invalid left-shifts.

	* src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
	not left-shift.

	* src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
	tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication,
	not left-shift.

2015-07-31  Werner Lemberg  <wl@gnu.org>

	Fix some bugs found by clang's `-fsanitize=undefined' (#45661).

	* src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
	positive values from header.
	Check overflow.

	* src/base/ftoutln.c (SCALED): Correctly handle left-shift of
	negative values.

	* src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
	_bdf_clear_glyph_modified): Use unsigned long constant.

	* src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
	left-shift values that can be negative.

	* src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
	left-shift values that can be negative.

	* src/raster/ftraster.c (SCALED): Correctly handle left-shift of
	negative values.

	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
	values that can be negative.

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph,
	compute_glyph_metrics, load_sbit_image): Don't left-shift values
	that can be negative.

2015-07-31  Werner Lemberg  <wl@gnu.org>

	Define FT_LONG_MAX.

	* include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
	* src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.

2015-07-28  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c (FT_Vector_NormLen): Clarify.

2015-07-27  Alexei Podtelezhnikov  <apodtele@gmail.com>

	* src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions.

2015-07-26  Matthias Clasen  <matthias.clasen@gmail.com>

	[cff] Don't use `hmtx' table for LSB (#45520).

	* src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
	width only.  Bug introduced 2015-04-10.

2015-07-09  Werner Lemberg  <wl@gnu.org>

	Better support of user-supplied C++ namespaces.

	See

	  http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html

	for a rationale.

	* src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
	src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
	src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
	(FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
	header files that contain FT_{BEGIN,END}_HEADER macros by
	themselves.

	* src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
	FT_CONFIG_STANDARD_LIBRARY_H earlier.

	* src/truetype/ttpic.h: Include FT_INTERNL_PIC_H.

2015-07-07  Werner Lemberg  <wl@gnu.org>

	[sfnt] Make `tt_face_get_name' member of the SFNT interface.

	* include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
	prototype.
	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.

	* src/sfnt/sfdriver.c (sfnt_interface): Updated.

	* src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
	* src/sfnt/sfobjs.h: Add prototype for it.

2015-06-30  Werner Lemberg  <wl@gnu.org>

	Fix some clang compiler warnings.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c
	(cf2_interpT2CharString), src/truetype/ttgload.c
	(load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas),
	src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues.

2015-06-29  Alexei Podtelezhnikov <apodtele@gmail.com>

	[truetype] Speed up bytecode interpreter.

	* src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.

2015-06-29  Alexei Podtelezhnikov <apodtele@gmail.com>

	[base] Speed up emboldening.

	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Use
	`FT_Vector_NormLen'.

2015-06-29  Alexei Podtelezhnikov <apodtele@gmail.com>

	[base] Implement fast vector normalization.

	The function uses Newton's iterations instead of dividing vector
	components by its length, which needs a square root. This is,
	literally, a bit less accurate but a lot faster.

	* src/base/ftcalc.c (FT_Vector_NormLen): New function.

2015-06-28  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Always create `ftconfig.h'.

	For non-UNIX builds, the file stays unmodified.  However, it's
	better to have the main configuration files at the same place
	regardless of the OS.

2015-06-28  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Improve MSVC support (#43737).

2015-06-28  Werner Lemberg  <wl@gnu.org>

	[cmake] Check for libraries and create `ftoption.h'.

	* builds/FindHarfBuzz.cmake: New file, taken from

	  https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake

	* CMakeLists.Txt: Add path to local cmake modules.
	Find dependencies for zlib, bzip2, libpng, and harfbuzz.
	Create `ftoption.h' file.
	Set up include and linker stuff for libraries.

2015-06-28  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Fix creation of `ftconfig.h'.
	Check for UNIX header files using `check_include_file'.
	Set up correct header include directories.

2015-06-28  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Disallow in-source builds.

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

	* src/tools/docmaker/utils.py (check_output): Add missing `\n'.

2015-06-26  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Select platform-dependent `ftdebug.c'.

2015-06-25  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
	Additionally, do this for UNIX only.

2015-06-25  Werner Lemberg  <wl@gnu.org>

	* CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'.

2015-06-25  Werner Lemberg  <wl@gnu.org>

	Another adjustment to header locations.

	This change is a result of a discussion thread on freetype-devel

	  http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html

	Re-introduce the `freetype2' subdirectory for all FreeType header
	files after installation, and rename the `freetype2' subdirectory in
	the git repository to `freetype'.

	* include/freetype2: Renamed to...
	* include/freetype: This.

	* CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
	PRIVATE_HEADERS): Updated.
	Update creation of `ftconfig.h'.
	Install generated `ftconfig.h'.

	* Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.

	* builds/amiga/include/config/ftconfig.h, builds/freetype.mk
	(PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
	builds/unix/freetype2.in: Updated.

	* builds/unix/freetype-config.in: Updated.
	* builds/unix/configure.raw: Don't check for `rmdir'.
	* builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable
	according to the autoconf info manual.
	* builds/unix/install.mk (install, uninstall,
	distclean_project_unix): Update and simplify.

	* builds/wince/*, builds/windows/*: Updated.

	* devel/ft2build.h, include/ft2build.h: Updated.

	* include/freetype2/config/ftheader.h,
	include/freetype2/internal/ftserv.h,
	include/freetype2/internal/internal.h: Update all header file
	macros.

	* src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.

	* docs/*: Updated.

2015-06-24  Alexei Podtelezhnikov <apodtele@gmail.com>

	* src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp.

2015-06-24  Alexei Podtelezhnikov <apodtele@gmail.com>

	* src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.

2015-06-23  Werner Lemberg  <wl@gnu.org>

	s/TYPEOF/FT_TYPEOF/ (#45376).

	* builds/unix/ftconfig.in, builds/vms/ftconfig.in,
	include/freetype2/config/ftconfig.h,
	include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it.

2015-06-22  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #45097.

	We no longer `pollute' the namespace of possible header file names;
	instead we move `ft2build.h' up by one level so that it gets
	installed in the default include directory (e.g.,
	/usr/local/include).  After this commit, only `ft2build.h' stays in
	the compiler's include path.

	No visible changes for the user who follows the standard FreeType
	header inclusion rules.

	* include/*: Move to ...
	* include/freetype2/*: This directory, except `ft2build.h'.

	* CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
	PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.

	* builds/amiga/include/config/ftconfig.h, builds/freetype.mk
	(PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
	builds/unix/install.mk (install, uninstall),
	builds/unix/freetype2.in: Updated.

	* builds/unix/freetype-config.in: Updated.
	Emit -I directory only if it is not `/usr/include'.

	* builds/wince/*, builds/windows/*: Updated.

	* devel/ft2build.h, include/ft2build.h: Updated.

	* include/freetype2/config/ftheader.h,
	include/freetype2/internal/ftserv.h,
	include/freetype2/internal/internal.h: Update all header file
	macros.

	* src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.

2015-06-21  Werner Lemberg  <wl@gnu.org>

	Make Jam support work again.

	This is just very basic stuff and just a little bit tested on
	GNU/Linux only.  I won't delve into this since I'm not a Jam user.

	* Jamfile: Call `HDRMACRO' for `ftserv.h' also.
	(DEFINES): Replace with...
	(CCFLAGS): ... this.

	* src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
	already handled in the top-level Jamfile.

	* src/autofit/Jamfile (DEFINES): Replace with...
	(CCFLAGS): ... this.
	(_sources): Add missing files.

	* src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
	longer contains macro header definitions.

	* src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
	src/truetype/Jamfile (_sources): Add missing files.

2015-06-16  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #45326.

	* src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
	definitions.

2015-06-07  Werner Lemberg  <wl@gnu.org>

	* Version 2.6 released.
	=======================


	Tag sources with `VER-2-6'.

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

	* 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.5/2.6/, s/255/26/.

	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
	(FREETYPE_PATCH): Set to 0.

	* builds/unix/configure.raw (version_info): Set to 18:0:12.
	* CMakeLists.txt (VERSION_MINOR): Set to 6.
	(VERSION_PATCH): Set to 0.

	* src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
	declarations for dumping functions.

	* src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.

	* builds/toplevel.mk: Use `freetype.mk's code to compute the version
	string.
	Don't include a zero patch level in version string.
	* builds/freetype.mk: Remove code for computing the version string.

2015-06-06  Ashish Azad  <ashish.azad@samsung.com>

	Fix Savannah bug #45260.

	* src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.

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

	[truetype] Fix memory leak.

	Problem reported by Grissiom <chaos.proton@gmail.com>; in

	  http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html

	there is an example code to trigger the bug.

	* src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size'
	data before allocating again.  Bug most probably introduced four
	years ago in version 2.4.3.

2015-06-02  Werner Lemberg  <wl@gnu.org>

	[raster] Add more tracing.

	* src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define.
	(Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span,
	Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls.

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

	[truetype] While tracing opcodes, show code position and stack.

	* src/truetype/ttinterp.c: Change all existing TRACE7 calls to
	TRACE6.
	(opcode_name): Add string lengths.
	(TT_RunIns): Implement display of code position and stack.

2015-05-31  Werner Lemberg  <wl@gnu.org>

	[truetype] In GX, make private point numbers work correctly.

	This is completely missing in Apple's documentation: If a `gvar'
	tuple uses private point numbers (this is, deltas are specified for
	some points only), the uncovered points must be interpolated for
	this tuple similar to the IUP bytecode instruction.  Examples that
	need this functionality are glyphs `Oslash' and `Q' in Skia.ttf.

	* src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate,
	tt_handle_deltas): New functions.
	(TT_Vary_Get_Glyph_Deltas): Renamed to...
	(TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the
	points and does no longer return an array of deltas.
	Add tracing information.
	Call `tt_handle_deltas' to interpolate missing deltas.
	Also fix a minor memory leak in case of error.

	* src/truetype/ttgxvar.h: Updated.

	* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
	load_truetype_glyph): Updated.

2015-05-31  Werner Lemberg  <wl@gnu.org>

	[truetype] In GX, make intermediate tuplets work at extrema.

	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.

2015-05-31  Werner Lemberg  <wl@gnu.org>

	[truetype] Add tracing information to GX code.

	* src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
	ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend,
	TT_Set_Var_Design, tt_face_vary_cvt): Do it.

2015-05-28  Werner Lemberg  <wl@gnu.org>

	* src/tools/apinames.c (names_dump): Fix invalid reference.

	Problem reported by Guzman Mosqueda, Jose R
	<jose.r.guzman.mosqueda@intel.com>.

2015-05-24  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix commit from 2015-05-22.

	* src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
	with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.

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

2015-05-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix return values of GETINFO bytecode instruction.

	* src/truetype/ttinterp.h (TT_ExecContextRec): New fields
	`vertical_lcd' and `gray_cleartype'.

	* src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
	Change `symmetrical smoothing' to TRUE, since FreeType produces
	exactly this.

	* src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit
	values for symmetrical smoothing, namely 11/18.
	Handle bits for vertical LCD subpixels (8/15) and Gray ClearType
	(12/19).

2015-05-23  Werner Lemberg  <wl@gnu.org>

	[truetype] Minor.

	* src/truetype/ttinterp.h (TT_ExecContext):
	 s/subpixel/subpixel_hinting.

	* src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.

2015-05-22  Werner Lemberg  <wl@gnu.org>

	[truetype] Support selector index 3 of the INSTCTRL instruction.

	This flag activates `native ClearType hinting', disabling backwards
	compatibility mode as described in Greg Hitchcocks whitepaper.  In
	other words, it enables unrestricted functionality of all TrueType
	instructions in ClearType.

	* src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks'
	unconditionally.
	(tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of
	`GS.instruct_control' is active.

	* src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
	(Ins_GETINFO): Updated.

	* docs/CHANGES: Document it.

2015-05-20  Werner Lemberg  <wl@gnu.org>

	[truetype] Minor.

	* src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod'
	argument.

2015-05-17  Werner Lemberg  <wl@gnu.org>

	[truetype] Fix loading of composite glyphs.

	* src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the
	ARGS_ARE_XY_VALUES flag is not set, handle argument values as
	unsigned.  I trust `ttx' (which has exactly such code) that it does
	the right thing here...

	The reason that noone has ever noticed this bug is probably the fact
	that point-aligned subglyphs are rare, as are subglyphs with a
	number of points in the range [128;255], which is quite large (or
	even in the range [32768;65535], which is extremely unlikely).

2015-05-12  Chris Liddell  <chris.liddell@artifex.com>

	[cff] Make the `*curveto' operators more tolerant.

	* src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes
	`vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate,
	pulling values off the stack until the stack is exhausted.
	Implicitly the stack must be a multiple (or for subtly different
	behaviour) a multiple plus a specific number of extra values deep.
	If that's not the case, enforce it (as the old code did).

2015-05-12  Chris Liddell  <chris.liddell@artifex.com>

	[cff] fix incremental interface with new cff code.

	* src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental
	interface to retrieve glyph data for a SEAC, it be left to the
	incremental interface callback to apply the encoding to raw
	character index (as it was in the previous code).

2015-04-29  Alexei Podtelezhnikov <apodtele@gmail.com>

	[autofit] Speed up IUP.

	* src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to
	the same position from true interpolation, use `scale' to reduce
	divisions.

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

	[cff] Use `name' table for PS name if we have a SFNT-CFF.

	This follows the OpenType 1.7 specification.  See

	  http://tug.org/pipermail/tex-live/2015-April/036634.html

	for a discussion.

	* src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
	have an SFNT.

2015-04-27  Alexei Podtelezhnikov <apodtele@gmail.com>

	[truetype] Speed up IUP.

	* src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
	snapping to the same position from true interpolation.

2015-04-21  Werner Lemberg  <wl@gnu.org>

	[autofit] By default, enable warping code but switch off warping.

	Suggested by Behdad.

	* include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.

	* src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
	with `false'.

2015-04-21  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated.

2015-04-21  Werner Lemberg  <wl@gnu.org>

	[autofit] Introduce `warping' property.

	This code replaces the debugging hook from the previous commit with
	a better, more generic solution.

	* include/ftautoh.h: Document it.

	* src/autofit/afmodule.h (AF_ModuleRec)
	[AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.

	* src/autofit/afmodule.c (_af_debug_disable_warper): Remove.
	(af_property_set, af_property_get, af_autofitter_init)
	[AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option.

	* src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
	longer existing `_af_debug_disable_warper'.

	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
	(af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init)
	[AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the
	scaler flags if warping is off.

	* src/autofit/aftypes.h: Updated.

2015-04-16  Werner Lemberg  <wl@gnu.org>

	[autofit] Add debugging hook to disable warper.

	* src/autofit/afmodule.c (_af_debug_disable_warper)
	[FT_DEBUG_AUTOFIT]: New global variable.

	* src/autofit/aftypes.h: Updated.
	(AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).

	* src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.

	* src/autofi/aflatin.c (af_latin_hints_apply)
	[AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use
	of warper.

	* src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
	[AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.

	* src/autofit/aflatin2.c (af_latin2_hints_apply)
	[AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.

2015-04-10  Werner Lemberg  <wl@gnu.org>

	[cff] Update advance width handling to OpenType 1.7.

	Problem reported by Behdad.

	* src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
	separately.

	* src/cff/cffgload.c (cff_slot_load): Use advance width and side
	bearing values from `hmtx' table if present.

2015-04-03  Alexei Podtelezhnikov <apodtele@gmail.com>

	* src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop.

2015-04-02  Alexei Podtelezhnikov <apodtele@gmail.com>

	* src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic.

2015-04-01  Alexei Podtelezhnikov <apodtele@gmail.com>

	[autofit] Finish the thought.

	* src/autofit/afhints.c (af_direction_compute): make sure the long arm
	is never negative so that its `FT_ABS' is not necessary.

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

	[autofit] Call dumper functions for tracing.

	* src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code.
	* src/autofit/afhints.c (af_glyph_hints_dump_points): Minor
	improvement.
	* src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it.

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

	[autofit] Make debugging stuff work again.

	The interface to ftgrid was broken in the series of commits starting
	with

	  [autofit] Allocate AF_Loader on the stack instead of AF_Module.

	from 2015-01-14.

	* src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]:
	Use a global AF_GlyphHintsRec object for debugging.
	(af_autofitter_done, af_autofitter_load_glyph): Updated.

	* src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.

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

	* src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko.

2015-03-29  Werner Lemberg  <wl@gnu.org>

	[cff] Fix Savannah bug #44629.

	* src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
	(CFF_MAX_SUBRS_CALLS): Set to 16.

2015-03-29  Werner Lemberg  <wl@gnu.org>

	[type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.

	This commit allows `num_coords' to be larger or smaller than the
	number of available axes while selecting a design instance, either
	ignoring excess data or using defaults if data is missing.

	* src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
	Implement it.

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

2015-03-29  Werner Lemberg  <wl@gnu.org>

	[type1] Minor.

	* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use
	FT_THROW.
	(T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW.

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

	[cff] Trace charstring nesting levels.

	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
	cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.

	* src/cff/cffgload.c (cff_decoder_parse_charstrings)
	<cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.

2015-03-21  Alexei Podtelezhnikov <apodtele@gmail.com>

	[base] Optimize `FT_Angle_Diff'.

	Under normal circumstances we are usually close to the desired range
	of angle values, so that the remainder is not really necessary.

	* src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.

	* src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.

2015-03-21  Werner Lemberg  <wl@gnu.org>

	[truetype] Improve `gvar' handling.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle
	single-element runs.  Cf. glyph `Q' in Skia.ttf with weights larger
	than the default.

2015-03-20  Alexei Podtelezhnikov <apodtele@gmail.com>

	* src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring.

2015-03-17  Alexei Podtelezhnikov <apodtele@gmail.com>

	Fix Savannah bug #44412 (part 2).

	* src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.

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

	[autofit] Add support for Arabic script.

	Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!

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

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

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

	* src/autofit/afranges.c: Add Arabic data.

	* src/autofit/afstyles.h: Add Arabic data.

	* docs/CHANGES: Document it.

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

	Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.

	* include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
	to...
	(FT_SERVICE_FONT_FORMAT_H): This.

	* include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
	to ...
	(FT_FONT_FORMAT_*): This.

	src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
	src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c,
	src/truetype/ttdriver.c, src/type1/t1driver.c,
	src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated.

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

	[base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.

	* include/config/ftheader.h: Implement it.
	* src/base/ftfntfmt.c, docs/CHANGES: Updated.

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

	[base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.

	* include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.

	* docs/CHANGES: Updated.

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

	Fix automatic copyright updating.

	* src/tools/update-copyright: Make scanning of `no-copyright'
	actually work.

	* src/tools/no-copyright: Don't include README in general.

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

	Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.

	CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4,
	builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
	builds/mac/FreeType.m68k_far.make.txt,
	builds/mac/FreeType.ppc_carbon.make.txt,
	builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf,
	builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
	builds/wince/vc2008-ce/freetype.vcproj,
	builds/windows/vc2005/freetype.vcproj,
	builds/windows/vc2008/freetype.vcproj,
	builds/windows/vc2010/freetype.vcxproj,
	builds/windows/vc2010/freetype.vcxproj.filters,
	builds/windows/visualc/freetype.dsp,
	builds/windows/visualc/freetype.vcproj,
	builds/windows/visualce/freetype.dsp,
	builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY,
	include/config/ftheader.h, include/ftfntfmt.h, modules.cfg,
	src/base/ftfntfmt.c, vms_make.com: Updated.

2015-03-10  Alexei Podtelezhnikov <apodtele@gmail.com>

	Fix Savannah bug #44412 (part 1).

	* src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.

2015-03-10  Werner Lemberg  <wl@gnu.org>

	[base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.

	* include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
	Update all callers.

	* docs/CHANGES: Updated.

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

	* src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.

	Found by Alexei.

2015-03-05  Alexei Podtelezhnikov <apodtele@gmail.com>

	* src/base/ftstroke.c: Simplify.

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

	[truetype] Some fixes and code refactoring in `ttgxvar.c'.

	* src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value
	of `point_cnt' if two bytes are read.
	Use a more vertical coding style.
	(ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter.
	Use a more vertical coding style.

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

	[autofit] Fix Savannah bug #44241.

	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
	with less than 3 points.

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

	Simplify `TYPEOF' macro.

	No need for two arguments.

	* include/config/ftconfig.h, builds/unix/ftconfig.in,
	builds/vms/ftconfig.h (TYPEOF): Updated.

	* include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
	src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.

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

	Various compiler warning fixes for `make multi'.

	* src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges),
	src/autofit/aflatin.c (af_latin_hint_compute_blue_edges,
	af_latin_hint_edges), src/autofit/aflatin2.c
	(af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare
	as `static'.

	* src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH):
	Removed.  Unused.
	* src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H.
	* src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed.  Unused.

	* src/cff/cf2intrp.c: Include `cf2intrp.h'.
	* src/cff/cffdrivr.c (PAIR_TAG): Removed.  Unused.

	* src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed.  Unused.

	* src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.

	* src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
	Removed.  Unused.

	* src/raster/ftraster.c (Render_Glyph): Declare as `static'.

	* src/sfnt/ttpost.c (load_format_20): Fix signedness warning.

	* src/truetype/ttdriver.c (PAIR_TAG): Removed.  Unused.
	* src/truetype/ttsubpix.c (is_member_of_family_class,
	is_member_of_style_class): Declare as `static'.

	* src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare
	as `static'.
	* src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as
	`static'.
	(T1_FIELD_COUNT): Removed.  Unused.
	* src/type1/t1parse.h (T1_Done_Table): Removed.  Unused.

	* src/type42/t42parse.c (T1_Done_Table): Removed.  Unused.

2015-02-25  Werner Lemberg  <wl@gnu.org>

	[psaux] Signedness fixes.

	* include/internal/psaux.h, src/psaux/afmparse.c,
	src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c,
	src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply.

2015-02-25  Werner Lemberg  <wl@gnu.org>

	[otvalid] Signedness fixes.

	* src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
	src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
	Apply.

2015-02-25  Werner Lemberg  <wl@gnu.org>

	* src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix.

2015-02-25  Werner Lemberg  <wl@gnu.org>

	[lzw] Signedness fixes.

	* src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.

2015-02-25  Werner Lemberg  <wl@gnu.org>

	[gxvalid] Signedness fixes.

	* src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
	src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c,
	src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
	src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c,
	src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c,
	src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c,
	src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply.

2015-02-25  Werner Lemberg  <wl@gnu.org>

	[cache] Signedness fixes.

	* src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
	src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.

2015-02-25  Werner Lemberg  <wl@gnu.org>

	Change dimension fields in `FTC_ImageTypeRec' to unsigned type.

	This doesn't break ABI.

	* include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
	`width' and `height'.

	* docs/CHANGES: Document it.

2015-02-25  Werner Lemberg  <wl@gnu.org>

	[cache] Don't use `labs'.

	This is the only place in FreeType where this function was used.

	* include/config/ftstdlib.h (ft_labs): Remove.

	* src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
	`FT_ABS'.

2015-02-23  Werner Lemberg  <wl@gnu.org>

	[cache] Replace `FT_PtrDist' with `FT_Offset'.

	* src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t')
	is a better choice for `hash' to hold a pointer than `FT_PtrDist'
	(a.k.a. `ptrdiff_t'), especially since the latter is signed,
	causing zillions of signedness warnings.  [Note that `hash' was of
	type `FT_UInt32' before the change to `FT_PtrDist'.]
	Update all users.

	* src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
	src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.

2015-02-23  Werner Lemberg  <wl@gnu.org>

	[smooth, raster] Re-enable standalone compilation.

	* src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
	[_STANDALONE_]: Define macros.

	* src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
	FT_HYPOT) [_STANDALONE_]: Define macros.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[smooth] Signedness fixes.

	* src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	* src/raster/ftraster.c: Use the file's typedefs everywhere.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	* src/sfnt/ttpost.c (load_format_20): Fix error tracing message.

	Bug introduced 6 commits earlier.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[pshinter] Fix thinko.

	* src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
	check `count'.
	Bug introduced two commits earlier.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[raster] Signedness fixes.

	* src/raster/ftraster.c, src/raster/ftrend1.c: Apply.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[pshinter] Signedness fixes.

	* src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
	src/pshinter/pshrec.c: Apply.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[pshinter] Use macros for (unsigned) flags, not enumerations.

	* src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
	Updated.
	* src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	* src/pshinter/pshrec.c: Simplify.
	(ps_hints_open, ps_hints_stem): Remove switch statement.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[sfnt] Signedness fixes.

	* src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c,
	src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
	src/sfnt/ttsbit.c: Apply.
	* src/sfnt/sfdriver.c: Apply.
	(sfnt_get_ps_name): Simplify.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[bdf] Signedness fixes.

	* src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
	src/bdf/bdflib.c: Apply.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	* src/bdf/bdflib.c (_bdf_atous): New function.
	(_bdf_parse_glyphs, _bdf_parse_start): Use it.

2015-02-22  Werner Lemberg  <wl@gnu.org>

	[pcf] Signedness fixes.

	* src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply.
	* src/pcf/pcfread.c: Apply.
	(pcf_get_encodings): Ignore invalid negative encoding offsets.

2015-02-21  Werner Lemberg  <wl@gnu.org>

	* src/winfonts/winfnt.c: Signedness fixes.

2015-02-21  Werner Lemberg  <wl@gnu.org>

	[type42] Signedness fixes.

	* src/type42/t42parse.c, src/type42/t42parse.h,
	src/type42/t42types.h: Apply.

2015-02-21  Werner Lemberg  <wl@gnu.org>

	[pfr] Signedness fixes.

	* src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c,
	src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c,
	src/pfr/pfrtypes.h: Apply.

2015-02-21  Werner Lemberg  <wl@gnu.org>

	[cff] Minor signedness fixes related to last commit.

	* src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.

2015-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Thinkos in bias handling.

	Only the final result is always positive.

	Bug introduced three commits earlier.

	* src/cff/cffgload.c, src/cff/cffgload.h: Apply.

2015-02-20  Werner Lemberg  <wl@gnu.org>

	[cid] Fix signedness issues and emit some better error codes.

	* src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
	src/cid/cidparse.h: Apply.
	* src/cid/cidload.c: Apply.
	(parse_fd_array): Reject negative values for number of dictionaries.
	* src/cid/cidparse.c: Apply.
	(cid_parser_new): Reject negative values for hex data length.

2015-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Signedness fixes for new engine.

	* src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c,
	src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply.

2015-02-20  Werner Lemberg  <wl@gnu.org>

	[cff] Signedness fixes for basic infrastructure and old engine.

	* include/internal/pshints.h, src/cff/cffdrivr.c,
	src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c,
	src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply.

2015-02-19  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.

	This is hard-coded to value 2 in `fvar' version 1.0 (and no newer
	version exists), but some fonts set it incorrectly.

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

2015-02-19  Werner Lemberg  <wl@gnu.org>

	[cff] Emit better error code for invalid private dict size.

	* src/cff/cffparse.c (cff_parse_private_dict): Reject negative
	values for size and offset.

2015-02-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix signedness issues.

	* src/autofit/afangles.c, src/autofit/afcjk.c,
	src/autofit/afglobal.c, src/autofit/afhints.c,
	src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c,
	src/autofit/hbshim.c: Apply.

2015-02-19  Werner Lemberg  <wl@gnu.org>

	[autofit] Use macros for (unsigned) flags, not enumerations.

	This harmonizes with other code in FreeType (and reduces the number
	of necessary casts to avoid compiler warnings).

	* src/autofit/afblue.hin: Make flag macros unsigned.
	* src/autofit/afblue.h: Regenerated.

	* src/autofit/afcjk.h: Replace flag enumeration with macros.
	* src/autofit/afcjk.c: Updated.

	* src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
	macros.
	* src/autofit/afhints.c: Updated.

	* src/autofit/aflatin.h: Replace flag enumerations with macros.
	* src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.

	* src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.

2015-02-18  Werner Lemberg  <wl@gnu.org>

	[type1] Fix signedness issues.

	* include/internal/psaux.h, include/internal/t1types.h,
	src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c,
	src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply.

2015-02-18  Werner Lemberg  <wl@gnu.org>

	[psaux, type1] Fix minor AFM issues.

	* include/internal/t1types.h (AFM_KernPairRec): Make indices
	unsigned.
	Update users.
	(AFM_FontInfoRec): Make element counters unsigned.
	Update users.
	* src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned
	int.

	* src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
	Reject negative values for number of kerning elements.

	* src/type1/t1afm.c, src/tools/test_afm.c: Updated.

2015-02-18  Werner Lemberg  <wl@gnu.org>

	Don't use `FT_PtrDist' for lengths.

	Use FT_UInt instead.

	* include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
	T1_DecoderRec): Do it.

	* include/internal/t1types.h (T1_FontRec): Ditto.

	* src/cid/cidload.c (cid_parse_dict): Updated.
	* src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto.
	* src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto.
	* src/type1/t1load.c (parse_blend_axis_types, parse_encoding,
	parse_chharstrings, parse_dict): Ditto.
	* src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings,
	t42_parse_dict): Ditto.

2015-02-18  Werner Lemberg  <wl@gnu.org>

	* src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
	This handles negative values better, avoiding many casts.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	[base] Fix Savannah bug #44284.

	* src/base/ftcalc.c (FT_MulFix): Typos.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	[truetype] Finish compiler warning fixes for signedness issues.

	* src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
	src/truetype/ttsubpix.h: Apply.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttsubpix.c: Adding missing `static' keywords.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	[truetype] More signedness fixes.

	* include/internal/tttypes.h, src/truetype/ttinterp.h,
	src/truetype/ttobjs.h, src/truetype/ttinterp.c,
	src/truetype/ttobjs.c: Apply.

2015-02-17  Werner Lemberg  <wl@gnu.org>

	[truetype] Various signedness fixes.

	* include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.

	* src/truetype/ttgload.c: Apply.
	(TT_Get_VMetrics): Protect against invalid ascenders and descenders
	while constructing advance height.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	[base] Finish compiler warning fixes for signedness issues.

	* src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
	Apply.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	* include/tttables.h (TT_OS2): `fsType' must be FT_UShort.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	More minor signedness warning fixes.

	* src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
	src/base/ftutil.c: Apply.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	Next round of minor compiler warning fixes.

	* include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member
	type to `FT_Long'.
	(CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword.

	* include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.

	* src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
	Signedess fixes.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	Various minor signedness fixes.

	* include/ftadvanc.h, include/internal/ftobjs.h,
	src/base/ftgloadr.c, src/base/ftobjs.c: Apply.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	New `TYPEOF' macro.

	This helps suppress signedness warnings, avoiding issues with
	implicit conversion changes.

	* include/config/ftconfig.h, builds/unix/ftconfig.in,
	builds/vms/ftconfig.h (TYPEOF): Define.

	* include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
	src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	* src/base/ftsystem.c: Use casts in standard C function wrappers.
	(ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #44261.

	* builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
	environment also while calling the configure script.

2015-02-16  Werner Lemberg  <wl@gnu.org>

	* include/internal/ftmemory.h: Add some `FT_Offset' casts.
	(FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY,
	FT_MEM_MOVE): Do it.

2015-02-15  Werner Lemberg  <wl@gnu.org>

	[base] Clean up signedness issues in `ftdbgmem.c'.

	Also fix other minor issues.

	* src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types
	with FT_Long for consistency.
	(ft_mem_primes): Change type to `FT_Int'.
	(ft_mem_closest_prime, ft_mem_table_set): Updated.

	(ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free,
	ft_mem_debug_realloc): Use `static' keyword and fix signedness
	warnings where necessary.

	(ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy,
	ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types
	and add or remove casts to avoid signedness warnings.

2015-02-15  Werner Lemberg  <wl@gnu.org>

	[base] Clean up signedness in arithmetic functions.

	This makes the code more readable and reduces compiler warnings.

	* src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix,
	FT_DivFix): Convert input parameters to unsigned, do the
	computation, then convert the result back to signed.
	(ft_corner_orientation): Fix casts.

2015-02-07  Werner Lemberg  <wl@gnu.org>

	[sfnt] Fix Savannah bug #44184.

	* src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No
	longer reject `htmx' and `vmtx' tables with invalid length but
	sanitize them.

2015-02-06  Jon Anderson  <jon@websupergoo.com>

	[truetype] Fix regression in the incremental glyph loader.

	* src/truetype/ttgload.c (load_truetype_glyph): For incremental
	fonts, the glyph index may be greater than the number of glyphs
	indicated, so guard the check with a preprocessor conditional.

2015-02-06  Werner Lemberg  <wl@gnu.org>

	[autofit] Fix potential memory leak.

	While this doesn't show up with FreeType, exactly the same code
	leaks with ttfautohint's modified auto-hinter code (which gets used
	in a slightly different way).

	It certainly doesn't harm since it is similar to already existing
	checks in the code for embedded arrays.

	* src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
	and `max_points' for all cases.

2015-01-31  Werner Lemberg  <wl@gnu.org>

	[autofit] Add support for Thai script.

	Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
	zone characters!

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

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

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

	* src/autofit/afranges.c: Add Thai data.

	* src/autofit/afstyles.h: Add Thai data.

2015-01-23  Behdad Esfahbod  <behdad@behdad.org>

	[raster] Handle `FT_RASTER_FLAG_AA' correctly.

	This fixes a breakage caused by the commit `[raster] Remove
	5-level gray AA mode from monochrome rasterizer.'.

	Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>.

	* src/raster/ftraster.c (ft_black_render): Handle
	`FT_RASTER_FLAG_AA'.

	* src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
	remnants.

2015-01-18  Werner Lemberg  <wl@gnu.org>

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

2015-01-18  Chris Liddell  <chris.liddell@artifex.com>

	[raster] Fix Savannah bug #44022.

	Add fallback for glyphs with degenerate bounding boxes.

	If a glyph has only one very narrow feature, the bbox can end up
	with either the width or height of the bbox being 0, in which case
	no raster memory is allocated and no attempt is made to render the
	glyph.  This is less than ideal when the drop-out compensation in
	the rendering code would actually result in the glyph being
	rendered.

	This problem can be observed with the `I' glyph (gid 47) in the
	Autodesk RomanS TrueType font.

	* src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either
	dimension is zero to explicitly round up/down (instead of simply
	round).

2015-01-17  Werner Lemberg  <wl@gnu.org>

	Add some tools to handle yearly copyright notice updates.

	We are now following the GNU guidelines: A new release automatically
	means that the copyright year of all affected files gets updated; it
	is no longer used to track years of modification changes.

	* src/tools/update-copyright-year: New Perl script.
	* src/tools/update-copyright: New shell script that calls
	`update-copyright-year' on all files.
	* src/tools/no-copyright: Exceptions that should not be handled by
	`update-copyright'

2015-01-14  Werner Lemberg  <wl@gnu.org>

	* docs/CHANGES: Updated, using a description from Behdad.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	* src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Add embedded array of segments and edges.

	Avoids multiple mallocs per typical glyphs.

	With this and recent changes to avoid mallocs, the thread-safe
	stack-based loader is now as fast as the previous model that had one
	cached singleton.

	* src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
	New macros.
	(AF_AxisHintsRec): Add two arrays for segments and edges.

	* src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate
	data if number of segments exceeds given threshold value.
	(af_axis_hints_new_edge):  Only allocate data if number of edges
	exceeds given threshold value.
	(af_glyph_hints_done): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Add embedded arrays for points and contours.

	This avoids at least two malloc calls for typical glyphs.

	* src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
	New macros.
	(AF_GlyphHintsRec): Add two arrays for contours and points.

	* src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done):
	Updated.
	(af_glyph_hints_reload): Only allocate data if number of contours or
	points exceeds given threshold values.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Allocate hints object on the stack.

	This avoids one malloc per load.

	* src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
	`AF_GlyphHints'.
	Update prototype.

	* src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints'
	parameter instead of `FT_Memory'.
	(af_loader_done): Directly reset `load_hints'.
	(af_loader_load_g): Updated.

	* src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
	`hints' object.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Reuse slot glyph loader.

	No need to create a new glyph loader; we can reuse the one from
	`slot->internal->loader'.  It's hard to tell why it was written that
	way originally, but new code looks sound and correct to me, and
	avoids lots of allocations.

	* src/autofit/afloader.c (af_loader_init): Change return type to
	`void'.
	Don't call `FT_GlyphLoader_New'.
	(af_loader_reset): Don't call `FT_GlyphLoader_Rewind'.
	(af_loader_load_g): Update code to use `internal->loader', which
	doesn't need copying of data.

	* src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member.
	Update prototype.

	* src/autofit/afmodule.c (af_autofitter_load_glyph): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Remove (unused) support for composite glyphs.

	We never have to deal with composite glyphs in the autohinter, as
	those will be loaded into FORMAT_OUTLINE by the recursed
	`FT_Load_Glyph' function.

	In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply
	FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies
	FT_LOAD_NO_HINTING:

	  /* resolve load flags dependencies */

	  if ( load_flags & FT_LOAD_NO_RECURSE )
	    load_flags |= FT_LOAD_NO_SCALE         |
	                  FT_LOAD_IGNORE_TRANSFORM;

	  if ( load_flags & FT_LOAD_NO_SCALE )
	  {
	    load_flags |= FT_LOAD_NO_HINTING |
	                  FT_LOAD_NO_BITMAP;

	    load_flags &= ~FT_LOAD_RENDER;
	  }

	and as such the auto-hinter is never called.  Thus, the recursion in
	`af_loader_load_g' never actually happens.  So remove the depth
	counter as well.

	* src/autofit/afloader.c (af_loader_load_g): Remove `depth'
	parameter.
	<FT_GLYPH_FORMAT_COMPOSITE>: Remove associated code.
	(af_loader_load_glyph): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[raster] Fix uninitialized memory access.

	Apparently `ras.cProfile' might be uninitialized.  This will be the
	case if `ras.top == ras.cProfile->offset', as can be seen in
	`End_Profile'.  The overshoot code introduced in a change `Fix B/W
	rasterization of subglyphs with different drop-out modes.' (from
	2009-06-18) violated this, accessing `ras.cProfile->flags'
	unconditionally just before calling `End_Profile' (which then
	detected that `cProfile' is uninitialized and didn't touch it).

	This was harmless, and was not detected by valgrind before because
	the objects were allocated on the `raster_pool', which was always
	initialized.  With recent change to allocate raster buffers on the
	stack, valgrind now reported this invalid access.

	* src/raster/ftraster.c (Convert_Glyph): Don't access an
	uninitialized `cProfile'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[smooth] Fix uninitialized memory access.

	Looks like `ras.span_y' could always be used without initialization.
	This was never detected by valgrind before because the library-wide
	`raster_pool' was used for the worker object and `raster_pool' was
	originally zero'ed.  But subsequent reuses of it were using `span_y'
	uninitialized.  With the recent change to not use `render_pool' and
	allocate worker and buffer on the stack, valgrind now detects this
	uninitialized access.

	* src/smooth/ftgrays.c (gray_raster_render): Initialize
	`ras.span_y'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[base] Don't initialize unused `driver->glyph_loader'.

	* src/base/ftobjs.c (Destroy_Driver): Don't call
	`FT_GlyphLoader_Done'.
	(FT_Add_Module): Don't call `FT_GlyphLoader_New'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[base] Don't allocate `library->raster_pool' anymore.

	It's unused after the following commits:

	  [raster] Allocate render pool for mono rasterizer on the stack.
	  [raster] Remove 5-level gray AA mode from monochrome rasterizer.

	The value of FT_RENDER_POOL_SIZE still serves the purpose it used to
	serve, which is, to adjust the pool size.  But the pool is now
	allocated on the stack on demand.

	* src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[base] Do not reorder library->renderers upon use.

	Instead of keeping `library->renderers' in a MRU order, just leave
	it as-is.  The MRU machinery wasn't thread-safe.

	With this patch, rasterizing glyphs from different faces from
	different threads doesn't fail choosing rasterizer
	(FT_Err_Cannot_Render_Glyph).

	Easiest to see that crash was to add a `printf' (or otherwise let
	thread yield in FT_Throw with debugging enabled).

	* src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
	(FT_Outline_Render): Don't call `FT_Set_Renderer'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[raster] Allocate render pool for mono rasterizer on the stack.

	Instead of using the `render_pool' member of `FT_Library' that is
	provided down to the rasterizer, completely ignore that and allocate
	needed objects on the stack instead.

	With this patch, rasterizing glyphs from different faces from
	different threads doesn't crash in the monochrome rasterizer.

	* src/raster/ftraster.c (black_TRaster): Remove `buffer',
	`buffer_size', and `worker' members.

	(ft_black_render): Create `buffer' locally.
	(ft_black_reset): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[raster] Remove 5-level gray AA mode from monochrome rasterizer.

	It was off by default and couldn't be turned on at runtime.  And the
	smooth rasterizer superceded it over ten years ago.  No point in
	keeping.  Comments suggested that it was there for compatibility
	with FreeType 1.

	550 lines down.

	* src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING,
	RASTER_GRAY_LINES): Remove macros and all associated code.

	(black_TWorker): Remove `gray_min_x' and `gray_max_x'.
	(black_TRaster): Remove `grays' and `gray_width'.

	(Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop,
	ft_black_render): Updated.

	* src/raster/ftrend1.c (ft_raster1_render): Simplify code.
	(ft_raster5_renderer_class): Removed.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[smooth] Allocate render pool for smooth rasterizer on the stack.

	Instead of using the `render_pool' member of `FT_Library' that is
	provided down to the rasterizer, completely ignore that and allocate
	needed objects on the stack instead.

	With this patch, rasterizing glyphs from different faces from
	different threads doesn't crash in the smooth rasterizer.

	Bugs:

	  https://bugzilla.redhat.com/show_bug.cgi?id=678397
	  https://bugzilla.redhat.com/show_bug.cgi?id=1004315
	  https://bugzilla.redhat.com/show_bug.cgi?id=1165471
	  https://bugs.freedesktop.org/show_bug.cgi?id=69034

	* src/smooth/ftgrays.c (gray_TRaster): Remove `buffer',
	`buffer_size', `band_size', and `worker' members.

	(gray_raster_render): Create `buffer', `buffer_size', and
	`band_size' locally.
	(gray_raster_reset): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.

	Previously the code had stipulation for using a per-TT_Size exec
	context if `size->debug' was true.  But there was no way that
	`size->debug' could *ever* be true.  As such, the code was always
	using the singleton `TT_ExecContext' that was stored in `TT_Driver'.
	This was, clearly, not threadsafe.

	With this patch, loading glyphs from different faces from different
	threads doesn't crash in the bytecode loader code.

	* src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member.
	(TT_DriverRec): Remove `context' member.

	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove
	`TT_ExecContext' code related to a global `TT_Driver' object.

	(tt_driver_done): Don't remove `TT_ExecContext' object here but ...
	(tt_size_done_bytecode): ... here.

	(tt_driver_init): Don't create `TT_ExecContext' object here but ...
	(tt_size_init_bytecode): ... here, only on demand.

	* src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug
	code.
	(TT_New_Context): Remove `TT_ExecContext' code related to a global
	`TT_Driver' object.

	* src/truetype/ttinterp.h: Updated.

	* src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	[autofit] Allocate AF_Loader on the stack instead of AF_Module.

	Stop sharing a global `AF_Loader'.  Allocate one on the stack during
	glyph load.

	Right now this results in about 25% slowdown, to be fixed in a
	following commit.

	With this patch loading glyphs from different faces from different
	threads doesn't immediately crash in the autohinting loader code.

	Bugs:

	  https://bugzilla.redhat.com/show_bug.cgi?id=1164941

	* src/autofit/afloader.c (af_loader_init): Pass
	`AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments.
	(af_loader_reset, af_loader_load_glyph): Also pass `loader' as
	argument.
	(af_loader_done): Use `AF_Loader' instead of `AF_Module' as
	argument.

	* src/autofit/afmodule.c (af_autofitter_init): Don't call
	`af_loader_init'.
	(af_autofitter_done): Don't call `af_loader_done'.
	(af_autofitter_load_glyph): Use a local `AF_Loader' object.

	* src/autofit/afloader.h: Include `afmodule.h'.
	Update prototypes.
	Move typedef for `AF_Module' to...

	* src/autofit/afmodule.h: ... this place.
	No longer include `afloader.h'.

2015-01-14  Behdad Esfahbod  <behdad@behdad.org>

	* src/type42/t42objs.h (T42_DriverRec): Remove unused member.

2015-01-12  Werner Lemberg  <wl@gnu.org>

	Fix Savannah bug #43976.

	Assure that FreeType's internal include directories are found before
	`CPPFLAGS' (which might be set by the user in the environment), and
	`CPPFLAGS' before `CFLAGS'.

	* builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'.
	(FT_COMPILE): Make this a special variable for compiling only the
	files handled in `freetype.mk'.
	(.c.$O): Removed, unused.

	* src/*/rules.mk (*_COMPILE): Fix order of include directories.

2015-01-11  Werner Lemberg  <wl@gnu.org>

	[truetype] Prettyfing.

	* src/truetype/ttinterp.c (project, dualproj, fast_project,
	fast_dualproj): Rename to...
	(PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this.

2015-01-11  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify.

	Based on a patch from Behdad.

2015-01-11  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call.

2015-01-11  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (Normalize): Remove unused argument.

2015-01-11  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	* src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by
	expansion.

2015-01-11  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	* src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion,
	adjusting funtion calls where necessary.
	(FT_UNUSED_ARG): Removed, no longer needed.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	Based on a patch from Behdad.

	* src/truetype/ttinterp.c (DO_*): Expand macros into corresponding
	`Ins_*' functions.
	(TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls.
	(ARRAY_BOUND_ERROR): Remove second definition, which is no longer
	needed.
	(Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with...
	(Ins_SxyTCA): New function.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH.

	Behdad suggested this code simplification, and nobody objected...

	* include/config/ftoption.h, devel/ftoption.h
	(TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove.

	* src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]:
	Remove related code.
	(ARRAY_BOUND_ERROR): Use do-while loop.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	* src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_,
	EXEC_ARG): Remove by replacing with expansion.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	Based on a patch from Behdad.

	* src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize,
	SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move,
	CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem,
	CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt,
	CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round,
	COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing
	with expansion.

	(Cur_Func_project, CUR_Func_dualproj, CUR_fast_project,
	CUR_fast_dualproj): Replace with macros `project', `dualproj',
	`fast_project', `fast_dualproj'.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] More macro expansions.

	* src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing
	with expansion.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	[truetype] Remove code for static TrueType interpreter.

	This is a follow-up patch.

	* src/truetype/ttinterp.c, src/truetype/ttinterp.h
	[TT_CONFIG_OPTION_STATIC_INTERPRETER,
	TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code.

2015-01-10  Werner Lemberg  <wl@gnu.org>

	* src/truetype/ttinterp.c (CUR): Remove by replacing with expansion.

	This starts a series of patches that simplifies the code of the
	bytecode interpreter.


----------------------------------------------------------------------------

Copyright 2015 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:
