Bug 1708422: part 9) Declare `mozInlineSpellChecker::ShouldSpellCheckNode` `static...
[gecko.git] / modules / freetype2 / ChangeLog.26
bloba4fc060631b5a80102aeab92d72d4e0abd6d1b6b
1 2016-07-12  Werner Lemberg  <wl@gnu.org>
3         * Version 2.6.5 released.
4         =========================
7         Tag sources with `VER-2-6-5'.
9         This commit immediately follows `[mac] Fix ftexport.sym target in
10         Jamfile.' on a separate branch, which was then merged with master
11         after the release.
13         * include/freetype/config/ftoption.h
14         (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Comment out.
16         * docs/VERSION.TXT: Add entry for version 2.6.5.
18         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
19         builds/windows/vc2005/index.html,
20         builds/windows/vc2008/freetype.vcproj,
21         builds/windows/vc2008/index.html,
22         builds/windows/vc2010/freetype.vcxproj,
23         builds/windows/vc2010/index.html,
24         builds/windows/visualc/freetype.dsp,
25         builds/windows/visualc/freetype.vcproj,
26         builds/windows/visualc/index.html,
27         builds/windows/visualce/freetype.dsp,
28         builds/windows/visualce/freetype.vcproj,
29         builds/windows/visualce/index.html,
30         builds/wince/vc2005-ce/freetype.vcproj,
31         builds/wince/vc2005-ce/index.html,
32         builds/wince/vc2008-ce/freetype.vcproj,
33         builds/wince/vc2008-ce/index.html: s/2.6.4/2.6.5/, s/264/265/.
35         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
37         * builds/unix/configure.raw (version_info): Set to 18:5:12.
38         * CMakeLists.txt (VERSION_PATCH): Set to 5.
40         * docs/CHANGES: Updated.
42 2016-07-11  Werner Lemberg  <wl@gnu.org>
44         Conditionally compile environment support.
46         * include/freetype/internal/ftobjs.h, src/autofit/afmodule.c,
47         src/base/ftobjs.c, src/cff/cffdrivr.c, src/truetype/ttdriver.c:
48         Decorate with `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES' where
49         necessary.
51 2016-07-11  Werner Lemberg  <wl@gnu.org>
53         Handle properties in `FREETYPE_PROPERTIES' environment variable.
55         This commit covers the most important one.
57         * src/autofit/afmodule.c (af_property_set): Handle `warping',
58         `darkening-parameters', and `no-stem-darkening'.
60         * src/cff/cffdrivr.c (cff_property_set): Handle
61         `darkening-parameters', `hinting-engine', and `no-stem-darkening'.
63         * src/truetype/ttdriver.c (tt_property_set): Handle
64         `interpreter-version'.
66 2016-07-11  Werner Lemberg  <wl@gnu.org>
68         Replace calls to `atol' with `strtol'.
70         We later on need strtol's `endptr' feature.
72         * include/freetype/config/ftstdlib.h (ft_atol): Replace with...
73         (ft_strtol): ... this.
75         * src/base/ftdbgmem.c (ft_mem_debug_init): Updated.
76         * src/cid/cidparse.c (cid_parser_new): Ditto.
77         * src/type42/t42drivr.c (t42_get_name_index), src/type42/t42objs.c
78         (T42_GlyphSlot_Load): Ditto.
80 2016-07-10  Werner Lemberg  <wl@gnu.org>
82         Implement handling of `FREETYPE_PROPERTIES' environment variable.
84         Recognizing properties follows in another commit.
86         * devel/ftoption.h, include/freetype/config/ftoption.h
87         (FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES): New macro.
89         * include/freetype/config/ftstdlib.h (ft_getenv): New macro.
91         * src/base/ftinit.c (ft_set_default_properties): New function to
92         parse `FREETYPE_PROPERTIES' and calling `ft_property_string_set'.
93         (FT_Init_FreeType): Updated.
95 2016-07-09  Werner Lemberg  <wl@gnu.org>
97         Add function `ft_property_string_set'.
99         This is a preparation for handling an `FREETYPE_PROPERTIES'
100         environment variable to control (some) driver properties.
102         No change in functionality.
104         * src/base/ftobjs.c (ft_property_do): Add `value_is_string'
105         parameter.
106         (ft_property_string_set): New function.
107         (FT_Property_Set, FT_Property_Get): Updated.
109         * include/freetype/internal/ftobjs.h: Updated.
111         * include/freetype/internal/services/svprop.h
112         (FT_Properties_SetFunc): Add `value_is_string' parameter.
114         * src/autofit/afmodule.c (af_property_set), src/cff/cffdrivr.c
115         (cff_property_set), src/truetype/ttdriver.c (tt_property_set):
116         Updated, emitting an error currently if `value_is_string' is set.
118 2016-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
120         [mac] Fix ftexport.sym target in Jamfile.
122         * Jamfile: Update the directories of the header files scanned for
123         ftexport.sym.  They were incorrect since the migration of the
124         header files, on 2015-06-22.  Either inexisting include/cache
125         (removed on 2006-03-20) is not needed to be listed explicitly.
126         Now ftmac.h is scanned only in the case of Mac OS & Mac OS X.
128 2016-07-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
130         [smooth] Sub-banding protocol revision.
132         Rasterization sub-banding is utilized at large sizes while using a
133         rather small fixed memory pool.  Indeed it is possible to make an
134         educated guess how much memory is necessary at a given size for a
135         given glyph.  It turns out that, for a large majority of European
136         glyphs, you should store about 8 times more boundary pixels than
137         their height.  Or, vice versa, if your memory pool can hold 800
138         pixels the band height should be 100 and you should sub-band
139         anything larger than that.  Should you still run out of memory,
140         FreeType bisects the band but you have wasted some time.  This is
141         what has been implemented in FreeType since the beginning.
143         It was overlooked, however, that the top band could grow to twice
144         the default band size leading to unnecessary memory overflows there.
145         This commit fixes that.  Now the bands are distributed more evenly
146         and cannot exceed the default size.
148         Now the magic number 8 is really suitable for rather simple European
149         scripts.  For complex Chinese logograms the magic number should be
150         13 but that is subject for another day.
152         * src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding
153         protocol.
155 2016-07-07  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
157         [mac] Fix Savannah bug #48417.
159         Mac OS X linker throws errors when `-exported_symbol_list' input
160         file includes non-existing symbols.  Reported by Ryan Schmidt.
162         * builds/exports.mk: Exclude ftmac.h from the headers for apinames
163         by default.  Include it when ftmac.c would be compiled.
165 2016-07-06  Werner Lemberg  <wl@gnu.org>
167         * src/truetype/ttinterp.c (TInstruction_Function): Removed, unused.
169 2016-07-05  Werner Lemberg  <wl@gnu.org>
171         * Version 2.6.4 released.
172         =========================
175         Tag sources with `VER-2-6-4'.
177         * docs/VERSION.TXT: Update documentation and bump version number to
178         2.6.4.
180         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
181         builds/windows/vc2005/index.html,
182         builds/windows/vc2008/freetype.vcproj,
183         builds/windows/vc2008/index.html,
184         builds/windows/vc2010/freetype.vcxproj,
185         builds/windows/vc2010/index.html,
186         builds/windows/visualc/freetype.dsp,
187         builds/windows/visualc/freetype.vcproj,
188         builds/windows/visualc/index.html,
189         builds/windows/visualce/freetype.dsp,
190         builds/windows/visualce/freetype.vcproj,
191         builds/windows/visualce/index.html,
192         builds/wince/vc2005-ce/freetype.vcproj,
193         builds/wince/vc2005-ce/index.html,
194         builds/wince/vc2008-ce/freetype.vcproj,
195         builds/wince/vc2008-ce/index.html: s/2.6.3/2.6.4/, s/263/264/.
197         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
199         * builds/unix/configure.raw (version_info): Set to 18:4:12.
200         * CMakeLists.txt (VERSION_PATCH): Set to 4.
202         * docs/CHANGES: Updated.
204 2016-07-05  Werner Lemberg  <wl@gnu.org>
206         * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning.
208 2016-07-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
210         [smooth] Variable type revision (part 2).
212         * src/smooth/ftgrays.c (TArea): Restore original definition as `int'.
213         (gray_render_line) [FT_LONG64]: Updated.
214         (gray_convert_glyph): 32-bit band bisection stack should be 32 bands.
215         (gray_convert_glyph_inner): Trace successes and failures.
217 2016-07-04  Werner Lemberg  <wl@gnu.org>
219         [autofit] Handle single-point contours as segments.
221         Doing so allows us to link them to edges – some fonts like
222         `NotoSansGurmukhi-Regular' have such isolated points sitting exactly
223         on other outlines.
225         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Don't
226         ignore one-point contours but handle them specially as one-point
227         segments.
228         (af_latin_hints_compute_edges): Append one-point segments to edges
229         if possible.
231 2016-07-02  Werner Lemberg  <wl@gnu.org>
233         [autofit] Remove unused structure members.
235         * src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove
236         `num_linked'.
238         * src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated.
240 2016-07-02  Werner Lemberg  <wl@gnu.org>
242         [autofit] Update to Unicode 9.0.0.
244         * src/autofit/afranges.c (af_arab_nonbase_uniranges,
245         af_cyrl_uniranges): Add new data.
247 2016-07-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
249         [smooth] Variable type revision (part 1).
251         This patch restores original `TCoord' definition as `int' so that the
252         rendering pool is used more efficiently on LP64 platforms (unix).
254         * src/smooth/ftgrays.c (gray_TWorker, TCell, gray_TBand): Switch some
255         fields to `TCoord'.
256         (gray_find_cell, gray_render_scanline, gray_render_line, gray_hline,
257         gray_sweep, gray_convert_glyph): Updated.
259 2016-06-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
261         [smooth] Minor clean-ups.
263         * src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'.
264         (gray_sweep, gray_convert_glyph, gray_dump_cells): Updated.
266 2016-06-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
268         [smooth] Minor clean-ups.
270         * src/smooth/ftgrays.c (gray_convert_glyph): Do not use volatile
271         qualifier.
272         (gray_raster_render): Move span initializations from here.
273         (gray_sweep): ... to here and remove unused `target' argument.
275 2016-06-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
277         [pcf] Fix handling of very large fonts (#47708).
279         * src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an
280         unsigned short.
281         Only reject `0xFFFF' as an invalid encoding offset.
283 2016-06-25  Werner Lemberg  <wl@gnu.org>
285         [truetype] Really fix deallocation in case of error (#47726).
287         * src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize
288         `outline.points' also.
290 2016-06-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
292         [smooth] Consolidate memory management.
294         * src/smooth/ftgrays.c (gray_init_cells): Remove function.
295         (gray_TWorker): Remove fields that become local variables.
296         (gray_raster_render): Move rendering buffer declaration from here.
297         (gray_convert_glyph): ... to here and update accordingly.
299 2016-06-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
301         [smooth] Consolidate boundary checks.
303         Removing the checks from `gray_hline' shaves 1% off rendering speed.
305         * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_MIN' and `FT_MAX'.
306         (gray_TWorker): No need to store `clip_box'.
307         (gray_hline): Remove unnecessary boundary checks.
308         (gray_convert_glyph): Move boundary checks from here.
309         (gray_raster_render): ... to here and consolidate.
311 2016-06-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
313         [smooth] Use `FT_Outline_Get_CBox'.
315         * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_Outline_Get_CBox'.
316         (gray_compute_cbox): Remove this function.
317         (gray_convert_glyph): Update to use `FT_Outline_Get_CBox'.
319 2016-06-20  Werner Lemberg  <wl@gnu.org>
321         [smooth] Remove compiler warnings.
323         * src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang.
325 2016-06-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
327         [smooth] Sanitize memory management.
329         * src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up.
331 2016-06-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
333         [smooth] Remove `band_shoot' that never worked.
335         * src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'.
336         (gray_convert_glyph): Updated.
338 2016-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
340         [raster, smooth] Handle FT_RENDER_POOL_SIZE better.
342         * src/raster/ftraster.c (FT_MAX_BLACK_POOL): New macro.
343         (ft_black_render): Updated.
344         * src/smooth/ftgrays.c (FT_MAX_GRAY_POOL): New macro.
345         (gray_raster_render): Updated.
347 2016-06-16  Werner Lemberg  <wl@gnu.org>
349         * src/base/md5.c: Updated to recent version.
351 2016-06-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
353         * src/smooth/ftgrays.c (gray_hline): Optimize if-condition.
355 2016-06-13  Werner Lemberg  <wl@gnu.org>
357         [autofit] Add support for Cherokee script.
359         * src/autofit/afblue.dat: Add blue zone data for Cherokee.
361         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
363         * src/autofit/afscript.h: Add Cherokee standard characters.
365         * src/autofit/afranges.c: Add Cherokee data.
367         * src/autofit/afstyles.h: Add Cherokee data.
369 2016-06-09  David Capello  <davidcapello@gmail.com>
371         [cmake] Avoid modifying `ftconfig.h' and `ftoption.h' files.
373         * CMakeLists.txt: Each time cmake is run those files are
374         modified and the whole FreeType library is recompiled.  With this
375         change we change the files only if there are real modifications, so
376         we can avoid recompilations.
378 2016-06-09  Werner Lemberg  <wl@gnu.org>
380         [bdf] Check number of properties (#48166).
382         * src/bdf/bdflib.c (_bdf_parse_start): Implement.
384 2016-06-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
386         [smooth] Re-enable new line renderer on 64-bit archs.
388         * src/smooth/ftgrays.c (gray_render_line): Conditionally re-enable new
389         implementation, where it is safe from overflows.
391 2016-06-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
393         [smooth] Minor clean-ups.
395         * src/smooth/ftgrays.c (gray_dump_cells): Move out of the way.
396         (gray_render_span): Remove spurious casts and streamline.
398 2016-06-07  Werner Lemberg  <wl@gnu.org>
400         [autofit] Add support for Ethiopic script.
402         * src/autofit/afblue.dat: Add blue zone data for Ethiopic.
404         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
406         * src/autofit/afscript.h: Add Ethiopic standard characters.
408         * src/autofit/afranges.c: Add Ethiopic data.
410         * src/autofit/afstyles.h: Add Ethiopic data.
412 2016-06-07  Werner Lemberg  <wl@gnu.org>
414         [autofit] Fix compilation with VS2016 (#48126).
416         This compiler doesn't recognize the end-of-comment sequence `*/' if
417         it immediately follows non-ASCII characters.
419         * src/autofit/afscript.h: Ensure whitespace before `*/'.
421 2016-06-04  Werner Lemberg  <wl@gnu.org>
423         Fix a test for named instances (#48122).
425         This was missed while giving negative face indices an extended
426         meaning.
428         * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement.
430 2016-05-31  Nikolaus Waxweiler  <madigens@gmail.com>
432         [truetype] Let SHPIX move points in the twilight zone in v40.
434         * src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in
435         the twilight zone.  Otherwise, treat SHPIX the same as DELTAP.
436         Unbreaks various fonts such as older versions of Rokkitt and DTL
437         Argo T Light that would glitch severely after calling ALIGNRP after a
438         blocked SHPIX.
440 2016-05-30  Werner Lemberg  <wl@gnu.org>
442         [type42] Support `CharStrings' entry format as created by LilyPond.
444         * src/type42/t42parse.c (t42_parse_charstrings): Handle entries
445         having the format
447           (foo) cvn 12345 def
449 2016-05-28  Werner Lemberg  <wl@gnu.org>
451         * src/autofit/afranges.c: Remove `UL' postfix from hex numbers.
453         Suggested by Alexei.  `UL' is only needed for 16bit compilers, but
454         it seems noone is using this anymore (and we no longer test whether
455         FreeType compiles in such an environment).  Otherwise, it is easy to
456         add the postfix to the `AF_UNICODE_RANGE' macro.
458 2016-05-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
460         [smooth] Shrink bisection stack.
462         The convergence of Bézier flatteners is fast with the deviation
463         from straight line being asymptotically cut 4-fold on each bisection.
464         This justifies smaller bisection stack size.
466         * src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'.
467         (gray_render_conic): Create and use conic `bez_stack'. Move back the
468         band analysis from...
469         (gray_conic_to): ... here.
470         (gray_render_cubic): Create and use cubic `bez_stack'. Move back the
471         band analysis from...
472         (gray_cubic_to): ... here.
473         (gray_move_to): Updated.
475 2016-05-25  Werner Lemberg  <wl@gnu.org>
477         [autofit] Fixes for Armenian and Gujarati ranges.
479         * src/autofit/afranges.c (af_armn_uniranges): Corrected.
480         (af_guru_nonbase_uniranges): Make U+0A3E a base character.
482 2016-05-24  Werner Lemberg  <wl@gnu.org>
484         [autofit] Add support for Armenian script.
486         * src/autofit/afblue.dat: Add blue zone data for Armenian.
488         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
490         * src/autofit/afscript.h: Add Armenian standard characters.
492         * src/autofit/afranges.c: Add Armenian data.
494         * src/autofit/afstyles.h: Add Armenian data.
496 2016-05-23  Werner Lemberg  <wl@gnu.org>
498         * builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'.
500         This was commented about 10 years ago – I think the reason then to
501         disable libtool's `-export-symbols' option was to give some badly
502         programmed applications access to internal FreeType functions.
504         I believe that we should no longer take care of such programs; the
505         number of symbols exported should be rather restricted as much as
506         possible.
508 2016-05-22  Werner Lemberg  <wl@gnu.org>
510         [autofit] Add blue-zone support for Gurmukhi script.
512         This essentially moves the Gurmukhi script from the `Indic' hinter to
513         the `Latin' hinter.
515         * src/autofit/afblue.dat: Add blue zone data for Gurmukhi.
517         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
519         * src/autofit/afscript.h: Add Gurmukhi standard characters and move
520         data out of AF_CONFIG_OPTION_INDIC block.
522         * src/autofit/afranges.c: Move Gurmukhi data out of
523         AF_CONFIG_OPTION_INDIC block.
525         * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use
526         AF_WRITING_SYSTEM_LATIN.
528 2016-05-21  Werner Lemberg  <wl@gnu.org>
530         Minor clang++ fixes.
532         * src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c
533         (ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add
534         initializer.
536         * src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit
537         conversion from NULL to boolean.
539 2016-05-21  Werner Lemberg  <wl@gnu.org>
541         Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955).
543         * include/freetype/internal/ftmemory.h (cplusplus_typeof): Use
544         braces for `extern "C++"'.
546 2016-05-17  Nikolaus Waxweiler  <madigens@gmail.com>
548         [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].
550         * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with...
551         (tt_loader_set_pp): ... this new function.
552         Update all callers.
554 2016-05-17  Nikolaus Waxweiler  <madigens@gmail.com>
556         [truetype] New implementation of v38 bytecode interpreter [2/3].
558         This patch actually modifies the bytecode interpreter.
560         See added comments in `ttinterp.h' for more information on this and
561         the following commit in the series.
563         * src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by...
564         (NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY,
565         SUBPIXEL_HINTING_MINIMAL): ...new macros.
566         (Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backward
567         compatibility.
568         Updated.
569         (Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD):
570         Updated.
571         (Ins_INSTCTRL): Handle native ClearType mode flag.
572         Updated.
573         (Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backward
574         compatibility.
575         (Move_Zp2_Point): Ditto.
576         (Ins_SHP): Updated.
577         (Ins_SHPIX): Handle backward compatibility.
578         Updated.
579         (Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated.
580         (Ins_ALIGNRP): Updated.
581         (Ins_IUP, Ins_DELTAP): Handle backward compatibility.
582         Updated.
583         (Ins_GETINFO): Handle v38 flags.
584         Updated.
585         (TT_RunIns): Handle backward compatibility mode.
586         Updated.
588 2016-05-17  Nikolaus Waxweiler  <madigens@gmail.com>
590         [truetype] New implementation of v38 bytecode interpreter [1/3].
592         This patch prepares data structures and the like.
594         See added comments in `ttinterp.h' for more information on this and
595         the following commits in the series.
597         * devel/ftoption.h, include/freetype/config/ftoption.h
598         (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate
599         between subpixel versions.
600         (TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY,
601         TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros.
603         * include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro.
605         * include/freetype/internal/tttypes.h (TT_FaceRec): Updated.
607         * src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields
608         `subpixel_hinting_lean', `vertical_lcd_lean',
609         `backward_compatibility', `iupx_called', iupy_called', and
610         `grayscale_cleartype' for new hinting mode.
612         * src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40
613         interpreters conditionally.
615         * src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless
616         in v38 backward compatibility mode.
617         Updated.
618         (compute_glyph_metrics): Add v38 backward compatibility mode
619         constraint for adjusting advance widths.
620         Updated.
621         (tt_loader_init): Handle new flags `subpixel_hinting_lean',
622         `grayscale_cleartype', and `vertical_lcd_lean'.
623         Updated.
624         (tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP):
625         Updated.
627         * src/truetype/ttobjs.c (tt_driver_init): Conditionally set
628         default interpreter version number.
630         * src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated.
632 2016-05-17  Werner Lemberg  <wl@gnu.org>
634         [cff] Fix matrix scaling (#47848).
636         * include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro.
638         * src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling
639         value of all matrix coefficients to scale matrix.
641         * src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for
642         matrix normalization if `matrix->yy' is zero.
644 2016-05-16  Werner Lemberg  <wl@gnu.org>
646         [base] Reject invalid sfnt Mac resource (#47891).
648         * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity
649         of `CID ' and `TYPE1' table offset and length.
651 2016-05-16  Werner Lemberg  <wl@gnu.org>
653         [cid] Fix scanning for `StartData' and `/sfnts' (#47892).
655         * src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN):
656         New macros.
657         (cid_parser_new): Fix and document algorithm.
659 2016-05-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
661         [truetype] Improve the recursive reference detector.
663         The previous fix for #46372 misunderstood a composite glyph referring
664         same component twice as a recursive reference.  See the discussion
666           https://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html
668         Thanks to Khaled Hosny for finding this issue.
670         * src/truetype/ttgload.c (ft_list_get_node_at): A function to get
671         the i-th node from FT_List.
672         (load_truetype_glyph): In the traversal scan of the reference tree
673         in the composite glyph, we clear the nodes filled by previous
674         sibling chain.
676 2016-05-07  Werner Lemberg  <wl@gnu.org>
678         [cache] Allow value 0 for face ID.
680         We never dereference `face_id', and some implementations might use a
681         running number instead of a pointer.  Additionally, disallowing
682         value zero was undocumented.
684         * src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c
685         (FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for
686         `face_id'.
688 2016-05-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
690         [smooth] More efficient accounting of conic splits and draws.
692         A single decrement counter of segments to draw, instead of an array,
693         contains all the information necessary to decide when to split and
694         when to draw a conic segment. The number of splits before each draw is
695         equal to the number of trailing zeros in the counter.
697         * src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'.
698         (gray_render_conic): Updated to use decrement counter of segments.
700 2016-05-05  Werner Lemberg  <wl@gnu.org>
702         [cff, truetype] Fix logic for `FT_Property_Set'.
704         Otherwise some properties could be set to arbitrary values, which is
705         harmless, but querying could give wrong positive results.
707         * src/cff/cffdrivr.c (cff_property_set) [hinting-engine],
708         * src/truetype/ttdriver.c (tt_property_set) [interpreter-version]:
709         Only allow defined values.
711 2016-04-25  Werner Lemberg  <wl@gnu.org>
713         [autofit] Add blue-zone support for Gujarati script.
715         This essentially moves the Gujarati script from the `Indic' hinter to
716         the `Latin' hinter.
718         * src/autofit/afblue.dat: Add blue zone data for Gujarati.
720         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
722         * src/autofit/afscript.h: Add Gujarati standard characters and move
723         data out of AF_CONFIG_OPTION_INDIC block.
725         * src/autofit/afranges.c: Move Gujarati data out of
726         AF_CONFIG_OPTION_INDIC block.
728         * src/autofit/afstyles.h: Update Gujarati data; in particular, use
729         AF_WRITING_SYSTEM_LATIN.
731 2016-04-24  Werner Lemberg  <wl@gnu.org>
733         Minor.
735         * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro
736         argument with parentheses.
738 2016-04-24  Werner Lemberg  <wl@gnu.org>
740         [truetype] Fix deallocation in case of error (#47726).
742         * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in
743         `outline' that are going to be deallocated in case of error.
745 2016-04-23  Werner Lemberg  <wl@gnu.org>
747         [autofit] Improve Georgian blue zone characters.
749         Suggested by Akaki Razmadze <razmadzekoko@gmail.com>.
751         * src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM):
752         Updated.
754         * src/autofit/afblue.c: Regenerated.
756 2016-04-16  David Capello  <davidcapello@gmail.com>
758         [cmake] Honor SKIP_INSTALL_* settings (as used in zlib).
760         As FreeType depends on zlib, if we don't install zlib (e.g., because
761         we defined SKIP_INSTALL_ALL), FreeType cannot be installed, too
762         (cmake triggers an error saying that FreeType cannot be installed
763         because zlib target isn't in the export set).
765         * CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS',
766         `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings.
768 2016-04-16  Behdad Esfahbod  <behdad@behdad.org>
770         [truetype] Another fix for non-intermediate GX tuples.
772         * src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing
773         cases.
775 2016-04-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
777         Remove forgotten macro.
779         * include/freetype/internal/internal.h
780         [FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove.
782 2016-04-09  Werner Lemberg  <wl@gnu.org>
784         [autofit] Add support for Georgian scripts.
786         Georgian is problematic, since `uppercase' forms of Mkhedruli
787         (called Mtavruli) are not yet defined in Unicode, which means that
788         proper blue zones can't be defined.  However, there is already a
789         proposal submitted to Unicode; see
791           https://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf
793         Additionally, due to historical reasons, Unicode treats Khutsuri as
794         the same script as Mkhedruli, and so does OpenType.  However, since
795         the two scripts have completely different shapes it can happen that
796         blue zones differ considerably.  The tag `geok' used here (derived
797         from ISO 15924) to differentiate the two scripts is not an OpenType
798         tag in use.  If we now have a font that contains both glyphs for
799         Mkhedruli and Khutsuri, and it uses OpenType features for both also,
800         HarfBuzz unavoidably treats all glyphs as `geor'.  As a consequence,
801         blue zones for `geok' are not used for glyphs involved in the
802         OpenType features.
804         An issue not yet resolved is which OpenType feature should be used
805         to access Mtavruli glyph shapes; right now, FreeType doesn't set up
806         support for them, but it is easy to add them later on as soon as
807         more information is available.
809         * src/autofit/afblue.dat: Add blue zone data for Georgian.
811         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
813         * src/autofit/afscript.h: Add Georgian standard characters.
815         * src/autofit/afranges.c: Add Georgian data.
817         * src/autofit/afstyles.h: Add Georgian data.
819 2016-04-05  Werner Lemberg  <wl@gnu.org>
821         [autofit] Provide dummy blue zone for pseudo script `none'.
823         Even if the dummy hinter is used as the handler for `none' (which
824         doesn't use blue zones), it is more consistent than the old value
825         (which was 0), pointing to Arabic...
827         * src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'.
828         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
830         * src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE.
832 2016-03-30  Werner Lemberg  <wl@gnu.org>
834         * src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567).
836 2016-03-30  Werner Lemberg  <wl@gnu.org>
838         * src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate.
840 2016-03-30  Werner Lemberg  <wl@gnu.org>
842         * src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567).
844 2016-03-29  Werner Lemberg  <wl@gnu.org>
846         * src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift.
848 2016-03-29  Werner Lemberg  <wl@gnu.org>
850         [pfr] Fix binary search (#47514).
852         * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border
853         conditions correctly.
855 2016-03-29  Werner Lemberg  <wl@gnu.org>
857         [pfr] Minor.
859         * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left',
860         `right', and `middle' with `min', `max', and `mid' as used in other
861         FreeType binary search code.
862         (pfr_load_bitmap_metrics): Fix invalid left shift.
864 2016-03-29  Werner Lemberg  <wl@gnu.org>
866         * src/pfr/pfrtypes.h: Replace all enums with macros.
868         We need `~FOO' to unset bits, and only with unsigned values (which
869         `enum' isn't normally) this works cleanly.
871 2016-03-26  Werner Lemberg  <wl@gnu.org>
873         [pfr] Robustify bitmap strike handling (#47514).
875         We did a binary search for a charcode without ensuring that the
876         searched data is ordered.  Validating the order is now done lazily,
877         this is, the first access to a bitmap glyph triggers the order check
878         in the corresponding bitmap strike.
880         * src/pfr/pfrtypes.h (PFR_BitmapFlags): New values
881         `PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'.
883         * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument
884         a pointer.  Handle new PFR_BITMAP_XXX flags.
885         (pfr_slot_load_bitmap): Updated.
887 2016-03-26  Werner Lemberg  <wl@gnu.org>
889         [pfr] Fix handling of compound glyphs.
891         Extra items are indicated with different bit positions.
893         * src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace
894         `PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and
895         `PFR_GLYPH_COMPOUND_EXTRA_ITEMS'.
897         * src/pfr/pfrgload.c (pfr_glyph_load_simple,
898         pfr_glyph_load_compound): Use them.
900 2016-03-25  Werner Lemberg  <wl@gnu.org>
902         [pfr] Minor.
904         * src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of
905         bare numbers.
907 2016-03-25  Werner Lemberg  <wl@gnu.org>
909         [pfr] Various clang sanitizer fixes.
911         * src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle
912         signed nibbles.
913         (pfr_slot_load_bitmap): Correctly exit frame in case of error.
914         Fix invalid left shifts.
916 2016-03-23  Werner Lemberg  <wl@gnu.org>
918         Rename `VERSION.DLL' (#47472).
920         * docs/VERSION.DLL: Renamed to...
921         * docs/VERSIONS.TXT: ...this.
923 2016-03-23  Werner Lemberg  <wl@gnu.org>
925         [raster, smooth] Directly test outline size (#47500).
927         This improves stand-alone compilation.
929         * src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to...
931         * src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c
932         (gray_raster_render): ...these functions.
934 2016-03-23  Werner Lemberg  <wl@gnu.org>
936         [raster, smooth] Fix some clang sanitizer runtime issues.
938         * src/raster/ftraster.c (ft_black_reset, ft_black_set_mode,
939         ft_black_render): Harmonize signatures with `ftimage.h'.
941         * src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset):
942         Ditto.
944 2016-03-22  Werner Lemberg  <wl@gnu.org>
946         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor.
948         This fixes an AddressSanitizer issue:
950           ttgload.c:430:7: runtime error: null pointer passed as argument 1,
951                            which is declared to never be null
953 2016-03-21  Werner Lemberg  <wl@gnu.org>
955         * src/autofit/afhints.c (af_glyph_hints_reload): Thinko.
957         This fixes the previous commit to this file.
959 2016-03-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
961         [smooth] Partly revert recent changes.
963         * src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework
964         conditions to fix rendering issues.
966 2016-03-20  Werner Lemberg  <wl@gnu.org>
968         [autofit] Show `near' points in tracing.
970         * src/autofit/afhints.h (AF_FLAG_NEAR): New macro.
972         * src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it.
973         (af_glyph_hints_reload): Handle AF_FLAG_NEAR.
975 2016-03-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
977         [smooth] Minor refactoring and microoptimizations.
979         * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
980         band clipping from here.
981         (gray_conic_to, gray_cubic_to): ... to here.
982         (gray_render_line, gray_render_scanline): Initialize variables closer
983         to their use.
985 2016-03-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
987         [smooth] Minor refactoring.
989         * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
990         upscaling from here.
991         (gray_conic_to, gray_cubic_to): ... to here.
993 2016-03-15  Werner Lemberg  <wl@gnu.org>
995         * src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize.
997 2016-03-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
999         [smooth] Temporarily revert 6eb6158dd787 (#47114).
1001         * src/smooth/ftgrays.c (gray_render_line): Old implementation.
1003 2016-03-12  Werner Lemberg  <wl@gnu.org>
1005         [ftfuzzer] Improve coverage of rasterfuzzer.
1007         * src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use
1008         input data for `tags' array also.
1009         Trim input data to get more positive hits.
1011 2016-03-11  Pavlo Denysov  <paul.kiev+savannah@gmail.com>
1013         Fix CMake issues for iOS (patch #8941).
1015         * CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory.
1016         * builds/cmake/iOS.cmake: No longer enforce gcc.
1018 2016-03-09  Behdad Esfahbod  <behdad@behdad.org>
1020         [truetype] Fix handling of non-intermediate GX tuples.
1022         We probably did not notice this as all fonts we tested had only
1023         tuple_coords[i] be +1 or -1 for non-intermediate tuples.
1025         * src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it.
1027 2016-03-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1029         [base] Refuse to render enormous outlines (#47114).
1031         The goal is to avoid integer overflows in the rendering algorithms.
1032         The limit is chosen arbitrarily at some 2^18 pixels, which should be
1033         enough for modern devices including printers.
1035         * src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject
1036         enormous outlines.
1038 2016-03-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1040         [smooth] Replace left shifts with multiplications (#47114).
1042         * src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it.
1044 2016-03-05  Werner Lemberg  <wl@gnu.org>
1046         [autofit] Avoid excessive stem length rounding (#25392).
1048         * src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument
1049         to pass difference between hinted and unhinted position of base
1050         point; use this to adjust the stem width depending on the PPEM so
1051         that it doesn't become too large under certain circumstances.
1052         Update all callers using value 0 for this argument except...
1053         (af_latin_align_linked_edge): Pass position delta of base point to
1054         `af_latin_compute_stem_width'.
1056 2016-03-05  J Raynor  <jxraynor@gmail.com>
1058         Make FreeType compile on AIX out of the box.
1060         * builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on
1061         AIX.
1063 2016-03-01  Werner Lemberg  <wl@gnu.org>
1064             Kostya Serebryany  <kcc@google.com>
1066         [ftfuzzer] Add unit for testing smooth and black rasterizers.
1068         * src/tools/ftfuzzer/rasterfuzzer.cc: New file.
1070 2016-03-01  Werner Lemberg  <wl@gnu.org>
1072         [autofit] Fix reallocation error introduced in 2016-02-27 (#47310).
1074         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign
1075         `prev_segment' after reallocation.
1077 2016-03-01  Werner Lemberg  <wl@gnu.org>
1079         Fix clang warnings.
1081         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Use
1082         FT_UShort for `min_flags' and `max_flags'.
1083         Initialize `prev_*' variables.
1085         * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix
1086         types of local variables.
1088         * src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]:
1089         Update `printf' format string.
1091         * src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast.
1092         (LLVMFuzzerTestOneInput): Fix loop type.
1094 2016-02-29  Werner Lemberg  <wl@gnu.org>
1096         [autofit] Add blue-zone support for Sinhala script.
1098         This essentially moves the Sinhala script from the `Indic' hinter to
1099         the `Latin' hinter.
1101         * src/autofit/afblue.dat: Add blue zone data for Sinhala.
1103         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1105         * src/autofit/afscript.h: Add Sinhala standard character and move data
1106         out of AF_CONFIG_OPTION_INDIC block.
1108         * src/autofit/afranges.c: Move Sinhala data out of
1109         AF_CONFIG_OPTION_INDIC block.
1111         * src/autofit/afstyles.h: Update Sinhala data; in particular, use
1112         AF_WRITING_SYSTEM_LATIN.
1114 2016-02-27  Werner Lemberg  <wl@gnu.org>
1116         [autofit] Properly handle spikes pointing to the x-axis.
1118         An example that gets better rendered is glyph `uusignTaml' (glyph
1119         index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem.
1121         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly
1122         handle segments where the last point of the first segment is
1123         identical to the first point in the second one.  This can happen for
1124         malformed fonts or spikes.  We either merge the new segment with the
1125         previous one (both segments point into the same direction), or we
1126         discard the shorter segment if they point into different directions.
1128 2016-02-27  Werner Lemberg  <wl@gnu.org>
1130         [autofit] Minor code clean-up.
1132         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Change
1133         some local variable names to better differentiate between values
1134         along a segment and values orthogonal to it.
1136 2016-02-26  Werner Lemberg  <wl@gnu.org>
1138         [autofit] Improve BOUND action.
1140         In complex glyph shapes, the original logic was too simple to cater
1141         for situations that would actually need something similar to PS Hint
1142         masks.  This fix should alleviate the worst cases.
1144         * src/autofit/aflatin.c (af_latin_hint_edges): Don't allow
1145         complete disappearance of stems.
1147 2016-02-25  Werner Lemberg  <wl@gnu.org>
1149         [autofit] Add blue-zone support for Tamil script.
1151         This essentially moves the Tamil script from the `Indic' hinter to
1152         the `Latin' hinter.
1154         * src/autofit/afblue.dat: Add blue zone data for Tamil.
1156         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1158         * src/autofit/afscript.h: Add Tamil standard character and move data
1159         out of AF_CONFIG_OPTION_INDIC block.
1161         * src/autofit/afranges.c: Move Tamil data out of
1162         AF_CONFIG_OPTION_INDIC block.
1164         * src/autofit/afstyles.h: Update Tamil data; in particular, use
1165         AF_WRITING_SYSTEM_LATIN.
1167 2016-02-18  Werner Lemberg  <wl@gnu.org>
1169         [autofit] Add blue-zone support for Malayalam script.
1171         This essentially moves the Malayalam script from the `Indic' hinter
1172         to the `Latin' hinter.
1174         * src/autofit/afblue.dat: Add blue zone data for Malayalam.
1176         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1178         * src/autofit/afscript.h: Add Malayalam standard characters and move
1179         data out of AF_CONFIG_OPTION_INDIC block.
1181         * src/autofit/afranges.c: Move Malayalam data out of
1182         AF_CONFIG_OPTION_INDIC block.
1184         * src/autofit/afstyles.h: Update Malayalam data; in particular, use
1185         AF_WRITING_SYSTEM_LATIN.
1187 2016-02-16  Alexei Podtelezhnikov  <apodtele@gmail.com>
1189         [smooth] Fix integer overflow (#47114).
1191         * src/smooth/ftgrays.c (TArea): Make it unconditionally `long'.
1193 2016-02-15  Werner Lemberg  <wl@gnu.org>
1195         * src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing.
1197 2016-02-15  Werner Lemberg  <wl@gnu.org>
1199         [cff] Handle T2 operator only with old CFF engine (#47157).
1201         * src/cff/cffparse.c (cff_parser_run) <opcode 31>: Enclose with
1202         #ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif.
1204 2016-02-15  Werner Lemberg  <wl@gnu.org>
1206         [cff] Partially handle `load' and `store' ops in old CFF engine.
1208         Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be
1209         displayed.
1211         * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_store,
1212         cff_op_load>: Partially implement it.
1214         * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass
1215         the number of Multiple Master axes.
1216         Update all callers.
1217         (cff_parse_multiple_master): Get number of axes.
1218         (cff_parser_run) <opcode 31>: Updated.
1219         * src/cff/cffparse.h: Updated.
1220         (CFF_ParserRec): Add `num_axes' field.
1222         * src/cff/cffload.c: Updated.
1224         * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field.
1226 2016-02-15  Werner Lemberg  <wl@gnu.org>
1228         [cff] Correctly trace SIDs that contain NULL bytes.
1230         We need this to properly trace Multiple Master CFFs, which contain
1231         two SIDs that are charstrings.
1233         This commit makes FreeType also show the last SID, omitted
1234         previously due to a bug.
1236         * src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field.
1238         * src/cff/cffload.c (cff_index_get_pointers): Add argument to return
1239         the pool size.
1240         Update all callers.
1242         * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly
1243         access `cff->strings' to display the non-default strings.
1245 2016-02-14  Werner Lemberg  <wl@gnu.org>
1247         * src/base/fthash.c: Include FT_INTERNAL_MEMORY_H.
1249 2016-02-14  Werner Lemberg  <wl@gnu.org>
1251         * src/cff/cffparse.c: Include `cffgload.h'.
1253         Problem reported by Colin Walters <walters@verbum.org>.
1255 2016-02-14  Werner Lemberg  <wl@gnu.org>
1257         [cff] Make old CFF engine show MM CFFs (without variations).
1259         The new code only displays the first master in the font.
1261         * src/cff/cffgload.c (cff_decode_parse_charstrings): Add new
1262         parameter to allow function calls from dictionaries also.
1263         <cff_op_blend>: Partially implement it.
1264         Update all callers.
1265         * src/cff/cffgload.h: Updated.
1267         * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass the
1268         number of Multiple Master designs.
1269         Update all callers.
1270         (cff_parse_multiple_master): New function to rudimentarily parse
1271         operator.
1272         (cff_parser_run): Handle `T2' operator.
1273         * src/cff/cffparse.h: Updated.
1274         (CFF_ParserRec): Add `num_designs' field.
1276         * src/cff/cffload.c: Updated.
1278         * src/cff/cfftoken.h: Handle `MultipleMaster' operator.
1280         * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field.
1282         * src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for
1283         MM CFFs.
1285 2016-02-09  Werner Lemberg  <wl@gnu.org>
1287         [docmaker] Don't emit trailing newlines.
1289         * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code):
1290         Use `rstrip'.
1292 2016-02-07  Werner Lemberg  <wl@gnu.org>
1294         * Version 2.6.3 released.
1295         =========================
1298         Tag sources with `VER-2-6-3'.
1300         * docs/VERSION.DLL: Update documentation and bump version number to
1301         2.6.3.
1303         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1304         builds/windows/vc2005/index.html,
1305         builds/windows/vc2008/freetype.vcproj,
1306         builds/windows/vc2008/index.html,
1307         builds/windows/vc2010/freetype.vcxproj,
1308         builds/windows/vc2010/index.html,
1309         builds/windows/visualc/freetype.dsp,
1310         builds/windows/visualc/freetype.vcproj,
1311         builds/windows/visualc/index.html,
1312         builds/windows/visualce/freetype.dsp,
1313         builds/windows/visualce/freetype.vcproj,
1314         builds/windows/visualce/index.html,
1315         builds/wince/vc2005-ce/freetype.vcproj,
1316         builds/wince/vc2005-ce/index.html,
1317         builds/wince/vc2008-ce/freetype.vcproj,
1318         builds/wince/vc2008-ce/index.html: s/2.6.2/2.6.3/, s/262/263/.
1320         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
1322         * builds/unix/configure.raw (version_info): Set to 18:3:12.
1323         * CMakeLists.txt (VERSION_PATCH): Set to 3.
1325         * docs/CHANGES: Updated.
1327 2016-02-07  Werner Lemberg  <wl@gnu.org>
1329         Fix another runtime error found by clang's sanitizer (#47082).
1331         * src/base/ftstroke.c (ft_stroke_border_export): Properly handle
1332         empty input buffer.
1334 2016-02-07  Werner Lemberg  <wl@gnu.org>
1336         Fix runtime errors found by clang's sanitizer (#47082).
1338         * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
1339         (FT_Outline_Copy), src/cache/ftcsbits.c (ftc_sbit_copy_bitmap):
1340         Properly handle empty input buffer.
1342 2016-02-07  Werner Lemberg  <wl@gnu.org>
1344         [cff] Minor.
1346         * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_sqrt>:
1347         Remove dead code.
1349 2016-02-07  Werner Lemberg  <wl@gnu.org>
1351         [cff] Implement missing operators in new engine (except `random').
1353         * src/cff/cf2font.h (CF2_STORAGE_SIZE): New macro.
1355         * src/cff/cf2intrp.c (cf2_interpT2CharString): Implement the
1356         following operators: abs, add, and, div, drop, dup, eq, exch, get,
1357         ifelse, index, mul, neg, not, or, put, roll, sqrt, sub.
1359         * src/cff/cf2stack.h, src/cff/cf2stack.c (cf2_stack_roll): New
1360         auxiliary function for `roll' operator.
1362 2016-02-06  Werner Lemberg  <wl@gnu.org>
1364         [cff] Fix some Type 2 operators in old CFF engine.
1366         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Fix `eq'
1367         operator, add `not' and (unsupported) `blend' operators.
1369 2016-02-05  Sebastian Rasmussen  <sebras@gmail.com>
1371         Make direct call of `make install' work (#47072).
1373         * builds/unix/unix-def.in (freetype-config): Make sure
1374         `freetype-config' is generated for both make targets (`all' and
1375         `install').
1377 2016-02-05  Werner Lemberg  <wl@gnu.org>
1379         [base] Fix advance width loading for MM and GX fonts (#47064).
1381         * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for
1382         MM and GX fonts.
1383         Update callers.
1385 2016-02-03  Werner Lemberg  <wl@gnu.org>
1387         [cff] Fix handling of face_index == -1 for pure CFF.
1389         * src/cff/cffobjs.c (cff_face_init): Return correct number of faces.
1391 2016-01-30  Werner Lemberg  <wl@gnu.org>
1393         [autofit] Minor tracing improvement.
1395         * src/autofit/afhints.c (af_glyph_hints_dump_points): Insert newline
1396         at the start of a new contour.
1398 2016-01-28  Nikolaus Waxweiler  <madigens@gmail.com>
1400         Remove unpatented hinter (3/3).
1402         * include/freetype/config/ftoption.h
1403         (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1405         * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
1406         `ignore_unpatented_hinter' field.
1407         Update users.
1408         (FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove.
1409         Update users.
1411         * include/freetype/internal/tttypes.h (TT_FaceRec): Remove
1412         `unpatented_hinting' field.
1413         Update users.
1415         * src/base/ftpatent.c (_tt_check_patents_in_range,
1416         _tt_check_patents_in_table, _tt_face_check_patents): Remove.
1417         (FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting):
1418         Replace code with dummies.
1420         * src/truetype/ttobjs.c (tt_face_init): Remove now defunct code.
1421         * src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis'
1422         field.
1424 2016-01-28  Nikolaus Waxweiler  <madigens@gmail.com>
1426         Remove unpatented hinter (2/3).
1428         * devel/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1430 2016-01-28  Nikolaus Waxweiler  <madigens@gmail.com>
1432         Remove unpatented hinter (1/3).
1434         * src/truetype/ttinterp.c [TT_CONFIG_OPTION_UNPATENTED_HINTING]:
1435         Remove all code related to this macro.
1437 2016-01-28  Werner Lemberg  <wl@gnu.org>
1439         [autofit] Add blue-zone support for Kannada script.
1441         This essentially moves the Kannada script from the `Indic' hinter to
1442         the `Latin' hinter.
1444         * src/autofit/afblue.dat: Add blue zone data for Kannada.
1446         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1448         * src/autofit/afscript.h: Add Kannada standard characters and move
1449         data out of AF_CONFIG_OPTION_INDIC block.
1451         * src/autofit/afranges.c: Move Kannada data out of
1452         AF_CONFIG_OPTION_INDIC block.
1454         * src/autofit/afstyles.h: Update Kannada data; in particular, use
1455         AF_WRITING_SYSTEM_LATIN.
1457 2016-01-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
1459         Better access to 64-bit integers for C99 compilers.
1461         * include/freetype/config/ftconfig.h [FT_LONG64]: Use
1462         __STDC_VERSION__ to define 64-bit integers.
1463         * builds/unix/ftconfig.in [FT_LONG64]: Ditto.
1464         * builds/vms/ftconfig.h [FT_LONG64]: Ditto.
1466 2016-01-21  Werner Lemberg  <wl@gnu.org>
1468         [gxvalid] Remove commented out code.
1470         * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Do it.
1472 2016-01-20  Werner Lemberg  <wl@gnu.org>
1474         [autofit] Complete last autofit commit.
1476         Problem reported by Kostya Serebryany <kcc@google.com>.
1478         * src/autofit/afshaper.c (af_shaper_get_coverage)
1479         [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Update signature.
1481 2016-01-20  Werner Lemberg  <wl@gnu.org>
1483         Still handle `__FTERRORS_H__'.
1485         We need this for backward compatibility.
1487         Problem reported by John Emmas <johne53@tiscali.co.uk>.
1489         * include/freetype/fterrors.h: Fix inclusion guard so that
1490         undefining either `FTERRORS_H_' or `__FTERRORS_H__' works as
1491         expected.
1493 2016-01-19  Werner Lemberg  <wl@gnu.org>
1495         [autofit] Fix handling of default script.
1497         Patch taken from ttfautohint, commit
1498         071ae2c00e0d67f9d19418f4fade1c23d27dc185.
1500         There were two bugs.
1502           - We now use non-standard script tags like `khms' for special
1503             purposes.  However, HarfBuzz maps such tags to `DFLT', and
1504             without this commit the associated lookups were incorrectly
1505             assigned to the non-standard tags.
1507           - Let's assume we have a Bengali font, and the font's `DFLT'
1508             script tag handles the necessary lookups for Bengali, too.
1509             Without this commit, the `DFLT' lookups were assigned to
1510             ttfautohint's default script (usually `latn') before the
1511             standard lookups for Bengali were handled.
1513             We now have the following order while searching for covered
1514             glyph indices.
1516               special features of scripts (e.g. `sups' for Cyrillic)
1517               Unicode mappings of scripts
1518               remaining features of scripts (especially important for Indic
1519                 scripts)
1520               default features of default script
1522         * src/autofit/afshaper.c, src/autofit/afshaper.h
1523         (af_shaper_get_coverage): Add boolean parameter to indicate default
1524         script.
1525         Update all callers.
1527         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
1528         Fix search order for coverages.
1530 2016-01-19  Werner Lemberg  <wl@gnu.org>
1532         Various minor clang fixes.
1534         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
1535         src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
1536         `ch'.
1538         * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Add cast.
1540         * src/base/ftdbgmem.c (ft_mem_table_destroy): Add cast.
1542         * src/base/fthash.c (hash_num_lookup): Add cast.
1544         * src/base/fttrigon.c (ft_trig_downscale) [FT_LONG64]: Fix cast.
1546         * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Comment out
1547         redundant code.
1549         * src/type1/t1driver.c (t1_get_ps_font_value) <PS_DICT_SUBR>: Add
1550         cast.
1552         * src/type1/t1load.c (parse_subrs): Fix type of `count'.
1554 2016-01-19  Derek B. Noonburg  <derekn@glyphandcog.com>
1556         [truetype] Add another tricky font.
1558         * src/truetype/ttobjs.c (TRICK_SFNT_IDS_NUM_FACES): Increase.
1559         (sfnt_id): Add variant of `DFKaiShu'.
1561 2016-01-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1563         [base] Empower `FT_Library_SetLcdFilterWeights'.
1565         * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): Enable filter
1566         in addition to setting weights.
1567         (FT_Library_SetLcdFilter): Clean out FT_FORCE_LIGHT_LCD_FILTER and
1568         FT_FORCE_LEGACY_LCD_FILTER.
1569         * include/freetype/ftlcdfil.h: Documentation update.
1571 2016-01-12  Werner Lemberg  <wl@gnu.org>
1573         Don't use macro names that start with `_[A-Z]' [3/3].
1575         Such macro names are reserved for both C and C++.
1577         * src/cache/ftccache.h: s/_FTC_FACE_ID_HASH/FTC_FACE_ID_HASH/.
1578         Update all callers.
1579         (FTC_CACHE_LOOKUP_CMP): Replace `_XXX' with `XXX_'.
1580         * src/cache/ftcmru.c (FTC_MRULIST_LOOKUP_CMP): Ditto.
1582 2016-01-12  Werner Lemberg  <wl@gnu.org>
1584         Don't use macro names that start with `_[A-Z]' [2/3].
1586         Such macro names are reserved for both C and C++.
1588         * include/freetype/ftimage.h, src/raster/ftraster.c,
1589         src/smooth/ftgrays.c, src/smooth/ftgrays.h:
1590         s/_STANDALONE_/STANDALONE_/.
1592 2016-01-12  Werner Lemberg  <wl@gnu.org>
1594         Don't use macro names that start with `_[A-Z]' [1/3].
1596         Such macro names are reserved for both C and C++.
1598         * src/bdf/bdflib.c: Replace macros of the form `_BDF_XXX' with
1599         `BDF_XXX_'.
1601 2016-01-12  Werner Lemberg  <wl@gnu.org>
1603         Don't use macro names that contain `__' [2/2].
1605         Such macro names are reserved for both C and C++.
1607         * src/cache/*: s/__/_/.
1609 2016-01-12  Werner Lemberg  <wl@gnu.org>
1611         Don't use macro names that contain `__' [1/2].
1613         Such macro names are reserved for both C and C++.
1615         * */*: Replace macros of the form `__XXX_H__' with `XXX_H_'.
1617 2016-01-10  Jered Gray  <jegray@google.com>
1619         [cff] Fix usage of `|' operator.
1621         * src/cff/cf2intrp.c (cf2_interpT2CharString) [cf2_cmdEXTENDEDNMBR,
1622         default]: `|' is not guaranteed to be processed from left to right
1623         by the compiler.  However, the code repeatedly calls
1624         `cf2_buf_readByte' to get the arguments to `|' ...  Fix this.
1626 2015-12-25  Werner Lemberg  <wl@gnu.org>
1628         [autofit] Make top-to-bottom hinting work in latin auto-hinter.
1630         This improves rendering of scripts like Bengali or Devanagari.
1632         * src/autofit/afhints.c (af_axis_hints_new_edge): Add parameter to
1633         pass top-to-bottom hinting flag.  This makes the function sort edges
1634         in descending vertical position.
1636         * src/autofit/afhints.c: Updated.
1638         * src/autofit/aflatin.c (af_latin_hints_compute_edges,
1639         af_latin_hint_edges): Use `top_to_bottom_hinting' flag.
1641         * src/autofit/afcjk.c (af_cjk_hints_compute_edges),
1642         src/autofit/aflatin2.c (af_latin2_hints_compute_edges): Updated.
1644 2015-12-24  Werner Lemberg  <wl@gnu.org>
1646         [autofit] Add hinting direction to `AF_ScriptClassRec'.
1648         Still unused.
1650         * src/autofit/afglobal.c (SCRIPT): Handle hinting direction.
1652         * src/autofit/aftypes.h (AF_ScriptClassRec): Add
1653         `top_to_bottom_hinting' field.
1654         (AF_HINTING_BOTTOM_TO_TOP, AF_HINTING_TOP_TO_BOTTOM): New macros.
1655         (AF_DEFINE_SCRIPT_CLASS): Updated.
1657 2015-12-23  Werner Lemberg  <wl@gnu.org>
1659         [autofit] Start implementing hinting direction (up/down, down/up).
1661         Right now, it does nothing.
1663         * src/autofit/afscript.h: Add another parameter to `SCRIPT',
1664         specifying hinting direction.
1666         * src/autofit/afglobal.c, src/autofit/afglobal.h,
1667         src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/afshaper.c,
1668         src/autofit/aftypes.h: Extend `SCRIPT' definitions.
1670 2015-12-22  Werner Lemberg  <wl@gnu.org>
1672         * src/type1/t1load.c (parse_subrs): Fix memory leak (#46744).
1674 2015-12-22  Werner Lemberg  <wl@gnu.org>
1676         [base] Make hash interface symmetric.
1678         Use `num' and `str' infixes everywhere.
1680         * src/base/fthash.c (ft_hash_init): Renamed to...
1681         (hash_init): ... This.
1682         (ft_hash_str_init, ft_hash_num_init): New functions.
1683         (ft_hash_free): Renamed to...
1684         (ft_hash_str_free): ... This.
1686         * include/freetype/internal/fthash.h: Updated.
1688         * src/bdf/bdflib.c, src/type1/t1load.c, src/type1/t1objs.c: Updated.
1690 2015-12-21  Werner Lemberg  <wl@gnu.org>
1692         [type1] Avoid shift of negative numbers (#46732).
1694         * src/type1/t1load.c (parse_subrs): Do it.
1696 2015-12-20  Werner Lemberg  <wl@gnu.org>
1698         [type1, psaux] Handle large values of num_subrs correctly (#46692).
1700         We now use a hash to map from subr indices to array elements holding
1701         the subroutines, if necessary.
1703         * include/freetype/internal/t1types.h: Include FT_INTERNAL_HASH_H.
1704         (T1_FontRec): Add `subrs_hash' field.
1706         * include/freetype/internal/psaux.h: Include FT_INTERNAL_HASH_H.
1707         (T1_DecoderRec): Add `subrs_hash' field.
1709         * src/type1/t1load.h (T1_LoaderRec): Add `subrs_hash' field.
1711         * src/type1/t1driver.c: Include FT_INTERNAL_HASH_H.
1712         (t1_ps_get_font_value) [PS_DICT_SUBR]: Look up hash if necessary.
1714         * src/type1/t1load.c: Include FT_INTERNAL_HASH_H.
1715         (parse_subrs): Use hash for subr indices that exceed the allocated
1716         number of subr slots.
1717         (t1_init_loader): Remove unnecessary code.
1718         (t1_done_loader, T1_Open_Face): Updated.
1720         * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances,
1721         T1_Load_Glyph): Updated.
1723         * src/type1/t1objs.c (T1_Face_Done): Updated.
1725         * src/psaux/t1decode.c: Include FT_INTERNAL_HASH_H.
1726         (t1_decoder_parse_charstrings) [op_callsubr]: Look up hash if
1727         necessary.
1729         * src/cid/cidgload.c (cid_load_glyph): Updated.
1731 2015-12-20  Werner Lemberg  <wl@gnu.org>
1733         [base] Thinko: Remove free function pointer.
1735         We don't copy keys or values while hashing.
1737         * include/freetype/internal/fthash.h (FT_Hash_FreeFunc): Removed.
1738         (FT_HashRec): Remove `free' field.
1740         * src/base/fthash.c (hash_str_free): Removed.
1741         (ft_hash_init, ft_hash_free): Updated.
1743 2015-12-20  Werner Lemberg  <wl@gnu.org>
1745         [base, bdf] Don't expose `FT_Hashnode' in hash functions.
1747         * src/base/fthash.c (hash_lookup, ft_hash_str_lookup,
1748         ft_hash_num_lookup): Return pointer to `size_t' instead of
1749         `FT_Hashnode'.
1751         * include/freetype/internal/fthash.h: Updated.
1753         * src/bdf/bdflib.c (bdf_get_property, _bdf_add_property,
1754         bdf_get_font_property): Updated.
1756 2015-12-20  Werner Lemberg  <wl@gnu.org>
1758         [base, bdf] Add number hashing.
1760         * src/base/fthash.c (hash_num_lookup, hash_num_compare): New
1761         functions.
1762         (ft_hash_init): Add argument to select between number and string
1763         hashing.
1764         (ft_hash_num_insert, ft_hash_num_lookup): New functions.
1766         * include/freetype/internal/fthash.h: Updated.
1768         * src/bdf/bdflib.c (_bdf_parse_start): Updated.
1770 2015-12-20  Werner Lemberg  <wl@gnu.org>
1772         [base] Introduce hash lookup, compare, and free function pointers.
1774         * include/freetype/internal/fthash.c (FT_Hash_LookupFunc,
1775         FT_Hash_CompareFunc, FT_Hash_FreeFunc): New typedefs.
1776         (FT_HashRec): Add `lookup', `compare', and `free' fields.
1778         * src/base/fthash.c (hash_str_lookup, hash_str_compare,
1779         hash_str_free): New functions.
1780         (ft_hash_init): Set function pointers.
1781         (hash_bucket, ft_hash_free): Use them.
1783 2015-12-20  Werner Lemberg  <wl@gnu.org>
1785         [base, bdf] Use a union as a hash key.
1787         We want to support both an integer and a string key later on.
1789         * include/freetype/internal/fthash.h (FT_Hashkey): New union.
1790         (FT_HashnodeRec): Updated.
1791         (ft_hash_insert, ft_hash_lookup): Renamed to ...
1792         (ft_hash_str_insert, ft_hash_str_lookup): ... this.
1794         * src/base/fthash.c (hash_bucket): Updated.
1795         (ft_hash_insert, ft_hash_lookup): Renamed to ...
1796         (hash_insert, hash_lookup): ... this.
1797         (ft_hash_str_insert, ft_hash_str_lookup): New wrapper functions.
1799         * src/bdf/bdflib.c: Updated.
1801 2015-12-19  Werner Lemberg  <wl@gnu.org>
1803         [bdf] Use new hash functions.
1805         * src/bdf/bdf.h: Include FT_INTERNAL_HASH_H.
1806         (hashnode, hashtable): Removed.
1807         (bdf_font_t): Use `FT_HashRec' type for `proptbl'.
1809         * src/bdf/bdflib.c: Remove all hash functions.
1810         Update code for new hash structure and function names.
1812 2015-12-19  Werner Lemberg  <wl@gnu.org>
1814         [bdf, base] Lift hash functions from bdf driver to base module.
1816         * src/base/fthash.c, include/freetype/internal/fthash.h: New files,
1817         containing (massaged) code from `bdflib.c' and `bdf.h'.
1819         * include/freetype/internal/internal.h (FT_INTERNAL_HASH_H): New
1820         macro.
1822         * src/base/ftbase.c: Include `fthash.c'.
1824         * src/base/Jamfile (_sources): Add `fthash'.
1826         * src/base/rules.mk (BASE_SRC): Add `fthash.c'.
1828         * docs/LICENSE.TXT: Updated.
1830 2015-12-15  Werner Lemberg  <wl@gnu.org>
1832         [autofit] Add blue-zone support for Bengali script.
1834         This essentially moves the Bengali script from the `Indic' hinter to
1835         the `Latin' hinter.
1837         * src/autofit/afblue.dat: Add blue zone data for Bengali.
1839         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1841         * src/autofit/afscript.h: Add Bengali standard characters and move
1842         data out of AF_CONFIG_OPTION_INDIC block.
1844         * src/autofit/afranges.c: Move Bengali data out of
1845         AF_CONFIG_OPTION_INDIC block.
1847         * src/autofit/afstyles.h: Update Bengali data; in particular, use
1848         AF_WRITING_SYSTEM_LATIN.
1850 2015-12-14  Ben Wagner  <bungeman@gmail.com>
1852         [bdf] Remove dead code (#46625).
1854         The BDF specification only allows decimal numbers, no octal or
1855         hexadecimal decoding is needed.
1857         * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous,
1858         _bdf_atos): Remove unused code and parameters.
1859         Update all callers.
1860         (odigits): Remove.
1862 2015-12-14  Werner Lemberg  <wl@gnu.org>
1864         [base] Fix calls to `FT_Stream_Seek'.
1866         * src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set
1867         `error'.
1869 2015-12-14  Ben Wagner  <bungeman@gmail.com>
1871         [base] Check error when seeking to data supplied offset (#46635).
1873         * src/base/ftobjs.c (open_face_PS_from_sfnt_stream):
1874         `ft_lookup_PS_in_sfnt_stream' returns offset and length from
1875         user supplied data.  Use of this these values must be checked.
1877 2015-12-13  Werner Lemberg  <wl@gnu.org>
1879         [autofit] Add support for Myanmar script.
1881         * src/autofit/afblue.dat: Add blue zone data for Myanmar.
1883         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1885         * src/autofit/afscript.h: Add Myanmar standard characters.
1887         * src/autofit/afranges.c: Add Myanmar data.
1889         * src/autofit/afstyles.h: Add Myanmar data.
1891 2015-12-12  Werner Lemberg  <wl@gnu.org>
1893         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Minor.
1895 2015-12-12  Werner Lemberg  <wl@gnu.org>
1897         * src/autofit/afscript.h: Avoid potential crash.
1899 2015-12-10  Werner Lemberg  <wl@gnu.org>
1901         [autofit] Restore OpenType feature check.
1903         This was removed while rewriting the HarfBuzz interface.
1905         * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add `hb_buf' field to
1906         hold internal HarfBuzz buffer, needed for feature comparison.
1908         * src/autofit/afglobal.c (af_face_globals_new,
1909         af_face_globals_free): Initialize and destroy `hb_buf'.
1911         * src/autofit/afshaper.c (af_shaper_get_cluster): Compare character
1912         (cluster) with and without applied feature.
1914         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix tracing
1915         message.
1917 2015-12-10  Werner Lemberg  <wl@gnu.org>
1919         [autofit] Remove redundant code.
1921         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Do it.
1923 2015-12-09  Werner Lemberg  <wl@gnu.org>
1925         [autofit] Thinko.
1927         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Don't count
1928         empty blue zones (bug introduced 2015-12-06).
1930 2015-12-09  Werner Lemberg  <wl@gnu.org>
1932         [autofit] Introduce subscript top blue zones.
1934         This feature is mainly for Khmer: The idea is to avoid a clash
1935         between the top of subscript glyphs and the bottom of normal
1936         baseline glyphs.
1938         This only works for character clusters mapped to multiple glyphs.
1940         * src/autofit/afblue.dat: Add subscript top blue zone for Khmer.
1942         * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_SUB_TOP): New
1943         macro.
1945         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1947         * src/autofit/aflatin.h (AF_LATIN_IS_SUB_TOP_BLUE,
1948         AF_LATIN_BLUE_SUB_TOP): New macros.
1950         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle new
1951         blue zone property.
1952         Update tracing messages.
1953         (af_latin_metrics_scale_dim): Handle new blue zone property.
1954         (af_latin_hints_compute_blue_edges): Updated.
1956 2015-12-09  Werner Lemberg  <wl@gnu.org>
1958         [autofit] Fix tracing message.
1960         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Display
1961         inactive blue zones also.
1963 2015-12-06  Werner Lemberg  <wl@gnu.org>
1965         * src/autofit/afblue.dat: Add more Khmer clusters.
1967         Some fonts have incorrect ligatures; we need more samples to get a
1968         good mean value.
1970         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1972 2015-12-06  Werner Lemberg  <wl@gnu.org>
1974         [autofit] Typos.
1976         * src/autofit/afshaper.c (af_shaper_buf_create, af_shaper_get_elem)
1977         [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Make it compile.
1979 2015-12-06  Werner Lemberg  <wl@gnu.org>
1981         [autofit] Add support for Khmer script.
1983         We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and
1984         `Khmer symbols' (`khms', U+19E0-U+19FF).
1986         * src/autofit/afblue.dat: Add blue zone data for Khmer.
1988         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1990         * src/autofit/afscript.h: Add Khmer standard characters.
1992         * src/autofit/afranges.c: Add Khmer data.
1994         * src/autofit/afstyles.h: Add Khmer data.
1996 2015-12-06  Werner Lemberg  <wl@gnu.org>
1998         [autofit] Rewrite HarfBuzz interface to support character clusters.
2000         Scripts like Khmer have blue zones that can't be directly
2001         represented by Unicode characters.  Instead, it is necessary to let
2002         HarfBuzz convert character clusters into proper glyph representation
2003         forms, then deriving the blue zone information from the resulting
2004         glyphs.
2006         * src/autofit/hbshim.c, src/autofit/hbshim.h: Replaced by...
2007         * src/autofit/afshaper.c, src/autofit/afshaper.h: ... these two new
2008         files, providing a new API to access HarfBuzz.
2010         The new API manages a HarfBuzz buffer with `af_shaper_buf_create'
2011         and `af_shaper_buf_destroy'.  The buffer receives a UTF8 encoded
2012         string with function `af_shaper_get_cluster', and the resulting
2013         glyph data (indices, advance widths, vertical offsets) can be
2014         iteratively accessed with function `af_shaper_get_elem'.
2016         * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
2017         af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
2019         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
2020         af_latin_metrics_init_blues, af_latin_metrics_check_digits):
2021         Updated.
2023         * include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/.
2025         * src/autofit/afglobal.c: s/hbshim.h/afshaper.h/.
2026         (af_face_globals_compute_style_coverage): Updated.
2028         * src/autofit/afglobal.h: s/hbshim.h/afshaper.h/.
2030         * src/autofit/autofit.c: s/hbshim.c/afshaper.c/.
2032         * src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC):
2033         Updated.
2035 2015-12-06  Werner Lemberg  <wl@gnu.org>
2037         [autofit] Prepare forthcoming changes.
2039         This makes it easier to control the commits.
2041         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Add dummy
2042         loop.  No functional change.
2044 2015-12-06  Werner Lemberg  <wl@gnu.org>
2046         [autofit] Use string of standard characters.
2048         This is more flexible; additionally, it would allow character
2049         clusters.
2051         * src/autofit/aftypes.h (SCRIPT, AF_DEFINE_SCRIPT_CLASS): Updated.
2052         (AF_ScriptClassRec): Replace `standard_char[123]' with
2053         `standard_charstring'.
2055         * src/autofit/afscript.h: Replace last three character arguments
2056         of the `SCRIPT' calls with a string parameter, holding the standard
2057         characters (in UTF-8 encoding) separated with spaces.
2059         * src/autofit/afglobal.c, src/autofit/afglobal.h,
2060         src/autofit/afpic.c, src/autofit/afranges.c, src/autofit/hbshim.c
2061         (SCRIPT): Updated.
2063         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
2064         src/autofit/aflatin.c (af_latin_metrics_init_widths): Updated.
2066 2015-12-05  Werner Lemberg  <wl@gnu.org>
2068         * src/autofit/afblue.dat: Separate blue zone characters with spaces.
2070         Another preparation for character cluster support.
2072         * src/autofit/afblue.c, src/autofit.afblue.h: Regenerated.
2074 2015-12-05  Werner Lemberg  <wl@gnu.org>
2076         * src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces.
2078         Instead, reduce multiple spaces to a single one.  We need this later
2079         for supporting character clusters in `afblue.dat'.
2081 2015-12-05  Werner Lemberg  <wl@gnu.org>
2083         * src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'.
2085         * src/autofit/afblue.h: Regenerated.
2087 2015-12-05  Werner Lemberg  <wl@gnu.org>
2089         * src/autofit/afwarp.c: s/INT_MIN/FT_INT_MIN/.
2091 2015-12-03  Werner Lemberg  <wl@gnu.org>
2093         * builds/unix/install.mk (install): Remove stale `ft2build.h'.
2095 2015-12-01  Werner Lemberg  <wl@gnu.org>
2097         [type1] Avoid dangling pointer (#46572).
2099         * src/type1/t1afm.c (T1_Read_Metrics): Properly reset
2100         `face->afm_data'.
2102 2015-11-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
2104         * include/freetype/ftlcdfil.h: Documentation tweak.
2106 2015-11-28  Werner Lemberg  <wl@gnu.org>
2108         * Version 2.6.2 released.
2109         =========================
2112         Tag sources with `VER-2-6-2'.
2114         * docs/VERSION.DLL: Update documentation and bump version number to
2115         2.6.2.
2117         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
2118         builds/windows/vc2005/index.html,
2119         builds/windows/vc2008/freetype.vcproj,
2120         builds/windows/vc2008/index.html,
2121         builds/windows/vc2010/freetype.vcxproj,
2122         builds/windows/vc2010/index.html,
2123         builds/windows/visualc/freetype.dsp,
2124         builds/windows/visualc/freetype.vcproj,
2125         builds/windows/visualc/index.html,
2126         builds/windows/visualce/freetype.dsp,
2127         builds/windows/visualce/freetype.vcproj,
2128         builds/windows/visualce/index.html,
2129         builds/wince/vc2005-ce/freetype.vcproj,
2130         builds/wince/vc2005-ce/index.html,
2131         builds/wince/vc2008-ce/freetype.vcproj,
2132         builds/wince/vc2008-ce/index.html: s/2.6.1/2.6.2/, s/261/262/.
2134         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
2136         * builds/unix/configure.raw (version_info): Set to 18:2:12.
2137         * CMakeLists.txt (VERSION_PATCH): Set to 2.
2139         * docs/CHANGES: Updated.
2141 2015-11-28  Werner Lemberg  <wl@gnu.org>
2143         Fix C++ compilation.
2145         * src/autofit/afloader.c: Include FT_INTERNAL_CALC_H.
2147         * src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler.
2149 2015-11-28  Nikolaus Waxweiler  <madigens@gmail.com>
2151         Change default LCD filter to be normalized and color-balanced.
2153         * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update
2154         `default_filter'.
2156 2015-11-28  Werner Lemberg  <wl@gnu.org>
2158         [docmaker] Allow references to section names.
2160         In the reference, we show the section's title enclosed in single
2161         quotes.
2163         * src/tools/docmaker/formatter.py (Formatter::__init__): Collect
2164         section names as identifiers.
2166         * src/tools/docmaker/tohtml.py (section_title_header): Split into...
2167         (section_title_header1, section_title_header2): ... these two
2168         strings.
2169         (HtmlFormatter::make_block_url, make_html_word, html_source_quote):
2170         Handle sections.
2171         (HtmlFormatter::section_enter): Updated to add `id' HTML attribute.
2173 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2175         [cmake] Add script to test the config module.
2177         * builds/cmake/testbuild.sh: New file.
2179 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2181         * CMakeLists.txt: Create `freetype-config.cmake' config module.
2183 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2185         * CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'.
2187 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2189         [cmake] Add better control of library dependencies.
2191         * CMakeLists.txt: Add `WITH_*' variables to force/auto/omit
2192         ZLIB/BZip2/PNG/HarfBuzz.
2194 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2196         [cmake] Make `FindHarfBuzz' observe the REQUIRED option.
2198         * builds/cmake/FindHarfBuzz.cmake: Implement it.
2200 2015-11-27  Werner Lemberg  <wl@gnu.org>
2202         [cmake] Collect files specific to cmake in `builds/cmake'.
2204         * builds/FindHarfBuzz.cmake: Move to ...
2205         * builds/cmake/FindHarfBuzz.cmake: ... this place.
2207         * CMakeLists.txt (CMAKE_MODULE_PATH): Updated.
2209 2015-11-27  Alexander Bock  <alexander.j.bock@nasa.gov>
2211         CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'.
2213 2015-11-26  Werner Lemberg  <wl@gnu.org>
2215         [docmaker] Allow `foo[bar]' as identifier.
2217         We need this to handle equally named properties in different
2218         modules.
2220         * src/tools/docmaker/content.py (re_identifier),
2221         src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'.
2223         * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word,
2224         HtmlFormatter::index_exit, HtmlFormatter::section_enter,
2225         HtmlFormatter::block_enter): Handle `foo[bar]'.
2227 2015-11-25  Werner Lemberg  <wl@gnu.org>
2229         * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480).
2231         (_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its
2232         contents.
2234 2015-11-21  Werner Lemberg  <wl@gnu.org>
2236         * include/freetype/internal/ftcalc.h: Don't use `register' keyword.
2238         This fixes compiler warnings.
2240         Reported by Behdad.
2242 2015-11-20  Werner Lemberg  <wl@gnu.org>
2244         Add `FT_LCD_FILTER_LEGACY1' enum value.
2246         This does the same as `FT_LCD_FILTER_LEGACY'.
2248         See
2250           https://bugs.freedesktop.org/show_bug.cgi?id=92981
2252         for the reasoning.
2254         * include/freetype/ftlcdfil.h (FT_LcdFilter): New value
2255         `FT_LCD_FILTER_LEGACY1'.
2257         * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it.
2259 2015-11-15  Werner Lemberg  <wl@gnu.org>
2261         * src/autofit/afhints.c (af_get_segment_index): Fix it.
2263         The old code was too simple, returning invalid values in most cases
2264         where a segment crosses the contour start.
2266 2015-11-15  Werner Lemberg  <wl@gnu.org>
2268         * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439).
2270 2015-11-11  Werner Lemberg  <wl@gnu.org>
2272         [cff, autofit] Switch off stem darkening by default.
2274         * src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c
2275         (cff_driver_init): Do it.
2277 2015-11-10  Jan Alexander Steffens (heftig)  <jan.steffens@gmail.com>
2279         Allow native CFF hinter in FT_RENDER_MODE_LIGHT.
2281         Both the native CFF hinter and the auto-hinter now have a very
2282         similar rendering style.
2284         * include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no
2285         longer implies FT_LOAD_FORCE_AUTOHINT.
2287         * include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New
2288         macro.
2290         * include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New
2291         macro.
2293         * src/cff/cffdrivr.c (cff_driver_class): Use it.
2295         * src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection
2296         logic.
2298 2015-11-09  Werner Lemberg  <wl@gnu.org>
2300         * src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408).
2302 2015-11-09  Werner Lemberg  <wl@gnu.org>
2304         [truetype] Remove integer to pointer conversion compiler warning.
2306         Problem reported by Alexei.
2308         * src/truetype/ttgload.c (load_truetype_glyph): Use a solution found
2309         in the glib library to fix the issue.
2311 2015-11-08  Behdad Esfahbod  <behdad@behdad.org>
2313         [sfnt] Accept version 3 of `EBLC' and `CBLC' tables also.
2315         * src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it.
2317 2015-11-08  Philipp Knechtges  <philipp-dev@knechtges.com>
2319         [autofit] Don't distort (latin) glyphs too much (#46195).
2321         * src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and
2322         `descender' fields.
2324         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect
2325         ascender and descender data for blue zones.
2326         (af_latin_metrics_scale_dim): Reject vertical scaling values that
2327         change the result by more than two pixels.
2329 2015-11-05  Werner Lemberg  <wl@gnu.org>
2331         [sfnt] Ignore embedded bitmaps with zero size (#46379).
2333         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement
2334         it.
2336 2015-11-04  Werner Lemberg  <wl@gnu.org>
2338         [truetype] Catch infinite recursion in subglyphs (#46372).
2340         * include/freetype/internal/tttypes.h (TT_LoaderRec): New field
2341         `composites'.
2343         * src/truetype/ttgload.c: Include FT_LIST_H.
2344         (load_truetype_glyph): Add composite subglyph index to a list;
2345         abort if index is already in list.
2346         (tt_loader_init): Updated.
2347         (tt_loader_done): New function.
2348         (TT_Load_Glyph): Call `tt_loader_done'.
2350 2015-11-04  Werner Lemberg  <wl@gnu.org>
2352         [truetype] Better tracing of composite glyphs.
2354         * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
2355         load_truetype_glyph): Implement it.
2357 2015-11-03  Werner Lemberg  <wl@gnu.org>
2359         [sfnt] Protect against zero-size bitmaps (#46345).
2361         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check
2362         `glyph_size'.
2364 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2366         * src/autofit/afloader.c (af_loader_load_g): Implement emboldening.
2368 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2370         [autofit] Implement darkening computation function.
2372         This is a crude adaption of the original `cf2_computeDarkening'
2373         function.
2375         * src/autofit/afloader.c (af_intToFixed, af_fixedToInt,
2376         af_floatToFixed): New macros, taken from `cf2fixed.h'.
2377         (af_loader_compute_darkening): New function.
2378         * src/autofit/afloader.h: Updated.
2380 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2382         [autofit] Add functions to get standard widths for writing systems.
2384         We need the computed standard horizontal and vertical widths for the
2385         emboldening calculation.  This method provides a convenient way to
2386         extract it from writing-system-specific metrics structures, which
2387         all script definitions must implement.
2389         * src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New
2390         function type.
2391         (AF_WritingSystemClassRec): New member `style_metrics_getstdw'.
2392         (AF_DEFINE_WRITING_SYSTEM_CLASS): Updated.
2394         * src/autofit/afcjk.c (af_cjk_get_standard_width): New function.
2395         (af_cjk_writing_system_class): Updated.
2396         * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated.
2397         * src/autofit/afindic.c (af_cjk_get_standard_width): New function.
2398         (af_indic_writing_system_class): Updated.
2399         * src/autofit/aflatin.c (af_latin_get_standard_width): New function.
2400         (af_indic_writing_system_class): Updated.
2401         * src/autofit/aflatin.c (af_latin_get_standard_width): New function.
2402         (af_indic_writing_system_class): Updated.
2404 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2406         [autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data.
2408         * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields.
2410         * src/autofit/afglobal.c (af_face_globals_new): Initialize new
2411         fields.
2412         (af_face_globals_free): Reset new fields.
2414 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2416         [autofit] Add stem-darkening properties.
2418         Actual code follows in a later commit.
2420         * include/freetype/ftautoh.h: Document `no-stem-darkening' and
2421         `darkening-parameters'.
2423         * src/autofit/afmodule.h: New fields `no_stem_darkening' and
2424         `darken_params'.
2426         * src/autofit/afmodule.c (af_property_set, af_property_get):
2427         Handle them.
2428         (af_autofitter_init): Initialize them.
2430 2015-11-02  Ben Wagner  <bungeman@gmail.com>
2432         [ftfuzzer] Add support for multiple files (patch #8779).
2434         Currently, libFuzzer only supports mutation of a single file.  We
2435         circumvent this problem by using an uncompressed tar archive as
2436         multiple-file input for the fuzzer.
2438         This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing;
2439         a constructed tarball should contain a font file as the first
2440         element, and files to be attached as further elements.
2442         * src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers.
2443         (archive_read_entry_data, parse_data): New functions.
2444         (LLVMFuzzerTestOneInput): Updated.
2446         * src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom
2447         mutator for libFuzzer that can mutate tarballs in a sensible way.
2449 2015-10-31  Werner Lemberg  <wl@gnu.org>
2451         [sfnt] Fix cmap 14 validation (#46346).
2453         * src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before
2454         accessing `numRanges' and `numMappings'.
2455         Fix size check for non-default UVS table.
2457 2015-10-31  Werner Lemberg  <wl@gnu.org>
2459         [sfnt] Handle infinite recursion in bitmap strikes (#46344).
2461         * src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc,
2462         tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned,
2463         tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add
2464         argument for recursion depth.
2465         (tt_sbit_decoder_load_compound): Add argument for recursion depth.
2466         Increase recursion counter for recursive call.
2467         (tt_sbit_decoder_load_image): Add argument for recursion depth.
2468         Check recurse depth.
2469         (tt_face_load_sbit_image): Updated.
2471 2015-10-29  Werner Lemberg  <wl@gnu.org>
2473         * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor.
2475 2015-10-29  Werner Lemberg  <wl@gnu.org>
2477         * CMakeLists.txt: Remove code to set MSVC's /FD compiler switch.
2479         Problem reported by David Capello <davidcapello@gmail.com>; see
2481           https://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html
2483         for details.
2485 2015-10-27  Werner Lemberg  <wl@gnu.org>
2487         [pfr] Add some safety guards (#46302).
2489         * src/pfr/pfrload.h (PFR_CHECK): Rename to...
2490         (PFR_CHECK_SIZE): ... this.
2491         (PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE.
2493         * src/pfr/pfrload.c (pfr_log_font_count): Check `count'.
2494         (pfr_extra_item_load_kerning_pairs): Remove tracing message.
2495         (pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate.
2496         Allocate `chars' after doing a size checks.
2498         * src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid
2499         bitmap format to...
2500         (pfr_slot_load_bitmap): ... this function.
2501         Check bitmap size.
2503 2015-10-26  Werner Lemberg  <wl@gnu.org>
2505         [truetype] Fix sanitizing logic for `loca' (#46223).
2507         * src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an
2508         incorrect adjustment of the number of glyphs, most often using far
2509         too large values.
2511 2015-10-25  Werner Lemberg  <wl@gnu.org>
2513         [autofit] Improve tracing.
2515         * src/autofit/afhints.c (af_print_idx, af_get_segment_index,
2516         af_get_edge_index): New functions.
2518         (af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'.
2519         Add segment and edge index for each point.
2520         Slightly change printing order of some elements.
2521         Don't print `-1' but `--' for missing elements.
2523         (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove
2524         unnecessary `|', `[', and `]'.
2525         Don't print `-1' but `--' for missing elements.
2527 2015-10-24  Werner Lemberg  <wl@gnu.org>
2529         [sfnt] Sanitize bitmap strike glyph height.
2531         Problem reported by Nikolay Sivov <bunglehead@gmail.com>.
2533         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value
2534         for `metrics->height' by applying some heuristics.
2536 2015-10-22  Werner Lemberg  <wl@gnu.org>
2538         [sfnt, type42] Fix clang compiler warnings.
2540         * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'.
2542         * src/type42/t42parse.c (t42_parse_sfnts): Use proper cast.
2544 2015-10-22  Dave Arnold  <darnold@adobe.com>
2545             Werner Lemberg  <wl@gnu.org>
2547         [cff] Avoid overflow/module arithmetic.
2549         This modifies the addition of subroutine number to subroutine bias
2550         from unsigned to signed, but does not change any results.
2552         * src/cff/cf2ft.c (cf2_initGlobalRegionBuffer,
2553         cf2_initLocalRegionBuffer): Change variable names from (unsigned)
2554         `idx' to (signed) `subrNum', since it is not an index until after
2555         the bias is added.
2556         * src/cff/cf2ft.h: Updated.
2558         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
2559         Updated similarly.
2561 2015-10-22  Werner Lemberg  <wl@gnu.org>
2563         [cid] Better check of `SubrCount' dictionary entry (#46272).
2565         * src/cid/cidload.c (cid_face_open): Add more sanity tests for
2566         `fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'.
2568 2015-10-21  Werner Lemberg  <wl@gnu.org>
2570         [base] Pacify compiler (#46266).
2572         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and
2573         `anchor'.
2575 2015-10-21  Werner Lemberg  <wl@gnu.org>
2577         [type42] Fix heap buffer overflow (#46269).
2579         * src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in
2580         bounds checking.
2582 2015-10-21  Dave Arnold  <darnold@adobe.com>
2584         [cff] Fix limit in assert for max hints.
2586         * src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the
2587         limit (96 bits).
2589 2015-10-21  Dave Arnold  <darnold@adobe.com>
2591         [cff] Remove an assert (#46107).
2593         * src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges
2594         in wrong order.
2596 2015-10-21  Werner Lemberg  <wl@gnu.org>
2598         [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257).
2600         * src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize'
2601         only after thorough checks.
2602         Add tracing messages.
2604 2015-10-21  Werner Lemberg  <wl@gnu.org>
2606         [type42] Better check invalid `sfnts' array data (#46255).
2608         * src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be
2609         checked individually against available data size.
2611 2015-10-20  Werner Lemberg  <wl@gnu.org>
2613         [cid] Add a bunch of safety checks.
2615         * src/cid/cidload.c (parse_fd_array): Check `num_dicts' against
2616         stream size.
2617         (cid_read_subrs): Check largest offset against stream size.
2618         (cid_parse_dict): Move safety check to ...
2619         (cid_face_open): ... this function.
2620         Also test length of binary data and values of `SDBytes',
2621         `SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'.
2623 2015-10-20  Werner Lemberg  <wl@gnu.org>
2625         [cid] Avoid segfault with malformed input (#46250).
2627         * src/cid/cidload.c (cid_read_subrs): Return a proper error code for
2628         unsorted offsets.
2630 2015-10-20  StudioEtrange  <nomorgan@gmail.com>
2632         * CMakeLists.txt: Enable shared library builds on MinGW (#46233).
2634 2015-10-20  Werner Lemberg  <wl@gnu.org>
2636         * src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229).
2638 2015-10-19  Ben Wagner  <bungeman@gmail.com>
2640         [cid] Better handle invalid glyph stream offsets (#46221).
2642         * src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph
2643         length.
2645 2015-10-18  Werner Lemberg  <wl@gnu.org>
2647         [psaux] Fix tracing of negative numbers.
2649         Due to incorrect casting negative numbers were shown as very large
2650         (positive) integers on 64bit systems.
2652         * src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_none>:
2653         Use division instead of shift.
2655 2015-10-18  Werner Lemberg  <wl@gnu.org>
2657         [truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223).
2659         * devel/ftoption.h, include/freetype/config/ftoption.h: Surround it
2660         with #ifndef ... #endif, as suggested in the tracker issue.
2662 2015-10-18  Werner Lemberg  <wl@gnu.org>
2664         [truetype] Better protection against malformed `fpgm' (#46223).
2666         * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a
2667         malformed `fpgm' table more than once.
2669 2015-10-17  Werner Lemberg  <wl@gnu.org>
2671         * src/cid/cidgload.c (cid_load_glyph): Fix memory leak.
2673         Reported by Kostya Serebryany <kcc@google.com>.
2675 2015-10-17  Werner Lemberg  <wl@gnu.org>
2677         [bdf] Prevent memory leak (#46217).
2679         * src/bdf/bdflib.c (_bdf_parse_glyphs) <STARTCHAR>: Check
2680         _BDF_GLYPH_BITS.
2682 2015-10-17  Werner Lemberg  <wl@gnu.org>
2684         [bdf] Use stream size to adjust number of glyphs.
2686         * src/bdf/bdflib.c (ACMSG17): New message macro.
2687         (_bdf_parse_t): Add member `size'.
2688         (bdf_load_font): Set `size'.
2689         (_bdf_parse_glyphs): Adjust `cnt' if necessary.
2691 2015-10-17  Werner Lemberg  <wl@gnu.org>
2693         * src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size.
2695 2015-10-17  Werner Lemberg  <wl@gnu.org>
2697         * src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222).
2699 2015-10-17  Werner Lemberg  <wl@gnu.org>
2701         [psaux] Fix heap buffer overflow (#46221).
2703         * src/psaux/t1decode.c (t1_decoder_parse_charstring) <operator 12>:
2704         Fix limit check.
2706 2015-10-17  Werner Lemberg  <wl@gnu.org>
2708         * src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220).
2710 2015-10-15  Kostya Serebryany  <kcc@google.com>
2712         [ftfuzzer] Add README.
2714         * src/tools/ftfuzzer/README: New file.
2716 2015-10-15  Ben Wagner  <bungeman@gmail.com>
2718         [bdf] Fix memory leak (#46213).
2720         * src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in
2721         case of error.
2723 2015-10-15  Werner Lemberg  <wl@gnu.org>
2725         [truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208).
2727         * devel/ftoption.h, include/freetype/config/ftoption.h
2728         (TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro.
2730         * src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed.
2731         (TT_RunIns): Updated.
2733 2015-10-15  Werner Lemberg  <wl@gnu.org>
2735         * src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing.
2737         The used indices were off by 1.
2739 2015-10-15  Ben Wagner  <bungeman@gmail.com>
2740             Werner Lemberg  <wl@gnu.org>
2742         * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).
2744 2015-10-15  Werner Lemberg  <wl@gnu.org>
2746         [base] Compute MD5 checksums only if explicitly requested.
2748         This improves profiling accuracy.
2750         * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.
2752 2015-10-14  Werner Lemberg  <wl@gnu.org>
2754         [base] Use `FT_' namespace for MD5 functions (#42366).
2756         * src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'.
2757         Undefine HAVE_OPENSSL.
2759 2015-10-13  Werner Lemberg  <wl@gnu.org>
2761         [type1] Correctly handle missing MM axis names (#46202).
2763         * src/type1/t1load.c (T1_Get_MM_Var): Implement it.
2765 2015-10-13  Werner Lemberg  <wl@gnu.org>
2767         [pcf] Quickly exit if font index < 0.
2769         Similar to other font formats, this commit makes the parser no
2770         longer check the whole PCF file but only the header and the TOC if
2771         we just want to get the number of available faces (and a proper
2772         recognition of the font format).
2774         * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
2775         Exit quickly if face_index < 0.
2777         * src/pcfread.c (pcf_load_font): Add `face_index' argument.
2778         Exit quickly if face_index < 0.
2780         * src/pcf/pcf.h: Updated.
2782 2015-10-13  Werner Lemberg  <wl@gnu.org>
2784         [ftfuzzer] Handle TTCs and MM/GX variations.
2786         This patch also contains various other improvements.
2788         * src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject
2789         pre-C++11 compilers.
2790         (FT_Global): New class.  Use it to provide a global constructor and
2791         destructor for the `FT_Library' object.
2792         (setIntermediateAxis): New function to select an (arbitrary)
2793         instance.
2794         (LLVMFuzzerTestOneInput): Loop over all faces and named instances.
2795         Also call `FT_Set_Char_Size'.
2797 2015-10-13  Werner Lemberg  <wl@gnu.org>
2799         [truetype] Refine some GX sanity tests.
2801         Use the `gvar' table size instead of the remaining bytes in the
2802         stream.
2804         * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'.
2806         * src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'.
2807         (ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument
2808         `size'.
2809         (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated.
2811 2015-10-13  Werner Lemberg  <wl@gnu.org>
2813         [truetype] Another GX sanity test.
2815         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
2816         `tupleCount'.
2817         Add tracing message.
2819 2015-10-13  Werner Lemberg  <wl@gnu.org>
2821         [truetype] Fix memory leak for broken GX fonts (#46188).
2823         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
2824         deallocation.
2826 2015-10-13  Werner Lemberg  <wl@gnu.org>
2828         [truetype] Fix commit from 2015-10-10.
2830         * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error
2831         handling body to condition.
2833 2015-10-12  Werner Lemberg  <wl@gnu.org>
2835         [unix] Make MKDIR_P actually work.
2837         * builds/unix/configure.raw: Fix underquoting of `INSTALL' and
2838         `MKDIR_P'.
2840         Problem reported by Dan Liddell <lddll@yahoo.com>.
2842 2015-10-11  Werner Lemberg  <wl@gnu.org>
2844         [sfnt] Improve extraction of number of named instances.
2846         * src/sfnt/sfobjs.c (sfnt_init_face)
2847         [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against
2848         `fvar' table size.
2850 2015-10-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
2852         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow
2853         (#46149).
2855 2015-10-10  Werner Lemberg  <wl@gnu.org>
2857         [sfnt] Fix infinite loops with broken cmaps (#46167).
2859         * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care
2860         of border conditions (i.e., if the loops exit naturally).
2862 2015-10-10  Werner Lemberg  <wl@gnu.org>
2864         [truetype] More sanity tests for GX handling.
2866         These tests should mainly help avoid unnecessarily large memory
2867         allocations in case of malformed fonts.
2869         * src/truetype/ttgxvar.c (ft_var_readpackedpoints,
2870         ft_var_readpackeddeltas): Check number of points against stream
2871         size.
2872         (ft_var_load_avar): Check `pairCount' against table length.
2873         (ft_var_load_gvar): Check `globalCoordCount' and `glyphCount'
2874         against table length.
2875         (tt_face_vary_cvt): Check `tupleCount' and `offsetToData'.
2876         Fix trace.
2877         (TT_Vary_Apply_Glyph_Deltas): Fix trace.
2878         Free `sharedpoints' to avoid memory leak.
2880 2015-10-10  Werner Lemberg  <wl@gnu.org>
2882         [truetype] Better protection against malformed GX data (#46166).
2884         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly
2885         handle empty `localpoints' array.
2887 2015-10-10  Werner Lemberg  <wl@gnu.org>
2889         * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162).
2891 2015-10-09  Werner Lemberg  <wl@gnu.org>
2893         * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size.
2895 2015-10-08  Werner Lemberg  <wl@gnu.org>
2897         [pcf] Protect against invalid number of TOC entries (#46159).
2899         * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries
2900         against size of data stream.
2902 2015-10-08  Werner Lemberg  <wl@gnu.org>
2904         [type42] Protect against invalid number of glyphs (#46159).
2906         * src/type42/t42parse.c (t42_parse_charstrings): Check number of
2907         `CharStrings' dictionary entries against size of data stream.
2909 2015-10-08  Werner Lemberg  <wl@gnu.org>
2911         [sfnt] Fix some signed overflows (#46149).
2913         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2914         <TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'.
2916 2015-10-08  Werner Lemberg  <wl@gnu.org>
2918         [type1] Protect against invalid number of subroutines (#46150).
2920         * src/type1/t1load.c (parse_subrs): Check number of
2921         `Subrs' dictionary entries against size of data stream.
2923 2015-10-07  Kostya Serebryany  <kcc@google.com>
2925         [ftfuzzer] Add support for LLVM's LibFuzzer.
2927         * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.
2929 2015-10-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
2931         [smooth] Faster alternative line renderer.
2933         This implementation renders the entire line segment at once without
2934         subdividing it into scanlines.  The main speed improvement comes from
2935         reducing the number of divisions to just two per line segment, which
2936         is a bare minimum to calculate cell coverage in a smooth rasterizer.
2937         Notably, the progression from cell to cell does not itself require any
2938         divisions at all.  The speed improvement is more noticeable at larger
2939         sizes.
2941         * src/smooth/ftgrays.c (gray_render_line): New implementation.
2943 2015-10-06  Werner Lemberg  <wl@gnu.org>
2945         [cff] Return correct PS names from pure CFF (#46130).
2947         * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for
2948         SFNT.
2950 2015-10-04  Werner Lemberg  <wl@gnu.org>
2952         [base] Replace left shifts with multiplication (#46118).
2954         * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it.
2956 2015-10-04  Werner Lemberg  <wl@gnu.org>
2958         * Version 2.6.1 released.
2959         =========================
2962         Tag sources with `VER-2-6-1'.
2964         * docs/VERSION.DLL: Update documentation and bump version number to
2965         2.6.1.
2967         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
2968         builds/windows/vc2005/index.html,
2969         builds/windows/vc2008/freetype.vcproj,
2970         builds/windows/vc2008/index.html,
2971         builds/windows/vc2010/freetype.vcxproj,
2972         builds/windows/vc2010/index.html,
2973         builds/windows/visualc/freetype.dsp,
2974         builds/windows/visualc/freetype.vcproj,
2975         builds/windows/visualc/index.html,
2976         builds/windows/visualce/freetype.dsp,
2977         builds/windows/visualce/freetype.vcproj,
2978         builds/windows/visualce/index.html,
2979         builds/wince/vc2005-ce/freetype.vcproj,
2980         builds/wince/vc2005-ce/index.html,
2981         builds/wince/vc2008-ce/freetype.vcproj,
2982         builds/wince/vc2008-ce/index.html: s/2.6/2.6.1/, s/26/261/.
2984         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
2986         * builds/unix/configure.raw (version_info): Set to 18:1:12.
2987         * CMakeLists.txt (VERSION_PATCH): Set to 1.
2989         * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for
2990         dumping functions.
2992 2015-10-04  Werner Lemberg  <wl@gnu.org>
2994         [bzip2, gzip] Avoid access of uninitialized memory (#46109).
2996         * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c
2997         (ft_gzip_file_fill_input): In case of an error, adjust the limit to
2998         avoid copying uninitialized memory.
3000 2015-10-03  Werner Lemberg  <wl@gnu.org>
3002         [bzip2, gzip] Avoid access of uninitialized memory (#46109).
3004         * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c
3005         (ft_gzip_file_fill_output): In case of an error, adjust the limit to
3006         avoid copying uninitialized memory.
3008 2015-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
3010         [smooth] Clean up worker.
3012         * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields.
3014 2015-10-01  Werner Lemberg  <wl@gnu.org>
3016         [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078).
3018         * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of
3019         border conditions (i.e., if the loop exits naturally).
3021 2015-10-01  Werner Lemberg  <wl@gnu.org>
3023         * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges.
3024         They should be a subset of `af_deva_uniranges'.
3026 2015-10-01  Werner Lemberg  <wl@gnu.org>
3028         [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078).
3030         * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to
3031         reject too large glyph indices.
3033 2015-09-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
3035         [smooth] Clean up worker.
3037         * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'.
3038         (gray_start_cell, gray_render_line): Update.
3040 2015-09-30  Werner Lemberg  <wl@gnu.org>
3042         [autofit] Replace `no-base' with `non-base'.
3044         * src/autofit/*: Do it.
3046 2015-09-30  Werner Lemberg  <wl@gnu.org>
3048         [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078).
3050         * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better
3051         skip invalid segments.
3052         If searching the next character, provide a more efficient logic to
3053         speed up the code.
3055 2015-09-30  Werner Lemberg  <wl@gnu.org>
3057         [truetype] Adjust number of glyphs for malformed `loca' tables.
3059         * src/truetype/ttpload.c (tt_face_load_loca): Implement it.
3061 2015-09-29  Werner Lemberg  <wl@gnu.org>
3063         [pshinter] Avoid harmless overflow (#45984).
3065         * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it.
3067 2015-09-28  Werner Lemberg  <wl@gnu.org>
3069         [autofit] Add support for Lao script.
3071         Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone
3072         characters!
3074         * src/autofit/afblue.dat: Add blue zone data for Lao.
3076         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3078         * src/autofit/afscript.h: Add Lao standard characters.
3080         * src/autofit/afranges.c: Add Lao data.
3082         * src/autofit/afstyles.h: Add Lao data.
3084 2015-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3086         [base] Fix a leak by broken sfnt-PS or resource fork (#46028).
3088         open_face_from_buffer() frees passed buffer if valid font
3089         is not found.  But if copying to the buffer is failed,
3090         the allocated buffer should be freed within the caller.
3092         * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free
3093         the buffer `sfnt_ps' if an error caused before calling
3094         open_face_from_buffer().
3095         (Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if
3096         an error caused before calling open_face_from_buffer();
3098 2015-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3100         [mac] Fix buffer size calculation for LWFN font.
3102         * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong
3103         to prevent confused copy by too large chunk size.
3105 2015-09-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
3107         * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro.
3109 2015-09-26  Werner Lemberg  <wl@gnu.org>
3111         [autofit] Minor tracing improvement.
3113         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit
3114         blue zones header line if there are no blue zones.
3116 2015-09-26  Werner Lemberg  <wl@gnu.org>
3118         [bzip2, gzip, lzw] Harmonize function signatures with prototype.
3120         Suggested by Hin-Tak Leung.
3122         * src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c
3123         (ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it.
3125 2015-09-26  Hin-Tak Leung  <htl10@users.sourceforge.net>
3127         Add new FT_LOAD_COMPUTE_METRICS load flag.
3129         * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro.
3130         * src/truetype/ttgload.c (compute_glyph_metrics): Usage.
3132 2015-09-26  Werner Lemberg  <wl@gnu.org>
3134         * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast.
3136 2015-09-25  Werner Lemberg  <wl@gnu.org>
3138         [type1] Protect against invalid number of glyphs (#46029).
3140         * src/type1/t1load.c (parse_charstrings): Check number of
3141         `CharStrings' dictionary entries against size of data stream.
3143 2015-09-23  Werner Lemberg  <wl@gnu.org>
3145         [sfnt] Better checks for invalid cmaps (2/2) (#46019).
3147         While the current code in `FT_Get_Next_Char' correctly rejects
3148         out-of-bounds glyph indices, it can be extremely slow for malformed
3149         cmaps that use 32bit values.  This commit tries to improve that.
3151         * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next,
3152         tt_cmap12_char_map_binary, tt_cmap13_next,
3153         tt_cmap13_char_map_binary): Reject glyph indices larger than or
3154         equal to the number of glyphs.
3156 2015-09-23  Werner Lemberg  <wl@gnu.org>
3158         [base, sfnt] Better checks for invalid cmaps (1/2).
3160         * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds
3161         glyph indices.
3162         (FT_Get_First_Char): Updated.
3164         * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character
3165         codes greater than 0xFFFF.
3167         (tt_cmap8_char_index): Avoid integer overflow in computation of
3168         glyph index.
3169         (tt_cmap8_char_next): Avoid integer overflows in computation of
3170         both next character code and glyph index.
3172         (tt_cmap10_char_index): Fix unsigned integer logic.
3173         (tt_cmap10_char_next): Avoid integer overflow in computation of
3174         next character code.
3176         (tt_cmap12_next): Avoid integer overflows in computation of both
3177         next character code and glyph index.
3178         (tt_cmap12_char_map_binary): Ditto.
3179         (tt_cmap12_char_next): Simplify.
3181         (tt_cmap13_char_map_binary): Avoid integer overflow in computation
3182         of next character code.
3183         (tt_cmap13_char_next): Simplify.
3185 2015-09-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3187         [base] Check too long POST and sfnt resource (#45919).
3189         * src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the
3190         resource fork for Mac OS.  Resource forks larger than 16 MB can be
3191         written but can't be handled correctly, at least in Carbon routine.
3192         See https://support.microsoft.com/en-us/kb/130437.
3194         * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x'
3195         prefix for `%p' formatter.
3197         * src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and
3198         total size of the concatenated POST resource before buffer
3199         allocation.
3200         (Mac_Read_sfnt_Resource): Check the declared size of sfnt resource
3201         before buffer allocation.
3203         * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the
3204         total resource size before buffer allocation.
3206 2015-09-19  Werner Lemberg  <wl@gnu.org>
3208         [sfnt] Improve handling of invalid SFNT table entries (#45987).
3210         This patch fixes weaknesses in function `tt_face_load_font_dir'.
3212         - It incorrectly assumed that valid tables are always at the
3213           beginning.  As a consequence, some valid tables after invalid
3214           entries (which are ignored) were never seen.
3216         - Duplicate table entries (this is, having the same tag) were not
3217           rejected.
3219         - The number of valid tables was sometimes too large, leading to
3220           access of invalid tables.
3222         * src/sfnt/ttload.c (check_table_dir): Add argument to return number
3223         of valid tables.
3224         Add another tracing message.
3225         (tt_face_load_font_dir): Only allocate table array for valid
3226         entries as returned by `check_table_dir'.
3227         Reject duplicate tables and adjust number of valid tables
3228         accordingly.
3230 2015-09-19  Werner Lemberg  <wl@gnu.org>
3232         [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999).
3234         * src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short,
3235         then take the absolute value.
3236         Also apply FT_ABS to `height'.
3238 2015-09-17  Werner Lemberg  <wl@gnu.org>
3240         [type42] Fix memory leak (#45989).
3242         * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single
3243         `CharStrings' array.
3245 2015-09-17  Werner Lemberg  <wl@gnu.org>
3247         [psaux] Fix memory leak (#45986).
3249         * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
3250         Free `temp' in case of error.
3252 2015-09-17  Werner Lemberg  <wl@gnu.org>
3254         [psaux] Improve tracing message.
3256         * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
3257         Handle plural correctly.
3259 2015-09-17  Werner Lemberg  <wl@gnu.org>
3261         [pcf] Fix integer overflows (#45985).
3263         * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv.
3265 2015-09-17  Werner Lemberg  <wl@gnu.org>
3267         [pcf] Use FT_ABS for some property values (#45893).
3269         * src/pcf/pcfread.c (pcf_load_font): Take absolute values for
3270         AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
3271         RESOLUTION_Y.  In tracing mode, add warnings.
3273 2015-09-16  Werner Lemberg  <wl@gnu.org>
3275         Minor fixes for some clang warnings.
3277         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing
3278         initialization.
3280         * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast.
3282 2015-09-15  Werner Lemberg  <wl@gnu.org>
3284         [type1, type42] Fix memory leaks (#45966).
3286         * src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis
3287         names.
3288         (parse_blend_design_map): Allow only a single design map.
3289         (parse_encoding): Handle multiple encoding vectors.
3291         * src/type42/t42parse.c (t42_parse_encoding): Handle multiple
3292         encoding vectors.
3294 2015-09-15  Werner Lemberg  <wl@gnu.org>
3296         [truetype] Fix integer type (#45965).
3298         * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.
3300 2015-09-15  Werner Lemberg  <wl@gnu.org>
3302         * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964).
3304 2015-09-15  Werner Lemberg  <wl@gnu.org>
3306         [type1, type42] Check encoding array size (#45961).
3308         * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
3309         (t42_parse_encoding): Do it.
3311 2015-09-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
3313         * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.
3315 2015-09-14  Werner Lemberg  <wl@gnu.org>
3317         [type1] Fix another potential buffer overflow (#45955).
3319         * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for
3320         `eexec' doesn't exceed `limit'.
3322 2015-09-13  Werner Lemberg  <wl@gnu.org>
3324         Replace `mkinstalldirs' with AC_PROG_MKDIR_P.
3326         * builds/unix/mkinstalldirs: Removed, no longer needed.
3328         * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'.
3329         Update pwd call for `$INSTALL'.
3331         * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'.
3333         * autogen.sh: Updated.
3335 2015-09-13  Werner Lemberg  <wl@gnu.org>
3337         [winfonts] Check alignment shift count for resource data (#45938).
3339         * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.
3341 2015-09-13  Werner Lemberg  <wl@gnu.org>
3343         [type1] Fix potential buffer overflow (#45923).
3345         * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't
3346         point to end of file buffer.
3348 2015-09-13  Werner Lemberg  <wl@gnu.org>
3350         [gzip] Fix access of small compressed files (#45937).
3352         * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.
3354         (ft_gzip_get_uncompressed_file): Correct byte order while reading
3355         unsigned long value.  Without this change, the whole optimization of
3356         accessing small files in `FT_Stream_OpenGzip' is never executed!  As
3357         a consequence, access to PCF files in general (which are normally
3358         small files) should be much improved now as originally intended.
3360 2015-09-11  Werner Lemberg  <wl@gnu.org>
3362         [psaux] Fix potential buffer overflow (#45922).
3364         * src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is
3365         enclosed in balanced expressions, ensure that the cursor position
3366         doesn't get larger than the current limit.
3368 2015-09-11  Werner Lemberg  <wl@gnu.org>
3370         [base] Avoid crash while tracing `load_mac_face'.
3372         Reported in Savannah bug #45919.
3374         * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while
3375         tracing.
3377 2015-09-11  Werner Lemberg  <wl@gnu.org>
3379         [type42] Fix endless loop (#45920).
3381         * src/type42/t42parse.c (t42_parse_encoding): Synchronize with
3382         type1's `parse_encoding'.
3384 2015-09-10  Werner Lemberg  <wl@gnu.org>
3386         [docmaker] Allow `-' in bold and italic markup.
3388         * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
3389         accordingly.
3391 2015-09-09  Alexei Podtelezhnikov  <apodtele@gmail.com>
3393         * src/base/ftcalc.c (FT_RoundFix): Improve.
3395 2015-09-09  Wojciech Mamrak  <wmamrak@gmail.com>
3397         * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.
3399         This commit makes the functions behave as expected, this is,
3400         rounding towards plus or minus infinity.
3402 2015-09-07  Alexei Podtelezhnikov  <apodtele@gmail.com>
3404         * src/smooth/ftgrays.c (gray_render_line): Simplify clipping.
3406 2015-09-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
3408         [raster,smooth] Microoptimizations.
3410         * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
3411         Bezier_Up): Use do-while loops.
3413         * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
3414         gray_convert_glyph): Ditto.
3416 2015-09-04  Werner Lemberg  <wl@gnu.org>
3418         [autofit] Redesign code ranges (2/2).
3420         This commit adds two fallback scripts (`latb', `latp') and
3421         implements support for the no-base character ranges introduced in
3422         the previous commit.
3424         * src/autofit/aftypes.h (AF_ScriptClassRec): Add
3425         `script_uni_nobase_ranges' field.
3426         (AF_DEFINE_SCRIPT_CLASS): Updated.
3428         * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and
3429         `latp' fallback scripts.
3431         * src/autofit/afblue.dat: Add blue zones for Latin subscript and
3432         superscript fallback scripts.
3434         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3436         * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base
3437         characters.
3438         (AF_STYLE_MASK): Updated.
3440         * src/autofit/afglobal.c (SCRIPT): Updated.
3441         (af_face_globals_compute_style_coverage): Handle new style flag.
3443         * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style
3444         flag.
3446         * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges.
3448 2015-09-04  Werner Lemberg  <wl@gnu.org>
3450         [autofit] Redesign code ranges (1/2).
3452         This patch introduces auxiliary code ranges that identify no-base
3453         characters; they refer to glyphs of a script that should be hinted
3454         without alignments to blue zones (mostly diacritics).
3456         It also splits off ranges for fallback scripts that handle subscript
3457         and superscript characters not covered by OpenType features.  For
3458         example, this greatly helps improve the hinting of various phonetic
3459         alphabets, which contain a large amount characters that look like
3460         superscript glyphs.
3462         Finally, code ranges are updated to Unicode 8.0, and enclosed
3463         characters are removed in general since they normally look better if
3464         they stay unhinted.
3466         * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode
3467         8.0.
3468         Split off superscript-like and subscript-like glyphs into...
3470         (af_latb_uniranges, af_latp_uniranges): ... these two new arrays.
3472         (af_xxxx_nobase_uniranges): New arrays that hold no-base characters
3473         of the corresponding character ranges.
3475 2015-09-03  Werner Lemberg  <wl@gnu.org>
3477         [autofit] Pass glyph index to hinting function.
3479         No functionality change yet.
3481         * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass
3482         glyph index.
3484         * src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply),
3485         src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c
3486         (af_indic_hints_apply), src/autofit/aflatin.c
3487         (af_latin_hints_apply), src/autofit/aflatin2.c
3488         (af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g):
3489         Updated.
3491 2015-08-30  Werner Lemberg  <wl@gnu.org>
3493         [autofit] Code clean-up.
3495         * src/autofit/afglobal.h (AF_STYLE_MASK): New macro.
3496         (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition.
3498         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
3499         Updated.
3501 2015-08-30  Werner Lemberg  <wl@gnu.org>
3503         [autofit] Make glyph style array use 16bit values.
3505         * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use
3506         `FT_UShort' for `map' field.
3508         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage,
3509         af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h
3510         (af_get_coverage): Use FT_UShort for `glyph_styles' array.
3512         * src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to
3513         16 bits.
3514         (AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field.
3516 2015-08-26  Werner Lemberg  <wl@gnu.org>
3518         * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828).
3520 2015-08-25  Werner Lemberg  <wl@gnu.org>
3522         [base] Improve kerning tracing and documentation.
3524         * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
3525         scaled-down kerning values differ.
3527 2015-08-18  Werner Lemberg  <wl@gnu.org>
3529         [raster] Remove last remnants of `raster5' driver.
3531         * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed.
3533         * src/raster/rastpic.c, src/raster/rastpic.h
3534         (ft_raster5_renderer_class_pic_init,
3535         ft_raster5_renderer_class_pic_free): Removed.
3537 2015-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
3539         [base] Improve emboldener (#45596).
3541         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
3542         of zero-length segments.
3544 2015-08-16  Alexei Podtelezhnikov  <apodtele@gmail.com>
3546         [base] Reoptimize arithmetic.
3548         * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
3549         special cases that slow down the general use.
3551 2015-08-15  pazer  <ibemad@gmail.com>
3553         Fix C++ compilation (#45762).
3555         * src/base/ftstroke.c (ft_outline_glyph_class): Use
3556         FT_CALLBACK_TABLE.
3558 2015-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
3560         [truetype] Clean up.
3562         * src/truetype/ttgload.c (TT_Process_Composite_Component): Use
3563         `FT_Outline_Transform' and `FT_Outline_Translate'.
3564         (translate_array): Dropped.
3566 2015-08-14  Andreas Enge  <andreas.enge@inria.fr>
3568         * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).
3570 2015-08-13  Werner Lemberg  <wl@gnu.org>
3572         [truetype] Introduce named instance access to GX fonts.
3574         For functions querying a face, bits 16-30 of the face index can hold
3575         the named instance index if we have a GX font.  The indices start
3576         with value 1; value 0 indicates font access without GX variation
3577         data.
3579         * include/freetype/freetype.h (FT_FaceRec): Update documentation.
3580         * include/freetype/internal/sfnt.h: Ditto.
3582         * src/sfnt/sfobjs.c (sfnt_init_face)
3583         [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and
3584         do argument checks.
3585         (sfnt_load_face): Updated.
3587         * src/truetype/ttobjs.c (tt_face_init)
3588         [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
3589         the style name.
3591         * src/base/ftobjs.c (open_face_from_buffer,
3592         open_face_PS_from_sfnt_stream): Updated.
3593         * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated.
3594         * src/cff/cffload.c (cff_font_load): Updated.
3596         * src/cff/cffobjs.c (cff_face_init): Make function exit early for
3597         pure CFF fonts if `font_index < 0'.
3598         Updated.
3600         * src/cid/cidobjs.c (cid_face_init): Updated.
3601         * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
3602         * src/pfr/pfrobjs.c (pfr_face_init): Updated.
3603         * src/type1/t1objs.c (T1_Face_Init): Updated.
3604         * src/type42/t42objs.c (T42_Face_Init): Updated.
3605         * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init):
3606         Updated.
3608         * docs/CHANGES: Updated.
3610 2015-08-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
3612         [type1,cff,cid] Streamline font matrix application.
3614         * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only
3615         if font matrix is not trivial.
3616         * src/cff/cffgload.c (cff_slot_load): Ditto.
3617         * src/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the
3618         entire outline.
3620 2015-08-11  Werner Lemberg  <wl@gnu.org>
3622         [builds/unix] Minor.
3624         * builds/unix/configure.raw:
3625         s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
3626         similarly named uppercase variables.
3628 2015-08-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
3630         [type1,cid,type42] Minor improvements.
3632         * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only
3633         when necessary. Refresh comments.
3634         * src/cid/cidload.c (cid_parse_font_matrix): Ditto.
3635         * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments.
3637 2015-08-08  Werner Lemberg  <wl@gnu.org>
3639         [type42] Fix glyph access.
3641         This is a severe bug: We've missed one level of indirection, as
3642         described in the Type 42 specification.  As a result, ftview
3643         sometimes showed incorrect glyphs for given glyph names, and even
3644         displayed `error 0x0006' (invalid argument!) in case the number of
3645         glyph indices differed between the Type 42 font and the embedded
3646         TTF.
3648         Apparently, noone ever noticed it; this shows how much Type 42 fonts
3649         are in use...
3651         * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
3652         to embedded TTF's glyph index.
3654 2015-08-08  Werner Lemberg  <wl@gnu.org>
3656         [type42] Minor clean-up.
3658         * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
3659         variable.
3661 2015-08-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
3663         [type42] Parse FontMatrix according to specifications.
3665         * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix
3666         does not need scaling by 1000. Units_per_EM are taken from the
3667         embedded TrueType.
3669 2015-08-06  Werner Lemberg  <wl@gnu.org>
3671         [autofit] Improve Arabic hinting.
3673         Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
3674         ttfautohint).
3676         * src/autofit/afblue.dat: Add neutral blue zone for the tatweel
3677         character.
3679         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3681 2015-08-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
3683         [truetype] Clean up types.
3685         * src/truetype/ttobjs.c (TT_Size): Move declaration from here.
3686         * include/freetype/internal/tttypes.h (TT_Size): ... to here.
3687         (TT_LoaderRec): Switch to appropriate types for `face' and `size'.
3688         * src/truetype/ttgload.c: Remove corresponding type casts.
3689         * src/truetype/ttsubpix.c: Ditto.
3691 2015-08-05  Werner Lemberg  <wl@gnu.org>
3693         [autofit] Improve recognition of flat vs. rounded segments.
3695         Lower the flatness threshold from upem/8 to upem/14, making the
3696         auto-hinter accept shorter elements.
3698         Synchronize flat/round stem selection algorithm with blue zone code.
3700         * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro.
3701         (af_latin_metrics_init_blues): Use it.
3702         (af_latin_hints_compute_segments): Collect information on maximum
3703         and minimum coordinates of `on' points; use this to add a constraint
3704         for the flat/round decision similar to
3705         `af_latin_metrics_init_blues'.
3707 2015-08-04  Werner Lemberg  <wl@gnu.org>
3709         Another left-shift bug (#45681).
3711         * src/base/ftobjs.c (IsMacBinary): Only accept positive values for
3712         `dlen'.
3714 2015-08-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
3716         [base] Fix `ft_corner_orientation'.
3718         Remove casting from `FT_Long' to `FT_Int' that might change the sign
3719         of the return value and make it faster too.
3721         * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay
3722         with 32-bit arithmetic when safe. Use plain math on 64-bit systems.
3723         * src/pshinter/pshalgo.c: Remove old unused code.
3725 2015-08-03  Werner Lemberg  <wl@gnu.org>
3727         * src/truetype/ttgload.c (load_truetype_glyph)
3728         [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs
3729         having a depth greater than 1.
3731 2015-08-03  Werner Lemberg  <wl@gnu.org>
3733         Fix typo in clang bug from 2015-07-31 (#45678).
3735         * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.
3737 2015-08-02  Werner Lemberg  <wl@gnu.org>
3739         * CMakeLists.txt: Improve shared library support.
3741         Based on a patch from John Cary <cary@txcorp.com>.
3743 2015-08-02  Werner Lemberg  <wl@gnu.org>
3745         * builds/unix/freetype-config.in (enable_shared): Remove.  Unused.
3747 2015-08-02  Werner Lemberg  <wl@gnu.org>
3749         Fix more invalid left-shifts.
3751         * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
3752         not left-shift.
3754         * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
3755         tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication,
3756         not left-shift.
3758 2015-07-31  Werner Lemberg  <wl@gnu.org>
3760         Fix some bugs found by clang's `-fsanitize=undefined' (#45661).
3762         * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
3763         positive values from header.
3764         Check overflow.
3766         * src/base/ftoutln.c (SCALED): Correctly handle left-shift of
3767         negative values.
3769         * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
3770         _bdf_clear_glyph_modified): Use unsigned long constant.
3772         * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
3773         left-shift values that can be negative.
3775         * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
3776         left-shift values that can be negative.
3778         * src/raster/ftraster.c (SCALED): Correctly handle left-shift of
3779         negative values.
3781         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
3782         values that can be negative.
3784         * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
3785         compute_glyph_metrics, load_sbit_image): Don't left-shift values
3786         that can be negative.
3788 2015-07-31  Werner Lemberg  <wl@gnu.org>
3790         Define FT_LONG_MAX.
3792         * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
3793         * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.
3795 2015-07-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
3797         * src/base/ftcalc.c (FT_Vector_NormLen): Clarify.
3799 2015-07-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
3801         * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions.
3803 2015-07-26  Matthias Clasen  <matthias.clasen@gmail.com>
3805         [cff] Don't use `hmtx' table for LSB (#45520).
3807         * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
3808         width only.  Bug introduced 2015-04-10.
3810 2015-07-09  Werner Lemberg  <wl@gnu.org>
3812         Better support of user-supplied C++ namespaces.
3814         See
3816           https://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html
3818         for a rationale.
3820         * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h,
3821         src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h,
3822         src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h
3823         (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose
3824         header files that contain FT_{BEGIN,END}_HEADER macros by
3825         themselves.
3827         * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
3828         FT_CONFIG_STANDARD_LIBRARY_H earlier.
3830         * src/truetype/ttpic.h: Include FT_INTERNAL_PIC_H.
3832 2015-07-07  Werner Lemberg  <wl@gnu.org>
3834         [sfnt] Make `tt_face_get_name' member of the SFNT interface.
3836         * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
3837         prototype.
3838         (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.
3840         * src/sfnt/sfdriver.c (sfnt_interface): Updated.
3842         * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
3843         * src/sfnt/sfobjs.h: Add prototype for it.
3845 2015-06-30  Werner Lemberg  <wl@gnu.org>
3847         Fix some clang compiler warnings.
3849         * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c
3850         (cf2_interpT2CharString), src/truetype/ttgload.c
3851         (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas),
3852         src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues.
3854 2015-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
3856         [truetype] Speed up bytecode interpreter.
3858         * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.
3860 2015-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
3862         [base] Speed up emboldening.
3864         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use
3865         `FT_Vector_NormLen'.
3867 2015-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
3869         [base] Implement fast vector normalization.
3871         The function uses Newton's iterations instead of dividing vector
3872         components by its length, which needs a square root. This is,
3873         literally, a bit less accurate but a lot faster.
3875         * src/base/ftcalc.c (FT_Vector_NormLen): New function.
3877 2015-06-28  Werner Lemberg  <wl@gnu.org>
3879         * CMakeLists.txt: Always create `ftconfig.h'.
3881         For non-UNIX builds, the file stays unmodified.  However, it's
3882         better to have the main configuration files at the same place
3883         regardless of the OS.
3885 2015-06-28  Werner Lemberg  <wl@gnu.org>
3887         * CMakeLists.txt: Improve MSVC support (#43737).
3889 2015-06-28  Werner Lemberg  <wl@gnu.org>
3891         [cmake] Check for libraries and create `ftoption.h'.
3893         * builds/FindHarfBuzz.cmake: New file, taken from
3895           https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake
3897         * CMakeLists.Txt: Add path to local cmake modules.
3898         Find dependencies for zlib, bzip2, libpng, and harfbuzz.
3899         Create `ftoption.h' file.
3900         Set up include and linker stuff for libraries.
3902 2015-06-28  Werner Lemberg  <wl@gnu.org>
3904         * CMakeLists.txt: Fix creation of `ftconfig.h'.
3905         Check for UNIX header files using `check_include_file'.
3906         Set up correct header include directories.
3908 2015-06-28  Werner Lemberg  <wl@gnu.org>
3910         * CMakeLists.txt: Disallow in-source builds.
3912 2015-06-27  Werner Lemberg  <wl@gnu.org>
3914         * src/tools/docmaker/utils.py (check_output): Add missing `\n'.
3916 2015-06-26  Werner Lemberg  <wl@gnu.org>
3918         * CMakeLists.txt: Select platform-dependent `ftdebug.c'.
3920 2015-06-25  Werner Lemberg  <wl@gnu.org>
3922         * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
3923         Additionally, do this for UNIX only.
3925 2015-06-25  Werner Lemberg  <wl@gnu.org>
3927         * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'.
3929 2015-06-25  Werner Lemberg  <wl@gnu.org>
3931         Another adjustment to header locations.
3933         This change is a result of a discussion thread on freetype-devel
3935           https://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html
3937         Re-introduce the `freetype2' subdirectory for all FreeType header
3938         files after installation, and rename the `freetype2' subdirectory in
3939         the git repository to `freetype'.
3941         * include/freetype2: Renamed to...
3942         * include/freetype: This.
3944         * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
3945         PRIVATE_HEADERS): Updated.
3946         Update creation of `ftconfig.h'.
3947         Install generated `ftconfig.h'.
3949         * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
3951         * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
3952         (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
3953         builds/unix/freetype2.in: Updated.
3955         * builds/unix/freetype-config.in: Updated.
3956         * builds/unix/configure.raw: Don't check for `rmdir'.
3957         * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable
3958         according to the autoconf info manual.
3959         * builds/unix/install.mk (install, uninstall,
3960         distclean_project_unix): Update and simplify.
3962         * builds/wince/*, builds/windows/*: Updated.
3964         * devel/ft2build.h, include/ft2build.h: Updated.
3966         * include/freetype2/config/ftheader.h,
3967         include/freetype2/internal/ftserv.h,
3968         include/freetype2/internal/internal.h: Update all header file
3969         macros.
3971         * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
3973         * docs/*: Updated.
3975 2015-06-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
3977         * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp.
3979 2015-06-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
3981         * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
3983 2015-06-23  Werner Lemberg  <wl@gnu.org>
3985         s/TYPEOF/FT_TYPEOF/ (#45376).
3987         * builds/unix/ftconfig.in, builds/vms/ftconfig.in,
3988         include/freetype2/config/ftconfig.h,
3989         include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it.
3991 2015-06-22  Werner Lemberg  <wl@gnu.org>
3993         Fix Savannah bug #45097.
3995         We no longer `pollute' the namespace of possible header file names;
3996         instead we move `ft2build.h' up by one level so that it gets
3997         installed in the default include directory (e.g.,
3998         /usr/local/include).  After this commit, only `ft2build.h' stays in
3999         the compiler's include path.
4001         No visible changes for the user who follows the standard FreeType
4002         header inclusion rules.
4004         * include/*: Move to ...
4005         * include/freetype2/*: This directory, except `ft2build.h'.
4007         * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
4008         PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
4010         * builds/amiga/include/config/ftconfig.h, builds/freetype.mk
4011         (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work),
4012         builds/unix/install.mk (install, uninstall),
4013         builds/unix/freetype2.in: Updated.
4015         * builds/unix/freetype-config.in: Updated.
4016         Emit -I directory only if it is not `/usr/include'.
4018         * builds/wince/*, builds/windows/*: Updated.
4020         * devel/ft2build.h, include/ft2build.h: Updated.
4022         * include/freetype2/config/ftheader.h,
4023         include/freetype2/internal/ftserv.h,
4024         include/freetype2/internal/internal.h: Update all header file
4025         macros.
4027         * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
4029 2015-06-21  Werner Lemberg  <wl@gnu.org>
4031         Make Jam support work again.
4033         This is just very basic stuff and just a little bit tested on
4034         GNU/Linux only.  I won't delve into this since I'm not a Jam user.
4036         * Jamfile: Call `HDRMACRO' for `ftserv.h' also.
4037         (DEFINES): Replace with...
4038         (CCFLAGS): ... this.
4040         * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
4041         already handled in the top-level Jamfile.
4043         * src/autofit/Jamfile (DEFINES): Replace with...
4044         (CCFLAGS): ... this.
4045         (_sources): Add missing files.
4047         * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
4048         longer contains macro header definitions.
4050         * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
4051         src/truetype/Jamfile (_sources): Add missing files.
4053 2015-06-16  Werner Lemberg  <wl@gnu.org>
4055         Fix Savannah bug #45326.
4057         * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
4058         definitions.
4060 2015-06-07  Werner Lemberg  <wl@gnu.org>
4062         * Version 2.6 released.
4063         =======================
4066         Tag sources with `VER-2-6'.
4068         * docs/VERSION.DLL: Update documentation and bump version number to
4069         2.6.
4071         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
4072         builds/windows/vc2005/index.html,
4073         builds/windows/vc2008/freetype.vcproj,
4074         builds/windows/vc2008/index.html,
4075         builds/windows/vc2010/freetype.vcxproj,
4076         builds/windows/vc2010/index.html,
4077         builds/windows/visualc/freetype.dsp,
4078         builds/windows/visualc/freetype.vcproj,
4079         builds/windows/visualc/index.html,
4080         builds/windows/visualce/freetype.dsp,
4081         builds/windows/visualce/freetype.vcproj,
4082         builds/windows/visualce/index.html,
4083         builds/wince/vc2005-ce/freetype.vcproj,
4084         builds/wince/vc2005-ce/index.html,
4085         builds/wince/vc2008-ce/freetype.vcproj,
4086         builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/.
4088         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
4089         (FREETYPE_PATCH): Set to 0.
4091         * builds/unix/configure.raw (version_info): Set to 18:0:12.
4092         * CMakeLists.txt (VERSION_MINOR): Set to 6.
4093         (VERSION_PATCH): Set to 0.
4095         * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
4096         declarations for dumping functions.
4098         * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.
4100         * builds/toplevel.mk: Use `freetype.mk's code to compute the version
4101         string.
4102         Don't include a zero patch level in version string.
4103         * builds/freetype.mk: Remove code for computing the version string.
4105 2015-06-06  Ashish Azad  <ashish.azad@samsung.com>
4107         Fix Savannah bug #45260.
4109         * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.
4111 2015-06-03  Werner Lemberg  <wl@gnu.org>
4113         [truetype] Fix memory leak.
4115         Problem reported by Grissiom <chaos.proton@gmail.com>; in
4117           https://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html
4119         there is an example code to trigger the bug.
4121         * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size'
4122         data before allocating again.  Bug most probably introduced four
4123         years ago in version 2.4.3.
4125 2015-06-02  Werner Lemberg  <wl@gnu.org>
4127         [raster] Add more tracing.
4129         * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define.
4130         (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span,
4131         Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls.
4133 2015-06-01  Werner Lemberg  <wl@gnu.org>
4135         [truetype] While tracing opcodes, show code position and stack.
4137         * src/truetype/ttinterp.c: Change all existing TRACE7 calls to
4138         TRACE6.
4139         (opcode_name): Add string lengths.
4140         (TT_RunIns): Implement display of code position and stack.
4142 2015-05-31  Werner Lemberg  <wl@gnu.org>
4144         [truetype] In GX, make private point numbers work correctly.
4146         This is completely missing in Apple's documentation: If a `gvar'
4147         tuple uses private point numbers (this is, deltas are specified for
4148         some points only), the uncovered points must be interpolated for
4149         this tuple similar to the IUP bytecode instruction.  Examples that
4150         need this functionality are glyphs `Oslash' and `Q' in Skia.ttf.
4152         * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate,
4153         tt_handle_deltas): New functions.
4154         (TT_Vary_Get_Glyph_Deltas): Renamed to...
4155         (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the
4156         points and does no longer return an array of deltas.
4157         Add tracing information.
4158         Call `tt_handle_deltas' to interpolate missing deltas.
4159         Also fix a minor memory leak in case of error.
4161         * src/truetype/ttgxvar.h: Updated.
4163         * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
4164         load_truetype_glyph): Updated.
4166 2015-05-31  Werner Lemberg  <wl@gnu.org>
4168         [truetype] In GX, make intermediate tuplets work at extrema.
4170         * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.
4172 2015-05-31  Werner Lemberg  <wl@gnu.org>
4174         [truetype] Add tracing information to GX code.
4176         * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar,
4177         ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend,
4178         TT_Set_Var_Design, tt_face_vary_cvt): Do it.
4180 2015-05-28  Werner Lemberg  <wl@gnu.org>
4182         * src/tools/apinames.c (names_dump): Fix invalid reference.
4184         Problem reported by Guzman Mosqueda, Jose R
4185         <jose.r.guzman.mosqueda@intel.com>.
4187 2015-05-24  Werner Lemberg  <wl@gnu.org>
4189         [truetype] Fix commit from 2015-05-22.
4191         * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
4192         with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.
4194         Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
4196 2015-05-23  Werner Lemberg  <wl@gnu.org>
4198         [truetype] Fix return values of GETINFO bytecode instruction.
4200         * src/truetype/ttinterp.h (TT_ExecContextRec): New fields
4201         `vertical_lcd' and `gray_cleartype'.
4203         * src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
4204         Change `symmetrical smoothing' to TRUE, since FreeType produces
4205         exactly this.
4207         * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit
4208         values for symmetrical smoothing, namely 11/18.
4209         Handle bits for vertical LCD subpixels (8/15) and Gray ClearType
4210         (12/19).
4212 2015-05-23  Werner Lemberg  <wl@gnu.org>
4214         [truetype] Minor.
4216         * src/truetype/ttinterp.h (TT_ExecContext):
4217          s/subpixel/subpixel_hinting.
4219         * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.
4221 2015-05-22  Werner Lemberg  <wl@gnu.org>
4223         [truetype] Support selector index 3 of the INSTCTRL instruction.
4225         This flag activates `native ClearType hinting', disabling backward
4226         compatibility mode as described in Greg Hitchcocks whitepaper.  In
4227         other words, it enables unrestricted functionality of all TrueType
4228         instructions in ClearType.
4230         * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks'
4231         unconditionally.
4232         (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of
4233         `GS.instruct_control' is active.
4235         * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
4236         (Ins_GETINFO): Updated.
4238         * docs/CHANGES: Document it.
4240 2015-05-20  Werner Lemberg  <wl@gnu.org>
4242         [truetype] Minor.
4244         * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod'
4245         argument.
4247 2015-05-17  Werner Lemberg  <wl@gnu.org>
4249         [truetype] Fix loading of composite glyphs.
4251         * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the
4252         ARGS_ARE_XY_VALUES flag is not set, handle argument values as
4253         unsigned.  I trust `ttx' (which has exactly such code) that it does
4254         the right thing here...
4256         The reason that noone has ever noticed this bug is probably the fact
4257         that point-aligned subglyphs are rare, as are subglyphs with a
4258         number of points in the range [128;255], which is quite large (or
4259         even in the range [32768;65535], which is extremely unlikely).
4261 2015-05-12  Chris Liddell  <chris.liddell@artifex.com>
4263         [cff] Make the `*curveto' operators more tolerant.
4265         * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes
4266         `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate,
4267         pulling values off the stack until the stack is exhausted.
4268         Implicitly the stack must be a multiple (or for subtly different
4269         behaviour) a multiple plus a specific number of extra values deep.
4270         If that's not the case, enforce it (as the old code did).
4272 2015-05-12  Chris Liddell  <chris.liddell@artifex.com>
4274         [cff] fix incremental interface with new cff code.
4276         * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental
4277         interface to retrieve glyph data for a SEAC, it be left to the
4278         incremental interface callback to apply the encoding to raw
4279         character index (as it was in the previous code).
4281 2015-04-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
4283         [autofit] Speed up IUP.
4285         * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to
4286         the same position from true interpolation, use `scale' to reduce
4287         divisions.
4289 2015-04-28  Werner Lemberg  <wl@gnu.org>
4291         [cff] Use `name' table for PS name if we have a SFNT-CFF.
4293         This follows the OpenType 1.7 specification.  See
4295           https://tug.org/pipermail/tex-live/2015-April/036634.html
4297         for a discussion.
4299         * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
4300         have an SFNT.
4302 2015-04-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
4304         [truetype] Speed up IUP.
4306         * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
4307         snapping to the same position from true interpolation.
4309 2015-04-21  Werner Lemberg  <wl@gnu.org>
4311         [autofit] By default, enable warping code but switch off warping.
4313         Suggested by Behdad.
4315         * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.
4317         * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
4318         with `false'.
4320 2015-04-21  Werner Lemberg  <wl@gnu.org>
4322         * docs/CHANGES: Updated.
4324 2015-04-21  Werner Lemberg  <wl@gnu.org>
4326         [autofit] Introduce `warping' property.
4328         This code replaces the debugging hook from the previous commit with
4329         a better, more generic solution.
4331         * include/ftautoh.h: Document it.
4333         * src/autofit/afmodule.h (AF_ModuleRec)
4334         [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.
4336         * src/autofit/afmodule.c (_af_debug_disable_warper): Remove.
4337         (af_property_set, af_property_get, af_autofitter_init)
4338         [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option.
4340         * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
4341         longer existing `_af_debug_disable_warper'.
4343         * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
4344         (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init)
4345         [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the
4346         scaler flags if warping is off.
4348         * src/autofit/aftypes.h: Updated.
4350 2015-04-16  Werner Lemberg  <wl@gnu.org>
4352         [autofit] Add debugging hook to disable warper.
4354         * src/autofit/afmodule.c (_af_debug_disable_warper)
4355         [FT_DEBUG_AUTOFIT]: New global variable.
4357         * src/autofit/aftypes.h: Updated.
4358         (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).
4360         * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.
4362         * src/autofit/aflatin.c (af_latin_hints_apply)
4363         [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use
4364         of warper.
4366         * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
4367         [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
4369         * src/autofit/aflatin2.c (af_latin2_hints_apply)
4370         [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
4372 2015-04-10  Werner Lemberg  <wl@gnu.org>
4374         [cff] Update advance width handling to OpenType 1.7.
4376         Problem reported by Behdad.
4378         * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
4379         separately.
4381         * src/cff/cffgload.c (cff_slot_load): Use advance width and side
4382         bearing values from `hmtx' table if present.
4384 2015-04-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
4386         * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop.
4388 2015-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
4390         * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic.
4392 2015-04-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
4394         [autofit] Finish the thought.
4396         * src/autofit/afhints.c (af_direction_compute): make sure the long arm
4397         is never negative so that its `FT_ABS' is not necessary.
4399 2015-04-01  Werner Lemberg  <wl@gnu.org>
4401         [autofit] Call dumper functions for tracing.
4403         * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code.
4404         * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor
4405         improvement.
4406         * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it.
4408 2015-04-01  Werner Lemberg  <wl@gnu.org>
4410         [autofit] Make debugging stuff work again.
4412         The interface to ftgrid was broken in the series of commits starting
4413         with
4415           [autofit] Allocate AF_Loader on the stack instead of AF_Module.
4417         from 2015-01-14.
4419         * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]:
4420         Use a global AF_GlyphHintsRec object for debugging.
4421         (af_autofitter_done, af_autofitter_load_glyph): Updated.
4423         * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.
4425 2015-04-01  Werner Lemberg  <wl@gnu.org>
4427         * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko.
4429 2015-03-29  Werner Lemberg  <wl@gnu.org>
4431         [cff] Fix Savannah bug #44629.
4433         * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
4434         (CFF_MAX_SUBRS_CALLS): Set to 16.
4436 2015-03-29  Werner Lemberg  <wl@gnu.org>
4438         [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.
4440         This commit allows `num_coords' to be larger or smaller than the
4441         number of available axes while selecting a design instance, either
4442         ignoring excess data or using defaults if data is missing.
4444         * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
4445         Implement it.
4447         * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design,
4448         T1_Set_Var_Design): Ditto.
4450 2015-03-29  Werner Lemberg  <wl@gnu.org>
4452         [type1] Minor.
4454         * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use
4455         FT_THROW.
4456         (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW.
4458 2015-03-27  Werner Lemberg  <wl@gnu.org>
4460         [cff] Trace charstring nesting levels.
4462         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
4463         cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.
4465         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
4466         <cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.
4468 2015-03-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
4470         [base] Optimize `FT_Angle_Diff'.
4472         Under normal circumstances we are usually close to the desired range
4473         of angle values, so that the remainder is not really necessary.
4475         * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.
4477         * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.
4479 2015-03-21  Werner Lemberg  <wl@gnu.org>
4481         [truetype] Improve `gvar' handling.
4483         * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle
4484         single-element runs.  Cf. glyph `Q' in Skia.ttf with weights larger
4485         than the default.
4487 2015-03-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
4489         * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring.
4491 2015-03-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
4493         Fix Savannah bug #44412 (part 2).
4495         * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.
4497 2015-03-11  Werner Lemberg  <wl@gnu.org>
4499         [autofit] Add support for Arabic script.
4501         Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!
4503         * src/autofit/afblue.dat: Add blue zone data for Arabic.
4505         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
4507         * src/autofit/afscript.h: Add Arabic standard characters.
4509         * src/autofit/afranges.c: Add Arabic data.
4511         * src/autofit/afstyles.h: Add Arabic data.
4513         * docs/CHANGES: Document it.
4515 2015-03-11  Werner Lemberg  <wl@gnu.org>
4517         Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.
4519         * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
4520         to...
4521         (FT_SERVICE_FONT_FORMAT_H): This.
4523         * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
4524         to ...
4525         (FT_FONT_FORMAT_*): This.
4527         src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c,
4528         src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c,
4529         src/truetype/ttdriver.c, src/type1/t1driver.c,
4530         src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated.
4532 2015-03-11  Werner Lemberg  <wl@gnu.org>
4534         [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.
4536         * include/config/ftheader.h: Implement it.
4537         * src/base/ftfntfmt.c, docs/CHANGES: Updated.
4539 2015-03-11  Werner Lemberg  <wl@gnu.org>
4541         [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.
4543         * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.
4545         * docs/CHANGES: Updated.
4547 2015-03-11  Werner Lemberg  <wl@gnu.org>
4549         Fix automatic copyright updating.
4551         * src/tools/update-copyright: Make scanning of `no-copyright'
4552         actually work.
4554         * src/tools/no-copyright: Don't include README in general.
4556 2015-03-11  Werner Lemberg  <wl@gnu.org>
4558         Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.
4560         CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4,
4561         builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
4562         builds/mac/FreeType.m68k_far.make.txt,
4563         builds/mac/FreeType.ppc_carbon.make.txt,
4564         builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf,
4565         builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
4566         builds/wince/vc2008-ce/freetype.vcproj,
4567         builds/windows/vc2005/freetype.vcproj,
4568         builds/windows/vc2008/freetype.vcproj,
4569         builds/windows/vc2010/freetype.vcxproj,
4570         builds/windows/vc2010/freetype.vcxproj.filters,
4571         builds/windows/visualc/freetype.dsp,
4572         builds/windows/visualc/freetype.vcproj,
4573         builds/windows/visualce/freetype.dsp,
4574         builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY,
4575         include/config/ftheader.h, include/ftfntfmt.h, modules.cfg,
4576         src/base/ftfntfmt.c, vms_make.com: Updated.
4578 2015-03-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
4580         Fix Savannah bug #44412 (part 1).
4582         * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.
4584 2015-03-10  Werner Lemberg  <wl@gnu.org>
4586         [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.
4588         * include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
4589         Update all callers.
4591         * docs/CHANGES: Updated.
4593 2015-03-06  Werner Lemberg  <wl@gnu.org>
4595         * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
4597         Found by Alexei.
4599 2015-03-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
4601         * src/base/ftstroke.c: Simplify.
4603 2015-03-04  Werner Lemberg  <wl@gnu.org>
4605         [truetype] Some fixes and code refactoring in `ttgxvar.c'.
4607         * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value
4608         of `point_cnt' if two bytes are read.
4609         Use a more vertical coding style.
4610         (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter.
4611         Use a more vertical coding style.
4613 2015-03-03  Werner Lemberg  <wl@gnu.org>
4615         [autofit] Fix Savannah bug #44241.
4617         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
4618         with less than 3 points.
4620 2015-03-02  Werner Lemberg  <wl@gnu.org>
4622         Simplify `TYPEOF' macro.
4624         No need for two arguments.
4626         * include/config/ftconfig.h, builds/unix/ftconfig.in,
4627         builds/vms/ftconfig.h (TYPEOF): Updated.
4629         * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
4630         src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.
4632 2015-03-01  Werner Lemberg  <wl@gnu.org>
4634         Various compiler warning fixes for `make multi'.
4636         * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges),
4637         src/autofit/aflatin.c (af_latin_hint_compute_blue_edges,
4638         af_latin_hint_edges), src/autofit/aflatin2.c
4639         (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare
4640         as `static'.
4642         * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH):
4643         Removed.  Unused.
4644         * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H.
4645         * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed.  Unused.
4647         * src/cff/cf2intrp.c: Include `cf2intrp.h'.
4648         * src/cff/cffdrivr.c (PAIR_TAG): Removed.  Unused.
4650         * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed.  Unused.
4652         * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.
4654         * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
4655         Removed.  Unused.
4657         * src/raster/ftraster.c (Render_Glyph): Declare as `static'.
4659         * src/sfnt/ttpost.c (load_format_20): Fix signedness warning.
4661         * src/truetype/ttdriver.c (PAIR_TAG): Removed.  Unused.
4662         * src/truetype/ttsubpix.c (is_member_of_family_class,
4663         is_member_of_style_class): Declare as `static'.
4665         * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare
4666         as `static'.
4667         * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as
4668         `static'.
4669         (T1_FIELD_COUNT): Removed.  Unused.
4670         * src/type1/t1parse.h (T1_Done_Table): Removed.  Unused.
4672         * src/type42/t42parse.c (T1_Done_Table): Removed.  Unused.
4674 2015-02-25  Werner Lemberg  <wl@gnu.org>
4676         [psaux] Signedness fixes.
4678         * include/internal/psaux.h, src/psaux/afmparse.c,
4679         src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c,
4680         src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply.
4682 2015-02-25  Werner Lemberg  <wl@gnu.org>
4684         [otvalid] Signedness fixes.
4686         * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
4687         src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
4688         Apply.
4690 2015-02-25  Werner Lemberg  <wl@gnu.org>
4692         * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix.
4694 2015-02-25  Werner Lemberg  <wl@gnu.org>
4696         [lzw] Signedness fixes.
4698         * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.
4700 2015-02-25  Werner Lemberg  <wl@gnu.org>
4702         [gxvalid] Signedness fixes.
4704         * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c,
4705         src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c,
4706         src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c,
4707         src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c,
4708         src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c,
4709         src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c,
4710         src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply.
4712 2015-02-25  Werner Lemberg  <wl@gnu.org>
4714         [cache] Signedness fixes.
4716         * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
4717         src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.
4719 2015-02-25  Werner Lemberg  <wl@gnu.org>
4721         Change dimension fields in `FTC_ImageTypeRec' to unsigned type.
4723         This doesn't break ABI.
4725         * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
4726         `width' and `height'.
4728         * docs/CHANGES: Document it.
4730 2015-02-25  Werner Lemberg  <wl@gnu.org>
4732         [cache] Don't use `labs'.
4734         This is the only place in FreeType where this function was used.
4736         * include/config/ftstdlib.h (ft_labs): Remove.
4738         * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
4739         `FT_ABS'.
4741 2015-02-23  Werner Lemberg  <wl@gnu.org>
4743         [cache] Replace `FT_PtrDist' with `FT_Offset'.
4745         * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t')
4746         is a better choice for `hash' to hold a pointer than `FT_PtrDist'
4747         (a.k.a. `ptrdiff_t'), especially since the latter is signed,
4748         causing zillions of signedness warnings.  [Note that `hash' was of
4749         type `FT_UInt32' before the change to `FT_PtrDist'.]
4750         Update all users.
4752         * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
4753         src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.
4755 2015-02-23  Werner Lemberg  <wl@gnu.org>
4757         [smooth, raster] Re-enable standalone compilation.
4759         * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
4760         [_STANDALONE_]: Define macros.
4762         * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
4763         FT_HYPOT) [_STANDALONE_]: Define macros.
4765 2015-02-22  Werner Lemberg  <wl@gnu.org>
4767         [smooth] Signedness fixes.
4769         * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.
4771 2015-02-22  Werner Lemberg  <wl@gnu.org>
4773         * src/raster/ftraster.c: Use the file's typedefs everywhere.
4775 2015-02-22  Werner Lemberg  <wl@gnu.org>
4777         * src/sfnt/ttpost.c (load_format_20): Fix error tracing message.
4779         Bug introduced 6 commits earlier.
4781 2015-02-22  Werner Lemberg  <wl@gnu.org>
4783         [pshinter] Fix thinko.
4785         * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
4786         check `count'.
4787         Bug introduced two commits earlier.
4789 2015-02-22  Werner Lemberg  <wl@gnu.org>
4791         [raster] Signedness fixes.
4793         * src/raster/ftraster.c, src/raster/ftrend1.c: Apply.
4795 2015-02-22  Werner Lemberg  <wl@gnu.org>
4797         [pshinter] Signedness fixes.
4799         * src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
4800         src/pshinter/pshrec.c: Apply.
4802 2015-02-22  Werner Lemberg  <wl@gnu.org>
4804         [pshinter] Use macros for (unsigned) flags, not enumerations.
4806         * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
4807         Updated.
4808         * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.
4810 2015-02-22  Werner Lemberg  <wl@gnu.org>
4812         * src/pshinter/pshrec.c: Simplify.
4813         (ps_hints_open, ps_hints_stem): Remove switch statement.
4815 2015-02-22  Werner Lemberg  <wl@gnu.org>
4817         [sfnt] Signedness fixes.
4819         * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c,
4820         src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c,
4821         src/sfnt/ttsbit.c: Apply.
4822         * src/sfnt/sfdriver.c: Apply.
4823         (sfnt_get_ps_name): Simplify.
4825 2015-02-22  Werner Lemberg  <wl@gnu.org>
4827         [bdf] Signedness fixes.
4829         * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
4830         src/bdf/bdflib.c: Apply.
4832 2015-02-22  Werner Lemberg  <wl@gnu.org>
4834         * src/bdf/bdflib.c (_bdf_atous): New function.
4835         (_bdf_parse_glyphs, _bdf_parse_start): Use it.
4837 2015-02-22  Werner Lemberg  <wl@gnu.org>
4839         [pcf] Signedness fixes.
4841         * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply.
4842         * src/pcf/pcfread.c: Apply.
4843         (pcf_get_encodings): Ignore invalid negative encoding offsets.
4845 2015-02-21  Werner Lemberg  <wl@gnu.org>
4847         * src/winfonts/winfnt.c: Signedness fixes.
4849 2015-02-21  Werner Lemberg  <wl@gnu.org>
4851         [type42] Signedness fixes.
4853         * src/type42/t42parse.c, src/type42/t42parse.h,
4854         src/type42/t42types.h: Apply.
4856 2015-02-21  Werner Lemberg  <wl@gnu.org>
4858         [pfr] Signedness fixes.
4860         * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c,
4861         src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c,
4862         src/pfr/pfrtypes.h: Apply.
4864 2015-02-21  Werner Lemberg  <wl@gnu.org>
4866         [cff] Minor signedness fixes related to last commit.
4868         * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.
4870 2015-02-20  Werner Lemberg  <wl@gnu.org>
4872         [cff] Thinkos in bias handling.
4874         Only the final result is always positive.
4876         Bug introduced three commits earlier.
4878         * src/cff/cffgload.c, src/cff/cffgload.h: Apply.
4880 2015-02-20  Werner Lemberg  <wl@gnu.org>
4882         [cid] Fix signedness issues and emit some better error codes.
4884         * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c,
4885         src/cid/cidparse.h: Apply.
4886         * src/cid/cidload.c: Apply.
4887         (parse_fd_array): Reject negative values for number of dictionaries.
4888         * src/cid/cidparse.c: Apply.
4889         (cid_parser_new): Reject negative values for hex data length.
4891 2015-02-20  Werner Lemberg  <wl@gnu.org>
4893         [cff] Signedness fixes for new engine.
4895         * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c,
4896         src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply.
4898 2015-02-20  Werner Lemberg  <wl@gnu.org>
4900         [cff] Signedness fixes for basic infrastructure and old engine.
4902         * include/internal/pshints.h, src/cff/cffdrivr.c,
4903         src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c,
4904         src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply.
4906 2015-02-19  Werner Lemberg  <wl@gnu.org>
4908         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.
4910         This is hard-coded to value 2 in `fvar' version 1.0 (and no newer
4911         version exists), but some fonts set it incorrectly.
4913         Problem reported by Adam Twardoch <adam@fontlab.com>.
4915 2015-02-19  Werner Lemberg  <wl@gnu.org>
4917         [cff] Emit better error code for invalid private dict size.
4919         * src/cff/cffparse.c (cff_parse_private_dict): Reject negative
4920         values for size and offset.
4922 2015-02-19  Werner Lemberg  <wl@gnu.org>
4924         [autofit] Fix signedness issues.
4926         * src/autofit/afangles.c, src/autofit/afcjk.c,
4927         src/autofit/afglobal.c, src/autofit/afhints.c,
4928         src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c,
4929         src/autofit/hbshim.c: Apply.
4931 2015-02-19  Werner Lemberg  <wl@gnu.org>
4933         [autofit] Use macros for (unsigned) flags, not enumerations.
4935         This harmonizes with other code in FreeType (and reduces the number
4936         of necessary casts to avoid compiler warnings).
4938         * src/autofit/afblue.hin: Make flag macros unsigned.
4939         * src/autofit/afblue.h: Regenerated.
4941         * src/autofit/afcjk.h: Replace flag enumeration with macros.
4942         * src/autofit/afcjk.c: Updated.
4944         * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
4945         macros.
4946         * src/autofit/afhints.c: Updated.
4948         * src/autofit/aflatin.h: Replace flag enumerations with macros.
4949         * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.
4951         * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.
4953 2015-02-18  Werner Lemberg  <wl@gnu.org>
4955         [type1] Fix signedness issues.
4957         * include/internal/psaux.h, include/internal/t1types.h,
4958         src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c,
4959         src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply.
4961 2015-02-18  Werner Lemberg  <wl@gnu.org>
4963         [psaux, type1] Fix minor AFM issues.
4965         * include/internal/t1types.h (AFM_KernPairRec): Make indices
4966         unsigned.
4967         Update users.
4968         (AFM_FontInfoRec): Make element counters unsigned.
4969         Update users.
4970         * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned
4971         int.
4973         * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
4974         Reject negative values for number of kerning elements.
4976         * src/type1/t1afm.c, src/tools/test_afm.c: Updated.
4978 2015-02-18  Werner Lemberg  <wl@gnu.org>
4980         Don't use `FT_PtrDist' for lengths.
4982         Use FT_UInt instead.
4984         * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
4985         T1_DecoderRec): Do it.
4987         * include/internal/t1types.h (T1_FontRec): Ditto.
4989         * src/cid/cidload.c (cid_parse_dict): Updated.
4990         * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto.
4991         * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto.
4992         * src/type1/t1load.c (parse_blend_axis_types, parse_encoding,
4993         parse_charstrings, parse_dict): Ditto.
4994         * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings,
4995         t42_parse_dict): Ditto.
4997 2015-02-18  Werner Lemberg  <wl@gnu.org>
4999         * src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
5000         This handles negative values better, avoiding many casts.
5002 2015-02-17  Werner Lemberg  <wl@gnu.org>
5004         [base] Fix Savannah bug #44284.
5006         * src/base/ftcalc.c (FT_MulFix): Typos.
5008 2015-02-17  Werner Lemberg  <wl@gnu.org>
5010         [truetype] Finish compiler warning fixes for signedness issues.
5012         * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
5013         src/truetype/ttsubpix.h: Apply.
5015 2015-02-17  Werner Lemberg  <wl@gnu.org>
5017         * src/truetype/ttsubpix.c: Adding missing `static' keywords.
5019 2015-02-17  Werner Lemberg  <wl@gnu.org>
5021         [truetype] More signedness fixes.
5023         * include/internal/tttypes.h, src/truetype/ttinterp.h,
5024         src/truetype/ttobjs.h, src/truetype/ttinterp.c,
5025         src/truetype/ttobjs.c: Apply.
5027 2015-02-17  Werner Lemberg  <wl@gnu.org>
5029         [truetype] Various signedness fixes.
5031         * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.
5033         * src/truetype/ttgload.c: Apply.
5034         (TT_Get_VMetrics): Protect against invalid ascenders and descenders
5035         while constructing advance height.
5037 2015-02-16  Werner Lemberg  <wl@gnu.org>
5039         [base] Finish compiler warning fixes for signedness issues.
5041         * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
5042         Apply.
5044 2015-02-16  Werner Lemberg  <wl@gnu.org>
5046         * include/tttables.h (TT_OS2): `fsType' must be FT_UShort.
5048 2015-02-16  Werner Lemberg  <wl@gnu.org>
5050         More minor signedness warning fixes.
5052         * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
5053         src/base/ftutil.c: Apply.
5055 2015-02-16  Werner Lemberg  <wl@gnu.org>
5057         Next round of minor compiler warning fixes.
5059         * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member
5060         type to `FT_Long'.
5061         (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword.
5063         * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.
5065         * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
5066         Signedness fixes.
5068 2015-02-16  Werner Lemberg  <wl@gnu.org>
5070         Various minor signedness fixes.
5072         * include/ftadvanc.h, include/internal/ftobjs.h,
5073         src/base/ftgloadr.c, src/base/ftobjs.c: Apply.
5075 2015-02-16  Werner Lemberg  <wl@gnu.org>
5077         New `TYPEOF' macro.
5079         This helps suppress signedness warnings, avoiding issues with
5080         implicit conversion changes.
5082         * include/config/ftconfig.h, builds/unix/ftconfig.in,
5083         builds/vms/ftconfig.h (TYPEOF): Define.
5085         * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
5086         src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.
5088 2015-02-16  Werner Lemberg  <wl@gnu.org>
5090         * src/base/ftsystem.c: Use casts in standard C function wrappers.
5091         (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it.
5093 2015-02-16  Werner Lemberg  <wl@gnu.org>
5095         Fix Savannah bug #44261.
5097         * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
5098         environment also while calling the configure script.
5100 2015-02-16  Werner Lemberg  <wl@gnu.org>
5102         * include/internal/ftmemory.h: Add some `FT_Offset' casts.
5103         (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY,
5104         FT_MEM_MOVE): Do it.
5106 2015-02-15  Werner Lemberg  <wl@gnu.org>
5108         [base] Clean up signedness issues in `ftdbgmem.c'.
5110         Also fix other minor issues.
5112         * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types
5113         with FT_Long for consistency.
5114         (ft_mem_primes): Change type to `FT_Int'.
5115         (ft_mem_closest_prime, ft_mem_table_set): Updated.
5117         (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free,
5118         ft_mem_debug_realloc): Use `static' keyword and fix signedness
5119         warnings where necessary.
5121         (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy,
5122         ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types
5123         and add or remove casts to avoid signedness warnings.
5125 2015-02-15  Werner Lemberg  <wl@gnu.org>
5127         [base] Clean up signedness in arithmetic functions.
5129         This makes the code more readable and reduces compiler warnings.
5131         * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix,
5132         FT_DivFix): Convert input parameters to unsigned, do the
5133         computation, then convert the result back to signed.
5134         (ft_corner_orientation): Fix casts.
5136 2015-02-07  Werner Lemberg  <wl@gnu.org>
5138         [sfnt] Fix Savannah bug #44184.
5140         * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No
5141         longer reject `htmx' and `vmtx' tables with invalid length but
5142         sanitize them.
5144 2015-02-06  Jon Anderson  <jon@websupergoo.com>
5146         [truetype] Fix regression in the incremental glyph loader.
5148         * src/truetype/ttgload.c (load_truetype_glyph): For incremental
5149         fonts, the glyph index may be greater than the number of glyphs
5150         indicated, so guard the check with a preprocessor conditional.
5152 2015-02-06  Werner Lemberg  <wl@gnu.org>
5154         [autofit] Fix potential memory leak.
5156         While this doesn't show up with FreeType, exactly the same code
5157         leaks with ttfautohint's modified auto-hinter code (which gets used
5158         in a slightly different way).
5160         It certainly doesn't harm since it is similar to already existing
5161         checks in the code for embedded arrays.
5163         * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
5164         and `max_points' for all cases.
5166 2015-01-31  Werner Lemberg  <wl@gnu.org>
5168         [autofit] Add support for Thai script.
5170         Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
5171         zone characters!
5173         * src/autofit/afblue.dat: Add blue zone data for Thai.
5175         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
5177         * src/autofit/afscript.h: Add Thai standard characters.
5179         * src/autofit/afranges.c: Add Thai data.
5181         * src/autofit/afstyles.h: Add Thai data.
5183 2015-01-23  Behdad Esfahbod  <behdad@behdad.org>
5185         [raster] Handle `FT_RASTER_FLAG_AA' correctly.
5187         This fixes a breakage caused by the commit `[raster] Remove
5188         5-level gray AA mode from monochrome rasterizer.'.
5190         Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>.
5192         * src/raster/ftraster.c (ft_black_render): Handle
5193         `FT_RASTER_FLAG_AA'.
5195         * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
5196         remnants.
5198 2015-01-18  Werner Lemberg  <wl@gnu.org>
5200         * src/base/ftobjs.c (FT_New_Library): Fix compiler warning.
5202 2015-01-18  Chris Liddell  <chris.liddell@artifex.com>
5204         [raster] Fix Savannah bug #44022.
5206         Add fallback for glyphs with degenerate bounding boxes.
5208         If a glyph has only one very narrow feature, the bbox can end up
5209         with either the width or height of the bbox being 0, in which case
5210         no raster memory is allocated and no attempt is made to render the
5211         glyph.  This is less than ideal when the drop-out compensation in
5212         the rendering code would actually result in the glyph being
5213         rendered.
5215         This problem can be observed with the `I' glyph (gid 47) in the
5216         Autodesk RomanS TrueType font.
5218         * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either
5219         dimension is zero to explicitly round up/down (instead of simply
5220         round).
5222 2015-01-17  Werner Lemberg  <wl@gnu.org>
5224         Add some tools to handle yearly copyright notice updates.
5226         We are now following the GNU guidelines: A new release automatically
5227         means that the copyright year of all affected files gets updated; it
5228         is no longer used to track years of modification changes.
5230         * src/tools/update-copyright-year: New Perl script.
5231         * src/tools/update-copyright: New shell script that calls
5232         `update-copyright-year' on all files.
5233         * src/tools/no-copyright: Exceptions that should not be handled by
5234         `update-copyright'
5236 2015-01-14  Werner Lemberg  <wl@gnu.org>
5238         * docs/CHANGES: Updated, using a description from Behdad.
5240 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5242         * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.
5244 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5246         [autofit] Add embedded array of segments and edges.
5248         Avoids multiple mallocs per typical glyphs.
5250         With this and recent changes to avoid mallocs, the thread-safe
5251         stack-based loader is now as fast as the previous model that had one
5252         cached singleton.
5254         * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
5255         New macros.
5256         (AF_AxisHintsRec): Add two arrays for segments and edges.
5258         * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate
5259         data if number of segments exceeds given threshold value.
5260         (af_axis_hints_new_edge):  Only allocate data if number of edges
5261         exceeds given threshold value.
5262         (af_glyph_hints_done): Updated.
5264 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5266         [autofit] Add embedded arrays for points and contours.
5268         This avoids at least two malloc calls for typical glyphs.
5270         * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
5271         New macros.
5272         (AF_GlyphHintsRec): Add two arrays for contours and points.
5274         * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done):
5275         Updated.
5276         (af_glyph_hints_reload): Only allocate data if number of contours or
5277         points exceeds given threshold values.
5279 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5281         [autofit] Allocate hints object on the stack.
5283         This avoids one malloc per load.
5285         * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
5286         `AF_GlyphHints'.
5287         Update prototype.
5289         * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints'
5290         parameter instead of `FT_Memory'.
5291         (af_loader_done): Directly reset `load_hints'.
5292         (af_loader_load_g): Updated.
5294         * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
5295         `hints' object.
5297 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5299         [autofit] Reuse slot glyph loader.
5301         No need to create a new glyph loader; we can reuse the one from
5302         `slot->internal->loader'.  It's hard to tell why it was written that
5303         way originally, but new code looks sound and correct to me, and
5304         avoids lots of allocations.
5306         * src/autofit/afloader.c (af_loader_init): Change return type to
5307         `void'.
5308         Don't call `FT_GlyphLoader_New'.
5309         (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'.
5310         (af_loader_load_g): Update code to use `internal->loader', which
5311         doesn't need copying of data.
5313         * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member.
5314         Update prototype.
5316         * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated.
5318 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5320         [autofit] Remove (unused) support for composite glyphs.
5322         We never have to deal with composite glyphs in the autohinter, as
5323         those will be loaded into FORMAT_OUTLINE by the recursed
5324         `FT_Load_Glyph' function.
5326         In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply
5327         FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies
5328         FT_LOAD_NO_HINTING:
5330           /* resolve load flags dependencies */
5332           if ( load_flags & FT_LOAD_NO_RECURSE )
5333             load_flags |= FT_LOAD_NO_SCALE         |
5334                           FT_LOAD_IGNORE_TRANSFORM;
5336           if ( load_flags & FT_LOAD_NO_SCALE )
5337           {
5338             load_flags |= FT_LOAD_NO_HINTING |
5339                           FT_LOAD_NO_BITMAP;
5341             load_flags &= ~FT_LOAD_RENDER;
5342           }
5344         and as such the auto-hinter is never called.  Thus, the recursion in
5345         `af_loader_load_g' never actually happens.  So remove the depth
5346         counter as well.
5348         * src/autofit/afloader.c (af_loader_load_g): Remove `depth'
5349         parameter.
5350         <FT_GLYPH_FORMAT_COMPOSITE>: Remove associated code.
5351         (af_loader_load_glyph): Updated.
5353 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5355         [raster] Fix uninitialized memory access.
5357         Apparently `ras.cProfile' might be uninitialized.  This will be the
5358         case if `ras.top == ras.cProfile->offset', as can be seen in
5359         `End_Profile'.  The overshoot code introduced in a change `Fix B/W
5360         rasterization of subglyphs with different drop-out modes.' (from
5361         2009-06-18) violated this, accessing `ras.cProfile->flags'
5362         unconditionally just before calling `End_Profile' (which then
5363         detected that `cProfile' is uninitialized and didn't touch it).
5365         This was harmless, and was not detected by valgrind before because
5366         the objects were allocated on the `raster_pool', which was always
5367         initialized.  With recent change to allocate raster buffers on the
5368         stack, valgrind now reported this invalid access.
5370         * src/raster/ftraster.c (Convert_Glyph): Don't access an
5371         uninitialized `cProfile'.
5373 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5375         [smooth] Fix uninitialized memory access.
5377         Looks like `ras.span_y' could always be used without initialization.
5378         This was never detected by valgrind before because the library-wide
5379         `raster_pool' was used for the worker object and `raster_pool' was
5380         originally zero'ed.  But subsequent reuses of it were using `span_y'
5381         uninitialized.  With the recent change to not use `render_pool' and
5382         allocate worker and buffer on the stack, valgrind now detects this
5383         uninitialized access.
5385         * src/smooth/ftgrays.c (gray_raster_render): Initialize
5386         `ras.span_y'.
5388 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5390         [base] Don't initialize unused `driver->glyph_loader'.
5392         * src/base/ftobjs.c (Destroy_Driver): Don't call
5393         `FT_GlyphLoader_Done'.
5394         (FT_Add_Module): Don't call `FT_GlyphLoader_New'.
5396 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5398         [base] Don't allocate `library->raster_pool' anymore.
5400         It's unused after the following commits:
5402           [raster] Allocate render pool for mono rasterizer on the stack.
5403           [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5405         The value of FT_RENDER_POOL_SIZE still serves the purpose it used to
5406         serve, which is, to adjust the pool size.  But the pool is now
5407         allocated on the stack on demand.
5409         * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement.
5411 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5413         [base] Do not reorder library->renderers upon use.
5415         Instead of keeping `library->renderers' in a MRU order, just leave
5416         it as-is.  The MRU machinery wasn't thread-safe.
5418         With this patch, rasterizing glyphs from different faces from
5419         different threads doesn't fail choosing rasterizer
5420         (FT_Err_Cannot_Render_Glyph).
5422         Easiest to see that crash was to add a `printf' (or otherwise let
5423         thread yield in FT_Throw with debugging enabled).
5425         * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
5426         (FT_Outline_Render): Don't call `FT_Set_Renderer'.
5428 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5430         [raster] Allocate render pool for mono rasterizer on the stack.
5432         Instead of using the `render_pool' member of `FT_Library' that is
5433         provided down to the rasterizer, completely ignore that and allocate
5434         needed objects on the stack instead.
5436         With this patch, rasterizing glyphs from different faces from
5437         different threads doesn't crash in the monochrome rasterizer.
5439         * src/raster/ftraster.c (black_TRaster): Remove `buffer',
5440         `buffer_size', and `worker' members.
5442         (ft_black_render): Create `buffer' locally.
5443         (ft_black_reset): Updated.
5445 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5447         [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5449         It was off by default and couldn't be turned on at runtime.  And the
5450         smooth rasterizer superseded it over ten years ago.  No point in
5451         keeping.  Comments suggested that it was there for compatibility
5452         with FreeType 1.
5454         550 lines down.
5456         * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING,
5457         RASTER_GRAY_LINES): Remove macros and all associated code.
5459         (black_TWorker): Remove `gray_min_x' and `gray_max_x'.
5460         (black_TRaster): Remove `grays' and `gray_width'.
5462         (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop,
5463         ft_black_render): Updated.
5465         * src/raster/ftrend1.c (ft_raster1_render): Simplify code.
5466         (ft_raster5_renderer_class): Removed.
5468 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5470         [smooth] Allocate render pool for smooth rasterizer on the stack.
5472         Instead of using the `render_pool' member of `FT_Library' that is
5473         provided down to the rasterizer, completely ignore that and allocate
5474         needed objects on the stack instead.
5476         With this patch, rasterizing glyphs from different faces from
5477         different threads doesn't crash in the smooth rasterizer.
5479         Bugs:
5481           https://bugzilla.redhat.com/show_bug.cgi?id=678397
5482           https://bugzilla.redhat.com/show_bug.cgi?id=1004315
5483           https://bugzilla.redhat.com/show_bug.cgi?id=1165471
5484           https://bugs.freedesktop.org/show_bug.cgi?id=69034
5486         * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer',
5487         `buffer_size', `band_size', and `worker' members.
5489         (gray_raster_render): Create `buffer', `buffer_size', and
5490         `band_size' locally.
5491         (gray_raster_reset): Updated.
5493 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5495         [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.
5497         Previously the code had stipulation for using a per-TT_Size exec
5498         context if `size->debug' was true.  But there was no way that
5499         `size->debug' could *ever* be true.  As such, the code was always
5500         using the singleton `TT_ExecContext' that was stored in `TT_Driver'.
5501         This was, clearly, not threadsafe.
5503         With this patch, loading glyphs from different faces from different
5504         threads doesn't crash in the bytecode loader code.
5506         * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member.
5507         (TT_DriverRec): Remove `context' member.
5509         * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove
5510         `TT_ExecContext' code related to a global `TT_Driver' object.
5512         (tt_driver_done): Don't remove `TT_ExecContext' object here but ...
5513         (tt_size_done_bytecode): ... here.
5515         (tt_driver_init): Don't create `TT_ExecContext' object here but ...
5516         (tt_size_init_bytecode): ... here, only on demand.
5518         * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug
5519         code.
5520         (TT_New_Context): Remove `TT_ExecContext' code related to a global
5521         `TT_Driver' object.
5523         * src/truetype/ttinterp.h: Updated.
5525         * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.
5527 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5529         [autofit] Allocate AF_Loader on the stack instead of AF_Module.
5531         Stop sharing a global `AF_Loader'.  Allocate one on the stack during
5532         glyph load.
5534         Right now this results in about 25% slowdown, to be fixed in a
5535         following commit.
5537         With this patch loading glyphs from different faces from different
5538         threads doesn't immediately crash in the autohinting loader code.
5540         Bugs:
5542           https://bugzilla.redhat.com/show_bug.cgi?id=1164941
5544         * src/autofit/afloader.c (af_loader_init): Pass
5545         `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments.
5546         (af_loader_reset, af_loader_load_glyph): Also pass `loader' as
5547         argument.
5548         (af_loader_done): Use `AF_Loader' instead of `AF_Module' as
5549         argument.
5551         * src/autofit/afmodule.c (af_autofitter_init): Don't call
5552         `af_loader_init'.
5553         (af_autofitter_done): Don't call `af_loader_done'.
5554         (af_autofitter_load_glyph): Use a local `AF_Loader' object.
5556         * src/autofit/afloader.h: Include `afmodule.h'.
5557         Update prototypes.
5558         Move typedef for `AF_Module' to...
5560         * src/autofit/afmodule.h: ... this place.
5561         No longer include `afloader.h'.
5563 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5565         * src/type42/t42objs.h (T42_DriverRec): Remove unused member.
5567 2015-01-12  Werner Lemberg  <wl@gnu.org>
5569         Fix Savannah bug #43976.
5571         Assure that FreeType's internal include directories are found before
5572         `CPPFLAGS' (which might be set by the user in the environment), and
5573         `CPPFLAGS' before `CFLAGS'.
5575         * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'.
5576         (FT_COMPILE): Make this a special variable for compiling only the
5577         files handled in `freetype.mk'.
5578         (.c.$O): Removed, unused.
5580         * src/*/rules.mk (*_COMPILE): Fix order of include directories.
5582 2015-01-11  Werner Lemberg  <wl@gnu.org>
5584         [truetype] Prettifying.
5586         * src/truetype/ttinterp.c (project, dualproj, fast_project,
5587         fast_dualproj): Rename to...
5588         (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this.
5590 2015-01-11  Werner Lemberg  <wl@gnu.org>
5592         * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify.
5594         Based on a patch from Behdad.
5596 2015-01-11  Werner Lemberg  <wl@gnu.org>
5598         * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call.
5600 2015-01-11  Werner Lemberg  <wl@gnu.org>
5602         * src/truetype/ttinterp.c (Normalize): Remove unused argument.
5604 2015-01-11  Werner Lemberg  <wl@gnu.org>
5606         [truetype] More macro expansions.
5608         * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by
5609         expansion.
5611 2015-01-11  Werner Lemberg  <wl@gnu.org>
5613         [truetype] More macro expansions.
5615         * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion,
5616         adjusting function calls where necessary.
5617         (FT_UNUSED_ARG): Removed, no longer needed.
5619 2015-01-10  Werner Lemberg  <wl@gnu.org>
5621         [truetype] More macro expansions.
5623         Based on a patch from Behdad.
5625         * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding
5626         `Ins_*' functions.
5627         (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls.
5628         (ARRAY_BOUND_ERROR): Remove second definition, which is no longer
5629         needed.
5630         (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with...
5631         (Ins_SxyTCA): New function.
5633 2015-01-10  Werner Lemberg  <wl@gnu.org>
5635         [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH.
5637         Behdad suggested this code simplification, and nobody objected...
5639         * include/config/ftoption.h, devel/ftoption.h
5640         (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove.
5642         * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]:
5643         Remove related code.
5644         (ARRAY_BOUND_ERROR): Use do-while loop.
5646 2015-01-10  Werner Lemberg  <wl@gnu.org>
5648         [truetype] More macro expansions.
5650         * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_,
5651         EXEC_ARG): Remove by replacing with expansion.
5653 2015-01-10  Werner Lemberg  <wl@gnu.org>
5655         [truetype] More macro expansions.
5657         Based on a patch from Behdad.
5659         * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize,
5660         SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move,
5661         CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem,
5662         CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt,
5663         CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round,
5664         COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing
5665         with expansion.
5667         (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project,
5668         CUR_fast_dualproj): Replace with macros `project', `dualproj',
5669         `fast_project', `fast_dualproj'.
5671 2015-01-10  Werner Lemberg  <wl@gnu.org>
5673         [truetype] More macro expansions.
5675         * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing
5676         with expansion.
5678 2015-01-10  Werner Lemberg  <wl@gnu.org>
5680         [truetype] Remove code for static TrueType interpreter.
5682         This is a follow-up patch.
5684         * src/truetype/ttinterp.c, src/truetype/ttinterp.h
5685         [TT_CONFIG_OPTION_STATIC_INTERPRETER,
5686         TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code.
5688 2015-01-10  Werner Lemberg  <wl@gnu.org>
5690         * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion.
5692         This starts a series of patches that simplifies the code of the
5693         bytecode interpreter.
5696 ----------------------------------------------------------------------------
5698 Copyright (C) 2015-2020 by
5699 David Turner, Robert Wilhelm, and Werner Lemberg.
5701 This file is part of the FreeType project, and may only be used, modified,
5702 and distributed under the terms of the FreeType project license,
5703 LICENSE.TXT.  By continuing to use, modify, or distribute this file you
5704 indicate that you have read the license and understand and accept it
5705 fully.
5708 Local Variables:
5709 version-control: never
5710 coding: utf-8
5711 End: