Imported Upstream version 2.13.2
[platform/upstream/freetype2.git] / docs / oldlogs / ChangeLog.26
1 2016-07-12  Werner Lemberg  <wl@gnu.org>
2
3         * Version 2.6.5 released.
4         =========================
5
6
7         Tag sources with `VER-2-6-5'.
8
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.
12
13         * include/freetype/config/ftoption.h
14         (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Comment out.
15
16         * docs/VERSION.TXT: Add entry for version 2.6.5.
17
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/.
34
35         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5.
36
37         * builds/unix/configure.raw (version_info): Set to 18:5:12.
38         * CMakeLists.txt (VERSION_PATCH): Set to 5.
39
40         * docs/CHANGES: Updated.
41
42 2016-07-11  Werner Lemberg  <wl@gnu.org>
43
44         Conditionally compile environment support.
45
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.
50
51 2016-07-11  Werner Lemberg  <wl@gnu.org>
52
53         Handle properties in `FREETYPE_PROPERTIES' environment variable.
54
55         This commit covers the most important one.
56
57         * src/autofit/afmodule.c (af_property_set): Handle `warping',
58         `darkening-parameters', and `no-stem-darkening'.
59
60         * src/cff/cffdrivr.c (cff_property_set): Handle
61         `darkening-parameters', `hinting-engine', and `no-stem-darkening'.
62
63         * src/truetype/ttdriver.c (tt_property_set): Handle
64         `interpreter-version'.
65
66 2016-07-11  Werner Lemberg  <wl@gnu.org>
67
68         Replace calls to `atol' with `strtol'.
69
70         We later on need strtol's `endptr' feature.
71
72         * include/freetype/config/ftstdlib.h (ft_atol): Replace with...
73         (ft_strtol): ... this.
74
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.
79
80 2016-07-10  Werner Lemberg  <wl@gnu.org>
81
82         Implement handling of `FREETYPE_PROPERTIES' environment variable.
83
84         Recognizing properties follows in another commit.
85
86         * devel/ftoption.h, include/freetype/config/ftoption.h
87         (FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES): New macro.
88
89         * include/freetype/config/ftstdlib.h (ft_getenv): New macro.
90
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.
94
95 2016-07-09  Werner Lemberg  <wl@gnu.org>
96
97         Add function `ft_property_string_set'.
98
99         This is a preparation for handling an `FREETYPE_PROPERTIES'
100         environment variable to control (some) driver properties.
101
102         No change in functionality.
103
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.
108
109         * include/freetype/internal/ftobjs.h: Updated.
110
111         * include/freetype/internal/services/svprop.h
112         (FT_Properties_SetFunc): Add `value_is_string' parameter.
113
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.
117
118 2016-07-09  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
119
120         [mac] Fix ftexport.sym target in Jamfile.
121
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.
127
128 2016-07-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
129
130         [smooth] Sub-banding protocol revision.
131
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.
142
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.
147
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.
151
152         * src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding
153         protocol.
154
155 2016-07-07  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
156
157         [mac] Fix Savannah bug #48417.
158
159         Mac OS X linker throws errors when `-exported_symbol_list' input
160         file includes non-existing symbols.  Reported by Ryan Schmidt.
161
162         * builds/exports.mk: Exclude ftmac.h from the headers for apinames
163         by default.  Include it when ftmac.c would be compiled.
164
165 2016-07-06  Werner Lemberg  <wl@gnu.org>
166
167         * src/truetype/ttinterp.c (TInstruction_Function): Removed, unused.
168
169 2016-07-05  Werner Lemberg  <wl@gnu.org>
170
171         * Version 2.6.4 released.
172         =========================
173
174
175         Tag sources with `VER-2-6-4'.
176
177         * docs/VERSION.TXT: Update documentation and bump version number to
178         2.6.4.
179
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/.
196
197         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4.
198
199         * builds/unix/configure.raw (version_info): Set to 18:4:12.
200         * CMakeLists.txt (VERSION_PATCH): Set to 4.
201
202         * docs/CHANGES: Updated.
203
204 2016-07-05  Werner Lemberg  <wl@gnu.org>
205
206         * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning.
207
208 2016-07-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
209
210         [smooth] Variable type revision (part 2).
211
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.
216
217 2016-07-04  Werner Lemberg  <wl@gnu.org>
218
219         [autofit] Handle single-point contours as segments.
220
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.
224
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.
230
231 2016-07-02  Werner Lemberg  <wl@gnu.org>
232
233         [autofit] Remove unused structure members.
234
235         * src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove
236         `num_linked'.
237
238         * src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated.
239
240 2016-07-02  Werner Lemberg  <wl@gnu.org>
241
242         [autofit] Update to Unicode 9.0.0.
243
244         * src/autofit/afranges.c (af_arab_nonbase_uniranges,
245         af_cyrl_uniranges): Add new data.
246
247 2016-07-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
248
249         [smooth] Variable type revision (part 1).
250
251         This patch restores original `TCoord' definition as `int' so that the
252         rendering pool is used more efficiently on LP64 platforms (unix).
253
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.
258
259 2016-06-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
260
261         [smooth] Minor clean-ups.
262
263         * src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'.
264         (gray_sweep, gray_convert_glyph, gray_dump_cells): Updated.
265
266 2016-06-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
267
268         [smooth] Minor clean-ups.
269
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.
274
275 2016-06-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
276
277         [pcf] Fix handling of very large fonts (#47708).
278
279         * src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an
280         unsigned short.
281         Only reject `0xFFFF' as an invalid encoding offset.
282
283 2016-06-25  Werner Lemberg  <wl@gnu.org>
284
285         [truetype] Really fix deallocation in case of error (#47726).
286
287         * src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize
288         `outline.points' also.
289
290 2016-06-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
291
292         [smooth] Consolidate memory management.
293
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.
298
299 2016-06-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
300
301         [smooth] Consolidate boundary checks.
302
303         Removing the checks from `gray_hline' shaves 1% off rendering speed.
304
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.
310
311 2016-06-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
312
313         [smooth] Use `FT_Outline_Get_CBox'.
314
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'.
318
319 2016-06-20  Werner Lemberg  <wl@gnu.org>
320
321         [smooth] Remove compiler warnings.
322
323         * src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang.
324
325 2016-06-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
326
327         [smooth] Sanitize memory management.
328
329         * src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up.
330
331 2016-06-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
332
333         [smooth] Remove `band_shoot' that never worked.
334
335         * src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'.
336         (gray_convert_glyph): Updated.
337
338 2016-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
339
340         [raster, smooth] Handle FT_RENDER_POOL_SIZE better.
341
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.
346
347 2016-06-16  Werner Lemberg  <wl@gnu.org>
348
349         * src/base/md5.c: Updated to recent version.
350
351 2016-06-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
352
353         * src/smooth/ftgrays.c (gray_hline): Optimize if-condition.
354
355 2016-06-13  Werner Lemberg  <wl@gnu.org>
356
357         [autofit] Add support for Cherokee script.
358
359         * src/autofit/afblue.dat: Add blue zone data for Cherokee.
360
361         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
362
363         * src/autofit/afscript.h: Add Cherokee standard characters.
364
365         * src/autofit/afranges.c: Add Cherokee data.
366
367         * src/autofit/afstyles.h: Add Cherokee data.
368
369 2016-06-09  David Capello  <davidcapello@gmail.com>
370
371         [cmake] Avoid modifying `ftconfig.h' and `ftoption.h' files.
372
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.
377
378 2016-06-09  Werner Lemberg  <wl@gnu.org>
379
380         [bdf] Check number of properties (#48166).
381
382         * src/bdf/bdflib.c (_bdf_parse_start): Implement.
383
384 2016-06-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
385
386         [smooth] Re-enable new line renderer on 64-bit archs.
387
388         * src/smooth/ftgrays.c (gray_render_line): Conditionally re-enable new
389         implementation, where it is safe from overflows.
390
391 2016-06-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
392
393         [smooth] Minor clean-ups.
394
395         * src/smooth/ftgrays.c (gray_dump_cells): Move out of the way.
396         (gray_render_span): Remove spurious casts and streamline.
397
398 2016-06-07  Werner Lemberg  <wl@gnu.org>
399
400         [autofit] Add support for Ethiopic script.
401
402         * src/autofit/afblue.dat: Add blue zone data for Ethiopic.
403
404         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
405
406         * src/autofit/afscript.h: Add Ethiopic standard characters.
407
408         * src/autofit/afranges.c: Add Ethiopic data.
409
410         * src/autofit/afstyles.h: Add Ethiopic data.
411
412 2016-06-07  Werner Lemberg  <wl@gnu.org>
413
414         [autofit] Fix compilation with VS2016 (#48126).
415
416         This compiler doesn't recognize the end-of-comment sequence `*/' if
417         it immediately follows non-ASCII characters.
418
419         * src/autofit/afscript.h: Ensure whitespace before `*/'.
420
421 2016-06-04  Werner Lemberg  <wl@gnu.org>
422
423         Fix a test for named instances (#48122).
424
425         This was missed while giving negative face indices an extended
426         meaning.
427
428         * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement.
429
430 2016-05-31  Nikolaus Waxweiler  <madigens@gmail.com>
431
432         [truetype] Let SHPIX move points in the twilight zone in v40.
433
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.
439
440 2016-05-30  Werner Lemberg  <wl@gnu.org>
441
442         [type42] Support `CharStrings' entry format as created by LilyPond.
443
444         * src/type42/t42parse.c (t42_parse_charstrings): Handle entries
445         having the format
446
447           (foo) cvn 12345 def
448
449 2016-05-28  Werner Lemberg  <wl@gnu.org>
450
451         * src/autofit/afranges.c: Remove `UL' postfix from hex numbers.
452
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.
457
458 2016-05-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
459
460         [smooth] Shrink bisection stack.
461
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.
465
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.
474
475 2016-05-25  Werner Lemberg  <wl@gnu.org>
476
477         [autofit] Fixes for Armenian and Gujarati ranges.
478
479         * src/autofit/afranges.c (af_armn_uniranges): Corrected.
480         (af_guru_nonbase_uniranges): Make U+0A3E a base character.
481
482 2016-05-24  Werner Lemberg  <wl@gnu.org>
483
484         [autofit] Add support for Armenian script.
485
486         * src/autofit/afblue.dat: Add blue zone data for Armenian.
487
488         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
489
490         * src/autofit/afscript.h: Add Armenian standard characters.
491
492         * src/autofit/afranges.c: Add Armenian data.
493
494         * src/autofit/afstyles.h: Add Armenian data.
495
496 2016-05-23  Werner Lemberg  <wl@gnu.org>
497
498         * builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'.
499
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.
503
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.
507
508 2016-05-22  Werner Lemberg  <wl@gnu.org>
509
510         [autofit] Add blue-zone support for Gurmukhi script.
511
512         This essentially moves the Gurmukhi script from the `Indic' hinter to
513         the `Latin' hinter.
514
515         * src/autofit/afblue.dat: Add blue zone data for Gurmukhi.
516
517         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
518
519         * src/autofit/afscript.h: Add Gurmukhi standard characters and move
520         data out of AF_CONFIG_OPTION_INDIC block.
521
522         * src/autofit/afranges.c: Move Gurmukhi data out of
523         AF_CONFIG_OPTION_INDIC block.
524
525         * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use
526         AF_WRITING_SYSTEM_LATIN.
527
528 2016-05-21  Werner Lemberg  <wl@gnu.org>
529
530         Minor clang++ fixes.
531
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.
535
536         * src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit
537         conversion from NULL to boolean.
538
539 2016-05-21  Werner Lemberg  <wl@gnu.org>
540
541         Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955).
542
543         * include/freetype/internal/ftmemory.h (cplusplus_typeof): Use
544         braces for `extern "C++"'.
545
546 2016-05-17  Nikolaus Waxweiler  <madigens@gmail.com>
547
548         [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3].
549
550         * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with...
551         (tt_loader_set_pp): ... this new function.
552         Update all callers.
553
554 2016-05-17  Nikolaus Waxweiler  <madigens@gmail.com>
555
556         [truetype] New implementation of v38 bytecode interpreter [2/3].
557
558         This patch actually modifies the bytecode interpreter.
559
560         See added comments in `ttinterp.h' for more information on this and
561         the following commit in the series.
562
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.
587
588 2016-05-17  Nikolaus Waxweiler  <madigens@gmail.com>
589
590         [truetype] New implementation of v38 bytecode interpreter [1/3].
591
592         This patch prepares data structures and the like.
593
594         See added comments in `ttinterp.h' for more information on this and
595         the following commits in the series.
596
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.
602
603         * include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro.
604
605         * include/freetype/internal/tttypes.h (TT_FaceRec): Updated.
606
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.
611
612         * src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40
613         interpreters conditionally.
614
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.
626
627         * src/truetype/ttobjs.c (tt_driver_init): Conditionally set
628         default interpreter version number.
629
630         * src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated.
631
632 2016-05-17  Werner Lemberg  <wl@gnu.org>
633
634         [cff] Fix matrix scaling (#47848).
635
636         * include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro.
637
638         * src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling
639         value of all matrix coefficients to scale matrix.
640
641         * src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for
642         matrix normalization if `matrix->yy' is zero.
643
644 2016-05-16  Werner Lemberg  <wl@gnu.org>
645
646         [base] Reject invalid sfnt Mac resource (#47891).
647
648         * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity
649         of `CID ' and `TYPE1' table offset and length.
650
651 2016-05-16  Werner Lemberg  <wl@gnu.org>
652
653         [cid] Fix scanning for `StartData' and `/sfnts' (#47892).
654
655         * src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN):
656         New macros.
657         (cid_parser_new): Fix and document algorithm.
658
659 2016-05-16  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
660
661         [truetype] Improve the recursive reference detector.
662
663         The previous fix for #46372 misunderstood a composite glyph referring
664         same component twice as a recursive reference.  See the discussion
665
666           https://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html
667
668         Thanks to Khaled Hosny for finding this issue.
669
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.
675
676 2016-05-07  Werner Lemberg  <wl@gnu.org>
677
678         [cache] Allow value 0 for face ID.
679
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.
683
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'.
687
688 2016-05-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
689
690         [smooth] More efficient accounting of conic splits and draws.
691
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.
696
697         * src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'.
698         (gray_render_conic): Updated to use decrement counter of segments.
699
700 2016-05-05  Werner Lemberg  <wl@gnu.org>
701
702         [cff, truetype] Fix logic for `FT_Property_Set'.
703
704         Otherwise some properties could be set to arbitrary values, which is
705         harmless, but querying could give wrong positive results.
706
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.
710
711 2016-04-25  Werner Lemberg  <wl@gnu.org>
712
713         [autofit] Add blue-zone support for Gujarati script.
714
715         This essentially moves the Gujarati script from the `Indic' hinter to
716         the `Latin' hinter.
717
718         * src/autofit/afblue.dat: Add blue zone data for Gujarati.
719
720         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
721
722         * src/autofit/afscript.h: Add Gujarati standard characters and move
723         data out of AF_CONFIG_OPTION_INDIC block.
724
725         * src/autofit/afranges.c: Move Gujarati data out of
726         AF_CONFIG_OPTION_INDIC block.
727
728         * src/autofit/afstyles.h: Update Gujarati data; in particular, use
729         AF_WRITING_SYSTEM_LATIN.
730
731 2016-04-24  Werner Lemberg  <wl@gnu.org>
732
733         Minor.
734
735         * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro
736         argument with parentheses.
737
738 2016-04-24  Werner Lemberg  <wl@gnu.org>
739
740         [truetype] Fix deallocation in case of error (#47726).
741
742         * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in
743         `outline' that are going to be deallocated in case of error.
744
745 2016-04-23  Werner Lemberg  <wl@gnu.org>
746
747         [autofit] Improve Georgian blue zone characters.
748
749         Suggested by Akaki Razmadze <razmadzekoko@gmail.com>.
750
751         * src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM):
752         Updated.
753
754         * src/autofit/afblue.c: Regenerated.
755
756 2016-04-16  David Capello  <davidcapello@gmail.com>
757
758         [cmake] Honor SKIP_INSTALL_* settings (as used in zlib).
759
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).
764
765         * CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS',
766         `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings.
767
768 2016-04-16  Behdad Esfahbod  <behdad@behdad.org>
769
770         [truetype] Another fix for non-intermediate GX tuples.
771
772         * src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing
773         cases.
774
775 2016-04-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
776
777         Remove forgotten macro.
778
779         * include/freetype/internal/internal.h
780         [FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove.
781
782 2016-04-09  Werner Lemberg  <wl@gnu.org>
783
784         [autofit] Add support for Georgian scripts.
785
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
790
791           https://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf
792
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.
803
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.
808
809         * src/autofit/afblue.dat: Add blue zone data for Georgian.
810
811         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
812
813         * src/autofit/afscript.h: Add Georgian standard characters.
814
815         * src/autofit/afranges.c: Add Georgian data.
816
817         * src/autofit/afstyles.h: Add Georgian data.
818
819 2016-04-05  Werner Lemberg  <wl@gnu.org>
820
821         [autofit] Provide dummy blue zone for pseudo script `none'.
822
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...
826
827         * src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'.
828         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
829
830         * src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE.
831
832 2016-03-30  Werner Lemberg  <wl@gnu.org>
833
834         * src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567).
835
836 2016-03-30  Werner Lemberg  <wl@gnu.org>
837
838         * src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate.
839
840 2016-03-30  Werner Lemberg  <wl@gnu.org>
841
842         * src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567).
843
844 2016-03-29  Werner Lemberg  <wl@gnu.org>
845
846         * src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift.
847
848 2016-03-29  Werner Lemberg  <wl@gnu.org>
849
850         [pfr] Fix binary search (#47514).
851
852         * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border
853         conditions correctly.
854
855 2016-03-29  Werner Lemberg  <wl@gnu.org>
856
857         [pfr] Minor.
858
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.
863
864 2016-03-29  Werner Lemberg  <wl@gnu.org>
865
866         * src/pfr/pfrtypes.h: Replace all enums with macros.
867
868         We need `~FOO' to unset bits, and only with unsigned values (which
869         `enum' isn't normally) this works cleanly.
870
871 2016-03-26  Werner Lemberg  <wl@gnu.org>
872
873         [pfr] Robustify bitmap strike handling (#47514).
874
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.
879
880         * src/pfr/pfrtypes.h (PFR_BitmapFlags): New values
881         `PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'.
882
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.
886
887 2016-03-26  Werner Lemberg  <wl@gnu.org>
888
889         [pfr] Fix handling of compound glyphs.
890
891         Extra items are indicated with different bit positions.
892
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'.
896
897         * src/pfr/pfrgload.c (pfr_glyph_load_simple,
898         pfr_glyph_load_compound): Use them.
899
900 2016-03-25  Werner Lemberg  <wl@gnu.org>
901
902         [pfr] Minor.
903
904         * src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of
905         bare numbers.
906
907 2016-03-25  Werner Lemberg  <wl@gnu.org>
908
909         [pfr] Various clang sanitizer fixes.
910
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.
915
916 2016-03-23  Werner Lemberg  <wl@gnu.org>
917
918         Rename `VERSION.DLL' (#47472).
919
920         * docs/VERSION.DLL: Renamed to...
921         * docs/VERSIONS.TXT: ...this.
922
923 2016-03-23  Werner Lemberg  <wl@gnu.org>
924
925         [raster, smooth] Directly test outline size (#47500).
926
927         This improves stand-alone compilation.
928
929         * src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to...
930
931         * src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c
932         (gray_raster_render): ...these functions.
933
934 2016-03-23  Werner Lemberg  <wl@gnu.org>
935
936         [raster, smooth] Fix some clang sanitizer runtime issues.
937
938         * src/raster/ftraster.c (ft_black_reset, ft_black_set_mode,
939         ft_black_render): Harmonize signatures with `ftimage.h'.
940
941         * src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset):
942         Ditto.
943
944 2016-03-22  Werner Lemberg  <wl@gnu.org>
945
946         * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor.
947
948         This fixes an AddressSanitizer issue:
949
950           ttgload.c:430:7: runtime error: null pointer passed as argument 1,
951                            which is declared to never be null
952
953 2016-03-21  Werner Lemberg  <wl@gnu.org>
954
955         * src/autofit/afhints.c (af_glyph_hints_reload): Thinko.
956
957         This fixes the previous commit to this file.
958
959 2016-03-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
960
961         [smooth] Partly revert recent changes.
962
963         * src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework
964         conditions to fix rendering issues.
965
966 2016-03-20  Werner Lemberg  <wl@gnu.org>
967
968         [autofit] Show `near' points in tracing.
969
970         * src/autofit/afhints.h (AF_FLAG_NEAR): New macro.
971
972         * src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it.
973         (af_glyph_hints_reload): Handle AF_FLAG_NEAR.
974
975 2016-03-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
976
977         [smooth] Minor refactoring and microoptimizations.
978
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.
984
985 2016-03-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
986
987         [smooth] Minor refactoring.
988
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.
992
993 2016-03-15  Werner Lemberg  <wl@gnu.org>
994
995         * src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize.
996
997 2016-03-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
998
999         [smooth] Temporarily revert 6eb6158dd787 (#47114).
1000
1001         * src/smooth/ftgrays.c (gray_render_line): Old implementation.
1002
1003 2016-03-12  Werner Lemberg  <wl@gnu.org>
1004
1005         [ftfuzzer] Improve coverage of rasterfuzzer.
1006
1007         * src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use
1008         input data for `tags' array also.
1009         Trim input data to get more positive hits.
1010
1011 2016-03-11  Pavlo Denysov  <paul.kiev+savannah@gmail.com>
1012
1013         Fix CMake issues for iOS (patch #8941).
1014
1015         * CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory.
1016         * builds/cmake/iOS.cmake: No longer enforce gcc.
1017
1018 2016-03-09  Behdad Esfahbod  <behdad@behdad.org>
1019
1020         [truetype] Fix handling of non-intermediate GX tuples.
1021
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.
1024
1025         * src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it.
1026
1027 2016-03-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1028
1029         [base] Refuse to render enormous outlines (#47114).
1030
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.
1034
1035         * src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject
1036         enormous outlines.
1037
1038 2016-03-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1039
1040         [smooth] Replace left shifts with multiplications (#47114).
1041
1042         * src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it.
1043
1044 2016-03-05  Werner Lemberg  <wl@gnu.org>
1045
1046         [autofit] Avoid excessive stem length rounding (#25392).
1047
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'.
1055
1056 2016-03-05  J Raynor  <jxraynor@gmail.com>
1057
1058         Make FreeType compile on AIX out of the box.
1059
1060         * builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on
1061         AIX.
1062
1063 2016-03-01  Werner Lemberg  <wl@gnu.org>
1064             Kostya Serebryany  <kcc@google.com>
1065
1066         [ftfuzzer] Add unit for testing smooth and black rasterizers.
1067
1068         * src/tools/ftfuzzer/rasterfuzzer.cc: New file.
1069
1070 2016-03-01  Werner Lemberg  <wl@gnu.org>
1071
1072         [autofit] Fix reallocation error introduced in 2016-02-27 (#47310).
1073
1074         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign
1075         `prev_segment' after reallocation.
1076
1077 2016-03-01  Werner Lemberg  <wl@gnu.org>
1078
1079         Fix clang warnings.
1080
1081         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Use
1082         FT_UShort for `min_flags' and `max_flags'.
1083         Initialize `prev_*' variables.
1084
1085         * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix
1086         types of local variables.
1087
1088         * src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]:
1089         Update `printf' format string.
1090
1091         * src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast.
1092         (LLVMFuzzerTestOneInput): Fix loop type.
1093
1094 2016-02-29  Werner Lemberg  <wl@gnu.org>
1095
1096         [autofit] Add blue-zone support for Sinhala script.
1097
1098         This essentially moves the Sinhala script from the `Indic' hinter to
1099         the `Latin' hinter.
1100
1101         * src/autofit/afblue.dat: Add blue zone data for Sinhala.
1102
1103         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1104
1105         * src/autofit/afscript.h: Add Sinhala standard character and move data
1106         out of AF_CONFIG_OPTION_INDIC block.
1107
1108         * src/autofit/afranges.c: Move Sinhala data out of
1109         AF_CONFIG_OPTION_INDIC block.
1110
1111         * src/autofit/afstyles.h: Update Sinhala data; in particular, use
1112         AF_WRITING_SYSTEM_LATIN.
1113
1114 2016-02-27  Werner Lemberg  <wl@gnu.org>
1115
1116         [autofit] Properly handle spikes pointing to the x-axis.
1117
1118         An example that gets better rendered is glyph `uusignTaml' (glyph
1119         index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem.
1120
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.
1127
1128 2016-02-27  Werner Lemberg  <wl@gnu.org>
1129
1130         [autofit] Minor code clean-up.
1131
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.
1135
1136 2016-02-26  Werner Lemberg  <wl@gnu.org>
1137
1138         [autofit] Improve BOUND action.
1139
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.
1143
1144         * src/autofit/aflatin.c (af_latin_hint_edges): Don't allow
1145         complete disappearance of stems.
1146
1147 2016-02-25  Werner Lemberg  <wl@gnu.org>
1148
1149         [autofit] Add blue-zone support for Tamil script.
1150
1151         This essentially moves the Tamil script from the `Indic' hinter to
1152         the `Latin' hinter.
1153
1154         * src/autofit/afblue.dat: Add blue zone data for Tamil.
1155
1156         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1157
1158         * src/autofit/afscript.h: Add Tamil standard character and move data
1159         out of AF_CONFIG_OPTION_INDIC block.
1160
1161         * src/autofit/afranges.c: Move Tamil data out of
1162         AF_CONFIG_OPTION_INDIC block.
1163
1164         * src/autofit/afstyles.h: Update Tamil data; in particular, use
1165         AF_WRITING_SYSTEM_LATIN.
1166
1167 2016-02-18  Werner Lemberg  <wl@gnu.org>
1168
1169         [autofit] Add blue-zone support for Malayalam script.
1170
1171         This essentially moves the Malayalam script from the `Indic' hinter
1172         to the `Latin' hinter.
1173
1174         * src/autofit/afblue.dat: Add blue zone data for Malayalam.
1175
1176         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1177
1178         * src/autofit/afscript.h: Add Malayalam standard characters and move
1179         data out of AF_CONFIG_OPTION_INDIC block.
1180
1181         * src/autofit/afranges.c: Move Malayalam data out of
1182         AF_CONFIG_OPTION_INDIC block.
1183
1184         * src/autofit/afstyles.h: Update Malayalam data; in particular, use
1185         AF_WRITING_SYSTEM_LATIN.
1186
1187 2016-02-16  Alexei Podtelezhnikov  <apodtele@gmail.com>
1188
1189         [smooth] Fix integer overflow (#47114).
1190
1191         * src/smooth/ftgrays.c (TArea): Make it unconditionally `long'.
1192
1193 2016-02-15  Werner Lemberg  <wl@gnu.org>
1194
1195         * src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing.
1196
1197 2016-02-15  Werner Lemberg  <wl@gnu.org>
1198
1199         [cff] Handle T2 operator only with old CFF engine (#47157).
1200
1201         * src/cff/cffparse.c (cff_parser_run) <opcode 31>: Enclose with
1202         #ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif.
1203
1204 2016-02-15  Werner Lemberg  <wl@gnu.org>
1205
1206         [cff] Partially handle `load' and `store' ops in old CFF engine.
1207
1208         Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be
1209         displayed.
1210
1211         * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_store,
1212         cff_op_load>: Partially implement it.
1213
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.
1221
1222         * src/cff/cffload.c: Updated.
1223
1224         * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field.
1225
1226 2016-02-15  Werner Lemberg  <wl@gnu.org>
1227
1228         [cff] Correctly trace SIDs that contain NULL bytes.
1229
1230         We need this to properly trace Multiple Master CFFs, which contain
1231         two SIDs that are charstrings.
1232
1233         This commit makes FreeType also show the last SID, omitted
1234         previously due to a bug.
1235
1236         * src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field.
1237
1238         * src/cff/cffload.c (cff_index_get_pointers): Add argument to return
1239         the pool size.
1240         Update all callers.
1241
1242         * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly
1243         access `cff->strings' to display the non-default strings.
1244
1245 2016-02-14  Werner Lemberg  <wl@gnu.org>
1246
1247         * src/base/fthash.c: Include FT_INTERNAL_MEMORY_H.
1248
1249 2016-02-14  Werner Lemberg  <wl@gnu.org>
1250
1251         * src/cff/cffparse.c: Include `cffgload.h'.
1252
1253         Problem reported by Colin Walters <walters@verbum.org>.
1254
1255 2016-02-14  Werner Lemberg  <wl@gnu.org>
1256
1257         [cff] Make old CFF engine show MM CFFs (without variations).
1258
1259         The new code only displays the first master in the font.
1260
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.
1266
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.
1275
1276         * src/cff/cffload.c: Updated.
1277
1278         * src/cff/cfftoken.h: Handle `MultipleMaster' operator.
1279
1280         * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field.
1281
1282         * src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for
1283         MM CFFs.
1284
1285 2016-02-09  Werner Lemberg  <wl@gnu.org>
1286
1287         [docmaker] Don't emit trailing newlines.
1288
1289         * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code):
1290         Use `rstrip'.
1291
1292 2016-02-07  Werner Lemberg  <wl@gnu.org>
1293
1294         * Version 2.6.3 released.
1295         =========================
1296
1297
1298         Tag sources with `VER-2-6-3'.
1299
1300         * docs/VERSION.DLL: Update documentation and bump version number to
1301         2.6.3.
1302
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/.
1319
1320         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
1321
1322         * builds/unix/configure.raw (version_info): Set to 18:3:12.
1323         * CMakeLists.txt (VERSION_PATCH): Set to 3.
1324
1325         * docs/CHANGES: Updated.
1326
1327 2016-02-07  Werner Lemberg  <wl@gnu.org>
1328
1329         Fix another runtime error found by clang's sanitizer (#47082).
1330
1331         * src/base/ftstroke.c (ft_stroke_border_export): Properly handle
1332         empty input buffer.
1333
1334 2016-02-07  Werner Lemberg  <wl@gnu.org>
1335
1336         Fix runtime errors found by clang's sanitizer (#47082).
1337
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.
1341
1342 2016-02-07  Werner Lemberg  <wl@gnu.org>
1343
1344         [cff] Minor.
1345
1346         * src/cff/cffgload.c (cff_decoder_parse_charstrings) <cff_op_sqrt>:
1347         Remove dead code.
1348
1349 2016-02-07  Werner Lemberg  <wl@gnu.org>
1350
1351         [cff] Implement missing operators in new engine (except `random').
1352
1353         * src/cff/cf2font.h (CF2_STORAGE_SIZE): New macro.
1354
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.
1358
1359         * src/cff/cf2stack.h, src/cff/cf2stack.c (cf2_stack_roll): New
1360         auxiliary function for `roll' operator.
1361
1362 2016-02-06  Werner Lemberg  <wl@gnu.org>
1363
1364         [cff] Fix some Type 2 operators in old CFF engine.
1365
1366         * src/cff/cffgload.c (cff_decoder_parse_charstrings): Fix `eq'
1367         operator, add `not' and (unsupported) `blend' operators.
1368
1369 2016-02-05  Sebastian Rasmussen  <sebras@gmail.com>
1370
1371         Make direct call of `make install' work (#47072).
1372
1373         * builds/unix/unix-def.in (freetype-config): Make sure
1374         `freetype-config' is generated for both make targets (`all' and
1375         `install').
1376
1377 2016-02-05  Werner Lemberg  <wl@gnu.org>
1378
1379         [base] Fix advance width loading for MM and GX fonts (#47064).
1380
1381         * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for
1382         MM and GX fonts.
1383         Update callers.
1384
1385 2016-02-03  Werner Lemberg  <wl@gnu.org>
1386
1387         [cff] Fix handling of face_index == -1 for pure CFF.
1388
1389         * src/cff/cffobjs.c (cff_face_init): Return correct number of faces.
1390
1391 2016-01-30  Werner Lemberg  <wl@gnu.org>
1392
1393         [autofit] Minor tracing improvement.
1394
1395         * src/autofit/afhints.c (af_glyph_hints_dump_points): Insert newline
1396         at the start of a new contour.
1397
1398 2016-01-28  Nikolaus Waxweiler  <madigens@gmail.com>
1399
1400         Remove unpatented hinter (3/3).
1401
1402         * include/freetype/config/ftoption.h
1403         (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1404
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.
1410
1411         * include/freetype/internal/tttypes.h (TT_FaceRec): Remove
1412         `unpatented_hinting' field.
1413         Update users.
1414
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.
1419
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.
1423
1424 2016-01-28  Nikolaus Waxweiler  <madigens@gmail.com>
1425
1426         Remove unpatented hinter (2/3).
1427
1428         * devel/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
1429
1430 2016-01-28  Nikolaus Waxweiler  <madigens@gmail.com>
1431
1432         Remove unpatented hinter (1/3).
1433
1434         * src/truetype/ttinterp.c [TT_CONFIG_OPTION_UNPATENTED_HINTING]:
1435         Remove all code related to this macro.
1436
1437 2016-01-28  Werner Lemberg  <wl@gnu.org>
1438
1439         [autofit] Add blue-zone support for Kannada script.
1440
1441         This essentially moves the Kannada script from the `Indic' hinter to
1442         the `Latin' hinter.
1443
1444         * src/autofit/afblue.dat: Add blue zone data for Kannada.
1445
1446         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1447
1448         * src/autofit/afscript.h: Add Kannada standard characters and move
1449         data out of AF_CONFIG_OPTION_INDIC block.
1450
1451         * src/autofit/afranges.c: Move Kannada data out of
1452         AF_CONFIG_OPTION_INDIC block.
1453
1454         * src/autofit/afstyles.h: Update Kannada data; in particular, use
1455         AF_WRITING_SYSTEM_LATIN.
1456
1457 2016-01-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
1458
1459         Better access to 64-bit integers for C99 compilers.
1460
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.
1465
1466 2016-01-21  Werner Lemberg  <wl@gnu.org>
1467
1468         [gxvalid] Remove commented out code.
1469
1470         * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Do it.
1471
1472 2016-01-20  Werner Lemberg  <wl@gnu.org>
1473
1474         [autofit] Complete last autofit commit.
1475
1476         Problem reported by Kostya Serebryany <kcc@google.com>.
1477
1478         * src/autofit/afshaper.c (af_shaper_get_coverage)
1479         [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Update signature.
1480
1481 2016-01-20  Werner Lemberg  <wl@gnu.org>
1482
1483         Still handle `__FTERRORS_H__'.
1484
1485         We need this for backward compatibility.
1486
1487         Problem reported by John Emmas <johne53@tiscali.co.uk>.
1488
1489         * include/freetype/fterrors.h: Fix inclusion guard so that
1490         undefining either `FTERRORS_H_' or `__FTERRORS_H__' works as
1491         expected.
1492
1493 2016-01-19  Werner Lemberg  <wl@gnu.org>
1494
1495         [autofit] Fix handling of default script.
1496
1497         Patch taken from ttfautohint, commit
1498         071ae2c00e0d67f9d19418f4fade1c23d27dc185.
1499
1500         There were two bugs.
1501
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.
1506
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.
1512
1513             We now have the following order while searching for covered
1514             glyph indices.
1515
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
1521
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.
1526
1527         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
1528         Fix search order for coverages.
1529
1530 2016-01-19  Werner Lemberg  <wl@gnu.org>
1531
1532         Various minor clang fixes.
1533
1534         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
1535         src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize
1536         `ch'.
1537
1538         * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Add cast.
1539
1540         * src/base/ftdbgmem.c (ft_mem_table_destroy): Add cast.
1541
1542         * src/base/fthash.c (hash_num_lookup): Add cast.
1543
1544         * src/base/fttrigon.c (ft_trig_downscale) [FT_LONG64]: Fix cast.
1545
1546         * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Comment out
1547         redundant code.
1548
1549         * src/type1/t1driver.c (t1_get_ps_font_value) <PS_DICT_SUBR>: Add
1550         cast.
1551
1552         * src/type1/t1load.c (parse_subrs): Fix type of `count'.
1553
1554 2016-01-19  Derek B. Noonburg  <derekn@glyphandcog.com>
1555
1556         [truetype] Add another tricky font.
1557
1558         * src/truetype/ttobjs.c (TRICK_SFNT_IDS_NUM_FACES): Increase.
1559         (sfnt_id): Add variant of `DFKaiShu'.
1560
1561 2016-01-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1562
1563         [base] Empower `FT_Library_SetLcdFilterWeights'.
1564
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.
1570
1571 2016-01-12  Werner Lemberg  <wl@gnu.org>
1572
1573         Don't use macro names that start with `_[A-Z]' [3/3].
1574
1575         Such macro names are reserved for both C and C++.
1576
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.
1581
1582 2016-01-12  Werner Lemberg  <wl@gnu.org>
1583
1584         Don't use macro names that start with `_[A-Z]' [2/3].
1585
1586         Such macro names are reserved for both C and C++.
1587
1588         * include/freetype/ftimage.h, src/raster/ftraster.c,
1589         src/smooth/ftgrays.c, src/smooth/ftgrays.h:
1590         s/_STANDALONE_/STANDALONE_/.
1591
1592 2016-01-12  Werner Lemberg  <wl@gnu.org>
1593
1594         Don't use macro names that start with `_[A-Z]' [1/3].
1595
1596         Such macro names are reserved for both C and C++.
1597
1598         * src/bdf/bdflib.c: Replace macros of the form `_BDF_XXX' with
1599         `BDF_XXX_'.
1600
1601 2016-01-12  Werner Lemberg  <wl@gnu.org>
1602
1603         Don't use macro names that contain `__' [2/2].
1604
1605         Such macro names are reserved for both C and C++.
1606
1607         * src/cache/*: s/__/_/.
1608
1609 2016-01-12  Werner Lemberg  <wl@gnu.org>
1610
1611         Don't use macro names that contain `__' [1/2].
1612
1613         Such macro names are reserved for both C and C++.
1614
1615         * */*: Replace macros of the form `__XXX_H__' with `XXX_H_'.
1616
1617 2016-01-10  Jered Gray  <jegray@google.com>
1618
1619         [cff] Fix usage of `|' operator.
1620
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.
1625
1626 2015-12-25  Werner Lemberg  <wl@gnu.org>
1627
1628         [autofit] Make top-to-bottom hinting work in latin auto-hinter.
1629
1630         This improves rendering of scripts like Bengali or Devanagari.
1631
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.
1635
1636         * src/autofit/afhints.c: Updated.
1637
1638         * src/autofit/aflatin.c (af_latin_hints_compute_edges,
1639         af_latin_hint_edges): Use `top_to_bottom_hinting' flag.
1640
1641         * src/autofit/afcjk.c (af_cjk_hints_compute_edges),
1642         src/autofit/aflatin2.c (af_latin2_hints_compute_edges): Updated.
1643
1644 2015-12-24  Werner Lemberg  <wl@gnu.org>
1645
1646         [autofit] Add hinting direction to `AF_ScriptClassRec'.
1647
1648         Still unused.
1649
1650         * src/autofit/afglobal.c (SCRIPT): Handle hinting direction.
1651
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.
1656
1657 2015-12-23  Werner Lemberg  <wl@gnu.org>
1658
1659         [autofit] Start implementing hinting direction (up/down, down/up).
1660
1661         Right now, it does nothing.
1662
1663         * src/autofit/afscript.h: Add another parameter to `SCRIPT',
1664         specifying hinting direction.
1665
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.
1669
1670 2015-12-22  Werner Lemberg  <wl@gnu.org>
1671
1672         * src/type1/t1load.c (parse_subrs): Fix memory leak (#46744).
1673
1674 2015-12-22  Werner Lemberg  <wl@gnu.org>
1675
1676         [base] Make hash interface symmetric.
1677
1678         Use `num' and `str' infixes everywhere.
1679
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.
1685
1686         * include/freetype/internal/fthash.h: Updated.
1687
1688         * src/bdf/bdflib.c, src/type1/t1load.c, src/type1/t1objs.c: Updated.
1689
1690 2015-12-21  Werner Lemberg  <wl@gnu.org>
1691
1692         [type1] Avoid shift of negative numbers (#46732).
1693
1694         * src/type1/t1load.c (parse_subrs): Do it.
1695
1696 2015-12-20  Werner Lemberg  <wl@gnu.org>
1697
1698         [type1, psaux] Handle large values of num_subrs correctly (#46692).
1699
1700         We now use a hash to map from subr indices to array elements holding
1701         the subroutines, if necessary.
1702
1703         * include/freetype/internal/t1types.h: Include FT_INTERNAL_HASH_H.
1704         (T1_FontRec): Add `subrs_hash' field.
1705
1706         * include/freetype/internal/psaux.h: Include FT_INTERNAL_HASH_H.
1707         (T1_DecoderRec): Add `subrs_hash' field.
1708
1709         * src/type1/t1load.h (T1_LoaderRec): Add `subrs_hash' field.
1710
1711         * src/type1/t1driver.c: Include FT_INTERNAL_HASH_H.
1712         (t1_ps_get_font_value) [PS_DICT_SUBR]: Look up hash if necessary.
1713
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.
1719
1720         * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances,
1721         T1_Load_Glyph): Updated.
1722
1723         * src/type1/t1objs.c (T1_Face_Done): Updated.
1724
1725         * src/psaux/t1decode.c: Include FT_INTERNAL_HASH_H.
1726         (t1_decoder_parse_charstrings) [op_callsubr]: Look up hash if
1727         necessary.
1728
1729         * src/cid/cidgload.c (cid_load_glyph): Updated.
1730
1731 2015-12-20  Werner Lemberg  <wl@gnu.org>
1732
1733         [base] Thinko: Remove free function pointer.
1734
1735         We don't copy keys or values while hashing.
1736
1737         * include/freetype/internal/fthash.h (FT_Hash_FreeFunc): Removed.
1738         (FT_HashRec): Remove `free' field.
1739
1740         * src/base/fthash.c (hash_str_free): Removed.
1741         (ft_hash_init, ft_hash_free): Updated.
1742
1743 2015-12-20  Werner Lemberg  <wl@gnu.org>
1744
1745         [base, bdf] Don't expose `FT_Hashnode' in hash functions.
1746
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'.
1750
1751         * include/freetype/internal/fthash.h: Updated.
1752
1753         * src/bdf/bdflib.c (bdf_get_property, _bdf_add_property,
1754         bdf_get_font_property): Updated.
1755
1756 2015-12-20  Werner Lemberg  <wl@gnu.org>
1757
1758         [base, bdf] Add number hashing.
1759
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.
1765
1766         * include/freetype/internal/fthash.h: Updated.
1767
1768         * src/bdf/bdflib.c (_bdf_parse_start): Updated.
1769
1770 2015-12-20  Werner Lemberg  <wl@gnu.org>
1771
1772         [base] Introduce hash lookup, compare, and free function pointers.
1773
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.
1777
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.
1782
1783 2015-12-20  Werner Lemberg  <wl@gnu.org>
1784
1785         [base, bdf] Use a union as a hash key.
1786
1787         We want to support both an integer and a string key later on.
1788
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.
1793
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.
1798
1799         * src/bdf/bdflib.c: Updated.
1800
1801 2015-12-19  Werner Lemberg  <wl@gnu.org>
1802
1803         [bdf] Use new hash functions.
1804
1805         * src/bdf/bdf.h: Include FT_INTERNAL_HASH_H.
1806         (hashnode, hashtable): Removed.
1807         (bdf_font_t): Use `FT_HashRec' type for `proptbl'.
1808
1809         * src/bdf/bdflib.c: Remove all hash functions.
1810         Update code for new hash structure and function names.
1811
1812 2015-12-19  Werner Lemberg  <wl@gnu.org>
1813
1814         [bdf, base] Lift hash functions from bdf driver to base module.
1815
1816         * src/base/fthash.c, include/freetype/internal/fthash.h: New files,
1817         containing (massaged) code from `bdflib.c' and `bdf.h'.
1818
1819         * include/freetype/internal/internal.h (FT_INTERNAL_HASH_H): New
1820         macro.
1821
1822         * src/base/ftbase.c: Include `fthash.c'.
1823
1824         * src/base/Jamfile (_sources): Add `fthash'.
1825
1826         * src/base/rules.mk (BASE_SRC): Add `fthash.c'.
1827
1828         * docs/LICENSE.TXT: Updated.
1829
1830 2015-12-15  Werner Lemberg  <wl@gnu.org>
1831
1832         [autofit] Add blue-zone support for Bengali script.
1833
1834         This essentially moves the Bengali script from the `Indic' hinter to
1835         the `Latin' hinter.
1836
1837         * src/autofit/afblue.dat: Add blue zone data for Bengali.
1838
1839         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1840
1841         * src/autofit/afscript.h: Add Bengali standard characters and move
1842         data out of AF_CONFIG_OPTION_INDIC block.
1843
1844         * src/autofit/afranges.c: Move Bengali data out of
1845         AF_CONFIG_OPTION_INDIC block.
1846
1847         * src/autofit/afstyles.h: Update Bengali data; in particular, use
1848         AF_WRITING_SYSTEM_LATIN.
1849
1850 2015-12-14  Ben Wagner  <bungeman@gmail.com>
1851
1852         [bdf] Remove dead code (#46625).
1853
1854         The BDF specification only allows decimal numbers, no octal or
1855         hexadecimal decoding is needed.
1856
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.
1861
1862 2015-12-14  Werner Lemberg  <wl@gnu.org>
1863
1864         [base] Fix calls to `FT_Stream_Seek'.
1865
1866         * src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set
1867         `error'.
1868
1869 2015-12-14  Ben Wagner  <bungeman@gmail.com>
1870
1871         [base] Check error when seeking to data supplied offset (#46635).
1872
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.
1876
1877 2015-12-13  Werner Lemberg  <wl@gnu.org>
1878
1879         [autofit] Add support for Myanmar script.
1880
1881         * src/autofit/afblue.dat: Add blue zone data for Myanmar.
1882
1883         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1884
1885         * src/autofit/afscript.h: Add Myanmar standard characters.
1886
1887         * src/autofit/afranges.c: Add Myanmar data.
1888
1889         * src/autofit/afstyles.h: Add Myanmar data.
1890
1891 2015-12-12  Werner Lemberg  <wl@gnu.org>
1892
1893         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Minor.
1894
1895 2015-12-12  Werner Lemberg  <wl@gnu.org>
1896
1897         * src/autofit/afscript.h: Avoid potential crash.
1898
1899 2015-12-10  Werner Lemberg  <wl@gnu.org>
1900
1901         [autofit] Restore OpenType feature check.
1902
1903         This was removed while rewriting the HarfBuzz interface.
1904
1905         * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add `hb_buf' field to
1906         hold internal HarfBuzz buffer, needed for feature comparison.
1907
1908         * src/autofit/afglobal.c (af_face_globals_new,
1909         af_face_globals_free): Initialize and destroy `hb_buf'.
1910
1911         * src/autofit/afshaper.c (af_shaper_get_cluster): Compare character
1912         (cluster) with and without applied feature.
1913
1914         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix tracing
1915         message.
1916
1917 2015-12-10  Werner Lemberg  <wl@gnu.org>
1918
1919         [autofit] Remove redundant code.
1920
1921         * src/autofit/aflatin.c (af_latin_metrics_init_widths): Do it.
1922
1923 2015-12-09  Werner Lemberg  <wl@gnu.org>
1924
1925         [autofit] Thinko.
1926
1927         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Don't count
1928         empty blue zones (bug introduced 2015-12-06).
1929
1930 2015-12-09  Werner Lemberg  <wl@gnu.org>
1931
1932         [autofit] Introduce subscript top blue zones.
1933
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.
1937
1938         This only works for character clusters mapped to multiple glyphs.
1939
1940         * src/autofit/afblue.dat: Add subscript top blue zone for Khmer.
1941
1942         * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_SUB_TOP): New
1943         macro.
1944
1945         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1946
1947         * src/autofit/aflatin.h (AF_LATIN_IS_SUB_TOP_BLUE,
1948         AF_LATIN_BLUE_SUB_TOP): New macros.
1949
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.
1955
1956 2015-12-09  Werner Lemberg  <wl@gnu.org>
1957
1958         [autofit] Fix tracing message.
1959
1960         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Display
1961         inactive blue zones also.
1962
1963 2015-12-06  Werner Lemberg  <wl@gnu.org>
1964
1965         * src/autofit/afblue.dat: Add more Khmer clusters.
1966
1967         Some fonts have incorrect ligatures; we need more samples to get a
1968         good mean value.
1969
1970         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1971
1972 2015-12-06  Werner Lemberg  <wl@gnu.org>
1973
1974         [autofit] Typos.
1975
1976         * src/autofit/afshaper.c (af_shaper_buf_create, af_shaper_get_elem)
1977         [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Make it compile.
1978
1979 2015-12-06  Werner Lemberg  <wl@gnu.org>
1980
1981         [autofit] Add support for Khmer script.
1982
1983         We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and
1984         `Khmer symbols' (`khms', U+19E0-U+19FF).
1985
1986         * src/autofit/afblue.dat: Add blue zone data for Khmer.
1987
1988         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1989
1990         * src/autofit/afscript.h: Add Khmer standard characters.
1991
1992         * src/autofit/afranges.c: Add Khmer data.
1993
1994         * src/autofit/afstyles.h: Add Khmer data.
1995
1996 2015-12-06  Werner Lemberg  <wl@gnu.org>
1997
1998         [autofit] Rewrite HarfBuzz interface to support character clusters.
1999
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.
2005
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.
2009
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'.
2015
2016         * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
2017         af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated.
2018
2019         * src/autofit/aflatin.c (af_latin_metrics_init_widths,
2020         af_latin_metrics_init_blues, af_latin_metrics_check_digits):
2021         Updated.
2022
2023         * include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/.
2024
2025         * src/autofit/afglobal.c: s/hbshim.h/afshaper.h/.
2026         (af_face_globals_compute_style_coverage): Updated.
2027
2028         * src/autofit/afglobal.h: s/hbshim.h/afshaper.h/.
2029
2030         * src/autofit/autofit.c: s/hbshim.c/afshaper.c/.
2031
2032         * src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC):
2033         Updated.
2034
2035 2015-12-06  Werner Lemberg  <wl@gnu.org>
2036
2037         [autofit] Prepare forthcoming changes.
2038
2039         This makes it easier to control the commits.
2040
2041         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Add dummy
2042         loop.  No functional change.
2043
2044 2015-12-06  Werner Lemberg  <wl@gnu.org>
2045
2046         [autofit] Use string of standard characters.
2047
2048         This is more flexible; additionally, it would allow character
2049         clusters.
2050
2051         * src/autofit/aftypes.h (SCRIPT, AF_DEFINE_SCRIPT_CLASS): Updated.
2052         (AF_ScriptClassRec): Replace `standard_char[123]' with
2053         `standard_charstring'.
2054
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.
2058
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.
2062
2063         * src/autofit/afcjk.c (af_cjk_metrics_init_widths),
2064         src/autofit/aflatin.c (af_latin_metrics_init_widths): Updated.
2065
2066 2015-12-05  Werner Lemberg  <wl@gnu.org>
2067
2068         * src/autofit/afblue.dat: Separate blue zone characters with spaces.
2069
2070         Another preparation for character cluster support.
2071
2072         * src/autofit/afblue.c, src/autofit.afblue.h: Regenerated.
2073
2074 2015-12-05  Werner Lemberg  <wl@gnu.org>
2075
2076         * src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces.
2077
2078         Instead, reduce multiple spaces to a single one.  We need this later
2079         for supporting character clusters in `afblue.dat'.
2080
2081 2015-12-05  Werner Lemberg  <wl@gnu.org>
2082
2083         * src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'.
2084
2085         * src/autofit/afblue.h: Regenerated.
2086
2087 2015-12-05  Werner Lemberg  <wl@gnu.org>
2088
2089         * src/autofit/afwarp.c: s/INT_MIN/FT_INT_MIN/.
2090
2091 2015-12-03  Werner Lemberg  <wl@gnu.org>
2092
2093         * builds/unix/install.mk (install): Remove stale `ft2build.h'.
2094
2095 2015-12-01  Werner Lemberg  <wl@gnu.org>
2096
2097         [type1] Avoid dangling pointer (#46572).
2098
2099         * src/type1/t1afm.c (T1_Read_Metrics): Properly reset
2100         `face->afm_data'.
2101
2102 2015-11-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
2103
2104         * include/freetype/ftlcdfil.h: Documentation tweak.
2105
2106 2015-11-28  Werner Lemberg  <wl@gnu.org>
2107
2108         * Version 2.6.2 released.
2109         =========================
2110
2111
2112         Tag sources with `VER-2-6-2'.
2113
2114         * docs/VERSION.DLL: Update documentation and bump version number to
2115         2.6.2.
2116
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/.
2133
2134         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.
2135
2136         * builds/unix/configure.raw (version_info): Set to 18:2:12.
2137         * CMakeLists.txt (VERSION_PATCH): Set to 2.
2138
2139         * docs/CHANGES: Updated.
2140
2141 2015-11-28  Werner Lemberg  <wl@gnu.org>
2142
2143         Fix C++ compilation.
2144
2145         * src/autofit/afloader.c: Include FT_INTERNAL_CALC_H.
2146
2147         * src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler.
2148
2149 2015-11-28  Nikolaus Waxweiler  <madigens@gmail.com>
2150
2151         Change default LCD filter to be normalized and color-balanced.
2152
2153         * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update
2154         `default_filter'.
2155
2156 2015-11-28  Werner Lemberg  <wl@gnu.org>
2157
2158         [docmaker] Allow references to section names.
2159
2160         In the reference, we show the section's title enclosed in single
2161         quotes.
2162
2163         * src/tools/docmaker/formatter.py (Formatter::__init__): Collect
2164         section names as identifiers.
2165
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.
2172
2173 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2174
2175         [cmake] Add script to test the config module.
2176
2177         * builds/cmake/testbuild.sh: New file.
2178
2179 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2180
2181         * CMakeLists.txt: Create `freetype-config.cmake' config module.
2182
2183 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2184
2185         * CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'.
2186
2187 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2188
2189         [cmake] Add better control of library dependencies.
2190
2191         * CMakeLists.txt: Add `WITH_*' variables to force/auto/omit
2192         ZLIB/BZip2/PNG/HarfBuzz.
2193
2194 2015-11-27  Tamas Kenez  <tamas.kenez@adasworks.com>
2195
2196         [cmake] Make `FindHarfBuzz' observe the REQUIRED option.
2197
2198         * builds/cmake/FindHarfBuzz.cmake: Implement it.
2199
2200 2015-11-27  Werner Lemberg  <wl@gnu.org>
2201
2202         [cmake] Collect files specific to cmake in `builds/cmake'.
2203
2204         * builds/FindHarfBuzz.cmake: Move to ...
2205         * builds/cmake/FindHarfBuzz.cmake: ... this place.
2206
2207         * CMakeLists.txt (CMAKE_MODULE_PATH): Updated.
2208
2209 2015-11-27  Alexander Bock  <alexander.j.bock@nasa.gov>
2210
2211         CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'.
2212
2213 2015-11-26  Werner Lemberg  <wl@gnu.org>
2214
2215         [docmaker] Allow `foo[bar]' as identifier.
2216
2217         We need this to handle equally named properties in different
2218         modules.
2219
2220         * src/tools/docmaker/content.py (re_identifier),
2221         src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'.
2222
2223         * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word,
2224         HtmlFormatter::index_exit, HtmlFormatter::section_enter,
2225         HtmlFormatter::block_enter): Handle `foo[bar]'.
2226
2227 2015-11-25  Werner Lemberg  <wl@gnu.org>
2228
2229         * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480).
2230
2231         (_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its
2232         contents.
2233
2234 2015-11-21  Werner Lemberg  <wl@gnu.org>
2235
2236         * include/freetype/internal/ftcalc.h: Don't use `register' keyword.
2237
2238         This fixes compiler warnings.
2239
2240         Reported by Behdad.
2241
2242 2015-11-20  Werner Lemberg  <wl@gnu.org>
2243
2244         Add `FT_LCD_FILTER_LEGACY1' enum value.
2245
2246         This does the same as `FT_LCD_FILTER_LEGACY'.
2247
2248         See
2249
2250           https://bugs.freedesktop.org/show_bug.cgi?id=92981
2251
2252         for the reasoning.
2253
2254         * include/freetype/ftlcdfil.h (FT_LcdFilter): New value
2255         `FT_LCD_FILTER_LEGACY1'.
2256
2257         * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it.
2258
2259 2015-11-15  Werner Lemberg  <wl@gnu.org>
2260
2261         * src/autofit/afhints.c (af_get_segment_index): Fix it.
2262
2263         The old code was too simple, returning invalid values in most cases
2264         where a segment crosses the contour start.
2265
2266 2015-11-15  Werner Lemberg  <wl@gnu.org>
2267
2268         * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439).
2269
2270 2015-11-11  Werner Lemberg  <wl@gnu.org>
2271
2272         [cff, autofit] Switch off stem darkening by default.
2273
2274         * src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c
2275         (cff_driver_init): Do it.
2276
2277 2015-11-10  Jan Alexander Steffens (heftig)  <jan.steffens@gmail.com>
2278
2279         Allow native CFF hinter in FT_RENDER_MODE_LIGHT.
2280
2281         Both the native CFF hinter and the auto-hinter now have a very
2282         similar rendering style.
2283
2284         * include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no
2285         longer implies FT_LOAD_FORCE_AUTOHINT.
2286
2287         * include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New
2288         macro.
2289
2290         * include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New
2291         macro.
2292
2293         * src/cff/cffdrivr.c (cff_driver_class): Use it.
2294
2295         * src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection
2296         logic.
2297
2298 2015-11-09  Werner Lemberg  <wl@gnu.org>
2299
2300         * src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408).
2301
2302 2015-11-09  Werner Lemberg  <wl@gnu.org>
2303
2304         [truetype] Remove integer to pointer conversion compiler warning.
2305
2306         Problem reported by Alexei.
2307
2308         * src/truetype/ttgload.c (load_truetype_glyph): Use a solution found
2309         in the glib library to fix the issue.
2310
2311 2015-11-08  Behdad Esfahbod  <behdad@behdad.org>
2312
2313         [sfnt] Accept version 3 of `EBLC' and `CBLC' tables also.
2314
2315         * src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it.
2316
2317 2015-11-08  Philipp Knechtges  <philipp-dev@knechtges.com>
2318
2319         [autofit] Don't distort (latin) glyphs too much (#46195).
2320
2321         * src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and
2322         `descender' fields.
2323
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.
2328
2329 2015-11-05  Werner Lemberg  <wl@gnu.org>
2330
2331         [sfnt] Ignore embedded bitmaps with zero size (#46379).
2332
2333         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement
2334         it.
2335
2336 2015-11-04  Werner Lemberg  <wl@gnu.org>
2337
2338         [truetype] Catch infinite recursion in subglyphs (#46372).
2339
2340         * include/freetype/internal/tttypes.h (TT_LoaderRec): New field
2341         `composites'.
2342
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'.
2349
2350 2015-11-04  Werner Lemberg  <wl@gnu.org>
2351
2352         [truetype] Better tracing of composite glyphs.
2353
2354         * src/truetype/ttgload.c (TT_Load_Composite_Glyph,
2355         load_truetype_glyph): Implement it.
2356
2357 2015-11-03  Werner Lemberg  <wl@gnu.org>
2358
2359         [sfnt] Protect against zero-size bitmaps (#46345).
2360
2361         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check
2362         `glyph_size'.
2363
2364 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2365
2366         * src/autofit/afloader.c (af_loader_load_g): Implement emboldening.
2367
2368 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2369
2370         [autofit] Implement darkening computation function.
2371
2372         This is a crude adaption of the original `cf2_computeDarkening'
2373         function.
2374
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.
2379
2380 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2381
2382         [autofit] Add functions to get standard widths for writing systems.
2383
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.
2388
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.
2393
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.
2403
2404 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2405
2406         [autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data.
2407
2408         * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields.
2409
2410         * src/autofit/afglobal.c (af_face_globals_new): Initialize new
2411         fields.
2412         (af_face_globals_free): Reset new fields.
2413
2414 2015-11-02  Nikolaus Waxweiler  <madigens@gmail.com>
2415
2416         [autofit] Add stem-darkening properties.
2417
2418         Actual code follows in a later commit.
2419
2420         * include/freetype/ftautoh.h: Document `no-stem-darkening' and
2421         `darkening-parameters'.
2422
2423         * src/autofit/afmodule.h: New fields `no_stem_darkening' and
2424         `darken_params'.
2425
2426         * src/autofit/afmodule.c (af_property_set, af_property_get):
2427         Handle them.
2428         (af_autofitter_init): Initialize them.
2429
2430 2015-11-02  Ben Wagner  <bungeman@gmail.com>
2431
2432         [ftfuzzer] Add support for multiple files (patch #8779).
2433
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.
2437
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.
2441
2442         * src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers.
2443         (archive_read_entry_data, parse_data): New functions.
2444         (LLVMFuzzerTestOneInput): Updated.
2445
2446         * src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom
2447         mutator for libFuzzer that can mutate tarballs in a sensible way.
2448
2449 2015-10-31  Werner Lemberg  <wl@gnu.org>
2450
2451         [sfnt] Fix cmap 14 validation (#46346).
2452
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.
2456
2457 2015-10-31  Werner Lemberg  <wl@gnu.org>
2458
2459         [sfnt] Handle infinite recursion in bitmap strikes (#46344).
2460
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.
2470
2471 2015-10-29  Werner Lemberg  <wl@gnu.org>
2472
2473         * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor.
2474
2475 2015-10-29  Werner Lemberg  <wl@gnu.org>
2476
2477         * CMakeLists.txt: Remove code to set MSVC's /FD compiler switch.
2478
2479         Problem reported by David Capello <davidcapello@gmail.com>; see
2480
2481           https://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html
2482
2483         for details.
2484
2485 2015-10-27  Werner Lemberg  <wl@gnu.org>
2486
2487         [pfr] Add some safety guards (#46302).
2488
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.
2492
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.
2497
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.
2502
2503 2015-10-26  Werner Lemberg  <wl@gnu.org>
2504
2505         [truetype] Fix sanitizing logic for `loca' (#46223).
2506
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.
2510
2511 2015-10-25  Werner Lemberg  <wl@gnu.org>
2512
2513         [autofit] Improve tracing.
2514
2515         * src/autofit/afhints.c (af_print_idx, af_get_segment_index,
2516         af_get_edge_index): New functions.
2517
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.
2522
2523         (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove
2524         unnecessary `|', `[', and `]'.
2525         Don't print `-1' but `--' for missing elements.
2526
2527 2015-10-24  Werner Lemberg  <wl@gnu.org>
2528
2529         [sfnt] Sanitize bitmap strike glyph height.
2530
2531         Problem reported by Nikolay Sivov <bunglehead@gmail.com>.
2532
2533         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value
2534         for `metrics->height' by applying some heuristics.
2535
2536 2015-10-22  Werner Lemberg  <wl@gnu.org>
2537
2538         [sfnt, type42] Fix clang compiler warnings.
2539
2540         * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'.
2541
2542         * src/type42/t42parse.c (t42_parse_sfnts): Use proper cast.
2543
2544 2015-10-22  Dave Arnold  <darnold@adobe.com>
2545             Werner Lemberg  <wl@gnu.org>
2546
2547         [cff] Avoid overflow/module arithmetic.
2548
2549         This modifies the addition of subroutine number to subroutine bias
2550         from unsigned to signed, but does not change any results.
2551
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.
2557
2558         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
2559         Updated similarly.
2560
2561 2015-10-22  Werner Lemberg  <wl@gnu.org>
2562
2563         [cid] Better check of `SubrCount' dictionary entry (#46272).
2564
2565         * src/cid/cidload.c (cid_face_open): Add more sanity tests for
2566         `fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'.
2567
2568 2015-10-21  Werner Lemberg  <wl@gnu.org>
2569
2570         [base] Pacify compiler (#46266).
2571
2572         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and
2573         `anchor'.
2574
2575 2015-10-21  Werner Lemberg  <wl@gnu.org>
2576
2577         [type42] Fix heap buffer overflow (#46269).
2578
2579         * src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in
2580         bounds checking.
2581
2582 2015-10-21  Dave Arnold  <darnold@adobe.com>
2583
2584         [cff] Fix limit in assert for max hints.
2585
2586         * src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the
2587         limit (96 bits).
2588
2589 2015-10-21  Dave Arnold  <darnold@adobe.com>
2590
2591         [cff] Remove an assert (#46107).
2592
2593         * src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges
2594         in wrong order.
2595
2596 2015-10-21  Werner Lemberg  <wl@gnu.org>
2597
2598         [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257).
2599
2600         * src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize'
2601         only after thorough checks.
2602         Add tracing messages.
2603
2604 2015-10-21  Werner Lemberg  <wl@gnu.org>
2605
2606         [type42] Better check invalid `sfnts' array data (#46255).
2607
2608         * src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be
2609         checked individually against available data size.
2610
2611 2015-10-20  Werner Lemberg  <wl@gnu.org>
2612
2613         [cid] Add a bunch of safety checks.
2614
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'.
2622
2623 2015-10-20  Werner Lemberg  <wl@gnu.org>
2624
2625         [cid] Avoid segfault with malformed input (#46250).
2626
2627         * src/cid/cidload.c (cid_read_subrs): Return a proper error code for
2628         unsorted offsets.
2629
2630 2015-10-20  StudioEtrange  <nomorgan@gmail.com>
2631
2632         * CMakeLists.txt: Enable shared library builds on MinGW (#46233).
2633
2634 2015-10-20  Werner Lemberg  <wl@gnu.org>
2635
2636         * src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229).
2637
2638 2015-10-19  Ben Wagner  <bungeman@gmail.com>
2639
2640         [cid] Better handle invalid glyph stream offsets (#46221).
2641
2642         * src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph
2643         length.
2644
2645 2015-10-18  Werner Lemberg  <wl@gnu.org>
2646
2647         [psaux] Fix tracing of negative numbers.
2648
2649         Due to incorrect casting negative numbers were shown as very large
2650         (positive) integers on 64bit systems.
2651
2652         * src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_none>:
2653         Use division instead of shift.
2654
2655 2015-10-18  Werner Lemberg  <wl@gnu.org>
2656
2657         [truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223).
2658
2659         * devel/ftoption.h, include/freetype/config/ftoption.h: Surround it
2660         with #ifndef ... #endif, as suggested in the tracker issue.
2661
2662 2015-10-18  Werner Lemberg  <wl@gnu.org>
2663
2664         [truetype] Better protection against malformed `fpgm' (#46223).
2665
2666         * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a
2667         malformed `fpgm' table more than once.
2668
2669 2015-10-17  Werner Lemberg  <wl@gnu.org>
2670
2671         * src/cid/cidgload.c (cid_load_glyph): Fix memory leak.
2672
2673         Reported by Kostya Serebryany <kcc@google.com>.
2674
2675 2015-10-17  Werner Lemberg  <wl@gnu.org>
2676
2677         [bdf] Prevent memory leak (#46217).
2678
2679         * src/bdf/bdflib.c (_bdf_parse_glyphs) <STARTCHAR>: Check
2680         _BDF_GLYPH_BITS.
2681
2682 2015-10-17  Werner Lemberg  <wl@gnu.org>
2683
2684         [bdf] Use stream size to adjust number of glyphs.
2685
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.
2690
2691 2015-10-17  Werner Lemberg  <wl@gnu.org>
2692
2693         * src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size.
2694
2695 2015-10-17  Werner Lemberg  <wl@gnu.org>
2696
2697         * src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222).
2698
2699 2015-10-17  Werner Lemberg  <wl@gnu.org>
2700
2701         [psaux] Fix heap buffer overflow (#46221).
2702
2703         * src/psaux/t1decode.c (t1_decoder_parse_charstring) <operator 12>:
2704         Fix limit check.
2705
2706 2015-10-17  Werner Lemberg  <wl@gnu.org>
2707
2708         * src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220).
2709
2710 2015-10-15  Kostya Serebryany  <kcc@google.com>
2711
2712         [ftfuzzer] Add README.
2713
2714         * src/tools/ftfuzzer/README: New file.
2715
2716 2015-10-15  Ben Wagner  <bungeman@gmail.com>
2717
2718         [bdf] Fix memory leak (#46213).
2719
2720         * src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in
2721         case of error.
2722
2723 2015-10-15  Werner Lemberg  <wl@gnu.org>
2724
2725         [truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208).
2726
2727         * devel/ftoption.h, include/freetype/config/ftoption.h
2728         (TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro.
2729
2730         * src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed.
2731         (TT_RunIns): Updated.
2732
2733 2015-10-15  Werner Lemberg  <wl@gnu.org>
2734
2735         * src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing.
2736
2737         The used indices were off by 1.
2738
2739 2015-10-15  Ben Wagner  <bungeman@gmail.com>
2740             Werner Lemberg  <wl@gnu.org>
2741
2742         * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211).
2743
2744 2015-10-15  Werner Lemberg  <wl@gnu.org>
2745
2746         [base] Compute MD5 checksums only if explicitly requested.
2747
2748         This improves profiling accuracy.
2749
2750         * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.
2751
2752 2015-10-14  Werner Lemberg  <wl@gnu.org>
2753
2754         [base] Use `FT_' namespace for MD5 functions (#42366).
2755
2756         * src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'.
2757         Undefine HAVE_OPENSSL.
2758
2759 2015-10-13  Werner Lemberg  <wl@gnu.org>
2760
2761         [type1] Correctly handle missing MM axis names (#46202).
2762
2763         * src/type1/t1load.c (T1_Get_MM_Var): Implement it.
2764
2765 2015-10-13  Werner Lemberg  <wl@gnu.org>
2766
2767         [pcf] Quickly exit if font index < 0.
2768
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).
2773
2774         * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated.
2775         Exit quickly if face_index < 0.
2776
2777         * src/pcfread.c (pcf_load_font): Add `face_index' argument.
2778         Exit quickly if face_index < 0.
2779
2780         * src/pcf/pcf.h: Updated.
2781
2782 2015-10-13  Werner Lemberg  <wl@gnu.org>
2783
2784         [ftfuzzer] Handle TTCs and MM/GX variations.
2785
2786         This patch also contains various other improvements.
2787
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'.
2796
2797 2015-10-13  Werner Lemberg  <wl@gnu.org>
2798
2799         [truetype] Refine some GX sanity tests.
2800
2801         Use the `gvar' table size instead of the remaining bytes in the
2802         stream.
2803
2804         * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'.
2805
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.
2810
2811 2015-10-13  Werner Lemberg  <wl@gnu.org>
2812
2813         [truetype] Another GX sanity test.
2814
2815         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check
2816         `tupleCount'.
2817         Add tracing message.
2818
2819 2015-10-13  Werner Lemberg  <wl@gnu.org>
2820
2821         [truetype] Fix memory leak for broken GX fonts (#46188).
2822
2823         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of
2824         deallocation.
2825
2826 2015-10-13  Werner Lemberg  <wl@gnu.org>
2827
2828         [truetype] Fix commit from 2015-10-10.
2829
2830         * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error
2831         handling body to condition.
2832
2833 2015-10-12  Werner Lemberg  <wl@gnu.org>
2834
2835         [unix] Make MKDIR_P actually work.
2836
2837         * builds/unix/configure.raw: Fix underquoting of `INSTALL' and
2838         `MKDIR_P'.
2839
2840         Problem reported by Dan Liddell <lddll@yahoo.com>.
2841
2842 2015-10-11  Werner Lemberg  <wl@gnu.org>
2843
2844         [sfnt] Improve extraction of number of named instances.
2845
2846         * src/sfnt/sfobjs.c (sfnt_init_face)
2847         [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against
2848         `fvar' table size.
2849
2850 2015-10-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
2851
2852         * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow
2853         (#46149).
2854
2855 2015-10-10  Werner Lemberg  <wl@gnu.org>
2856
2857         [sfnt] Fix infinite loops with broken cmaps (#46167).
2858
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).
2861
2862 2015-10-10  Werner Lemberg  <wl@gnu.org>
2863
2864         [truetype] More sanity tests for GX handling.
2865
2866         These tests should mainly help avoid unnecessarily large memory
2867         allocations in case of malformed fonts.
2868
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.
2879
2880 2015-10-10  Werner Lemberg  <wl@gnu.org>
2881
2882         [truetype] Better protection against malformed GX data (#46166).
2883
2884         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly
2885         handle empty `localpoints' array.
2886
2887 2015-10-10  Werner Lemberg  <wl@gnu.org>
2888
2889         * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162).
2890
2891 2015-10-09  Werner Lemberg  <wl@gnu.org>
2892
2893         * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size.
2894
2895 2015-10-08  Werner Lemberg  <wl@gnu.org>
2896
2897         [pcf] Protect against invalid number of TOC entries (#46159).
2898
2899         * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries
2900         against size of data stream.
2901
2902 2015-10-08  Werner Lemberg  <wl@gnu.org>
2903
2904         [type42] Protect against invalid number of glyphs (#46159).
2905
2906         * src/type42/t42parse.c (t42_parse_charstrings): Check number of
2907         `CharStrings' dictionary entries against size of data stream.
2908
2909 2015-10-08  Werner Lemberg  <wl@gnu.org>
2910
2911         [sfnt] Fix some signed overflows (#46149).
2912
2913         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2914         <TT_SBIT_TABLE_TYPE_SBIX>: Use `FT_MulDiv'.
2915
2916 2015-10-08  Werner Lemberg  <wl@gnu.org>
2917
2918         [type1] Protect against invalid number of subroutines (#46150).
2919
2920         * src/type1/t1load.c (parse_subrs): Check number of
2921         `Subrs' dictionary entries against size of data stream.
2922
2923 2015-10-07  Kostya Serebryany  <kcc@google.com>
2924
2925         [ftfuzzer] Add support for LLVM's LibFuzzer.
2926
2927         * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files.
2928
2929 2015-10-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
2930
2931         [smooth] Faster alternative line renderer.
2932
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.
2940
2941         * src/smooth/ftgrays.c (gray_render_line): New implementation.
2942
2943 2015-10-06  Werner Lemberg  <wl@gnu.org>
2944
2945         [cff] Return correct PS names from pure CFF (#46130).
2946
2947         * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for
2948         SFNT.
2949
2950 2015-10-04  Werner Lemberg  <wl@gnu.org>
2951
2952         [base] Replace left shifts with multiplication (#46118).
2953
2954         * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it.
2955
2956 2015-10-04  Werner Lemberg  <wl@gnu.org>
2957
2958         * Version 2.6.1 released.
2959         =========================
2960
2961
2962         Tag sources with `VER-2-6-1'.
2963
2964         * docs/VERSION.DLL: Update documentation and bump version number to
2965         2.6.1.
2966
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/.
2983
2984         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
2985
2986         * builds/unix/configure.raw (version_info): Set to 18:1:12.
2987         * CMakeLists.txt (VERSION_PATCH): Set to 1.
2988
2989         * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for
2990         dumping functions.
2991
2992 2015-10-04  Werner Lemberg  <wl@gnu.org>
2993
2994         [bzip2, gzip] Avoid access of uninitialized memory (#46109).
2995
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.
2999
3000 2015-10-03  Werner Lemberg  <wl@gnu.org>
3001
3002         [bzip2, gzip] Avoid access of uninitialized memory (#46109).
3003
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.
3007
3008 2015-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
3009
3010         [smooth] Clean up worker.
3011
3012         * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields.
3013
3014 2015-10-01  Werner Lemberg  <wl@gnu.org>
3015
3016         [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078).
3017
3018         * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of
3019         border conditions (i.e., if the loop exits naturally).
3020
3021 2015-10-01  Werner Lemberg  <wl@gnu.org>
3022
3023         * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges.
3024         They should be a subset of `af_deva_uniranges'.
3025
3026 2015-10-01  Werner Lemberg  <wl@gnu.org>
3027
3028         [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078).
3029
3030         * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to
3031         reject too large glyph indices.
3032
3033 2015-09-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
3034
3035         [smooth] Clean up worker.
3036
3037         * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'.
3038         (gray_start_cell, gray_render_line): Update.
3039
3040 2015-09-30  Werner Lemberg  <wl@gnu.org>
3041
3042         [autofit] Replace `no-base' with `non-base'.
3043
3044         * src/autofit/*: Do it.
3045
3046 2015-09-30  Werner Lemberg  <wl@gnu.org>
3047
3048         [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078).
3049
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.
3054
3055 2015-09-30  Werner Lemberg  <wl@gnu.org>
3056
3057         [truetype] Adjust number of glyphs for malformed `loca' tables.
3058
3059         * src/truetype/ttpload.c (tt_face_load_loca): Implement it.
3060
3061 2015-09-29  Werner Lemberg  <wl@gnu.org>
3062
3063         [pshinter] Avoid harmless overflow (#45984).
3064
3065         * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it.
3066
3067 2015-09-28  Werner Lemberg  <wl@gnu.org>
3068
3069         [autofit] Add support for Lao script.
3070
3071         Thanks to Danh Hong <danhhong@gmail.com> for guidance with blue zone
3072         characters!
3073
3074         * src/autofit/afblue.dat: Add blue zone data for Lao.
3075
3076         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3077
3078         * src/autofit/afscript.h: Add Lao standard characters.
3079
3080         * src/autofit/afranges.c: Add Lao data.
3081
3082         * src/autofit/afstyles.h: Add Lao data.
3083
3084 2015-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3085
3086         [base] Fix a leak by broken sfnt-PS or resource fork (#46028).
3087
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.
3091
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();
3097
3098 2015-09-27  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3099
3100         [mac] Fix buffer size calculation for LWFN font.
3101
3102         * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong
3103         to prevent confused copy by too large chunk size.
3104
3105 2015-09-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
3106
3107         * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro.
3108
3109 2015-09-26  Werner Lemberg  <wl@gnu.org>
3110
3111         [autofit] Minor tracing improvement.
3112
3113         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit
3114         blue zones header line if there are no blue zones.
3115
3116 2015-09-26  Werner Lemberg  <wl@gnu.org>
3117
3118         [bzip2, gzip, lzw] Harmonize function signatures with prototype.
3119
3120         Suggested by Hin-Tak Leung.
3121
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.
3124
3125 2015-09-26  Hin-Tak Leung  <htl10@users.sourceforge.net>
3126
3127         Add new FT_LOAD_COMPUTE_METRICS load flag.
3128
3129         * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro.
3130         * src/truetype/ttgload.c (compute_glyph_metrics): Usage.
3131
3132 2015-09-26  Werner Lemberg  <wl@gnu.org>
3133
3134         * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast.
3135
3136 2015-09-25  Werner Lemberg  <wl@gnu.org>
3137
3138         [type1] Protect against invalid number of glyphs (#46029).
3139
3140         * src/type1/t1load.c (parse_charstrings): Check number of
3141         `CharStrings' dictionary entries against size of data stream.
3142
3143 2015-09-23  Werner Lemberg  <wl@gnu.org>
3144
3145         [sfnt] Better checks for invalid cmaps (2/2) (#46019).
3146
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.
3150
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.
3155
3156 2015-09-23  Werner Lemberg  <wl@gnu.org>
3157
3158         [base, sfnt] Better checks for invalid cmaps (1/2).
3159
3160         * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds
3161         glyph indices.
3162         (FT_Get_First_Char): Updated.
3163
3164         * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character
3165         codes greater than 0xFFFF.
3166
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.
3171
3172         (tt_cmap10_char_index): Fix unsigned integer logic.
3173         (tt_cmap10_char_next): Avoid integer overflow in computation of
3174         next character code.
3175
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.
3180
3181         (tt_cmap13_char_map_binary): Avoid integer overflow in computation
3182         of next character code.
3183         (tt_cmap13_char_next): Simplify.
3184
3185 2015-09-21  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
3186
3187         [base] Check too long POST and sfnt resource (#45919).
3188
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.
3193
3194         * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x'
3195         prefix for `%p' formatter.
3196
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.
3202
3203         * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the
3204         total resource size before buffer allocation.
3205
3206 2015-09-19  Werner Lemberg  <wl@gnu.org>
3207
3208         [sfnt] Improve handling of invalid SFNT table entries (#45987).
3209
3210         This patch fixes weaknesses in function `tt_face_load_font_dir'.
3211
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.
3215
3216         - Duplicate table entries (this is, having the same tag) were not
3217           rejected.
3218
3219         - The number of valid tables was sometimes too large, leading to
3220           access of invalid tables.
3221
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.
3229
3230 2015-09-19  Werner Lemberg  <wl@gnu.org>
3231
3232         [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999).
3233
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'.
3237
3238 2015-09-17  Werner Lemberg  <wl@gnu.org>
3239
3240         [type42] Fix memory leak (#45989).
3241
3242         * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single
3243         `CharStrings' array.
3244
3245 2015-09-17  Werner Lemberg  <wl@gnu.org>
3246
3247         [psaux] Fix memory leak (#45986).
3248
3249         * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
3250         Free `temp' in case of error.
3251
3252 2015-09-17  Werner Lemberg  <wl@gnu.org>
3253
3254         [psaux] Improve tracing message.
3255
3256         * src/psaux/psobjs.c (ps_parser_load_field) <T1_FIELD_TYPE_MM_BBOX>:
3257         Handle plural correctly.
3258
3259 2015-09-17  Werner Lemberg  <wl@gnu.org>
3260
3261         [pcf] Fix integer overflows (#45985).
3262
3263         * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv.
3264
3265 2015-09-17  Werner Lemberg  <wl@gnu.org>
3266
3267         [pcf] Use FT_ABS for some property values (#45893).
3268
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.
3272
3273 2015-09-16  Werner Lemberg  <wl@gnu.org>
3274
3275         Minor fixes for some clang warnings.
3276
3277         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing
3278         initialization.
3279
3280         * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast.
3281
3282 2015-09-15  Werner Lemberg  <wl@gnu.org>
3283
3284         [type1, type42] Fix memory leaks (#45966).
3285
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.
3290
3291         * src/type42/t42parse.c (t42_parse_encoding): Handle multiple
3292         encoding vectors.
3293
3294 2015-09-15  Werner Lemberg  <wl@gnu.org>
3295
3296         [truetype] Fix integer type (#45965).
3297
3298         * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it.
3299
3300 2015-09-15  Werner Lemberg  <wl@gnu.org>
3301
3302         * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964).
3303
3304 2015-09-15  Werner Lemberg  <wl@gnu.org>
3305
3306         [type1, type42] Check encoding array size (#45961).
3307
3308         * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c
3309         (t42_parse_encoding): Do it.
3310
3311 2015-09-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
3312
3313         * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve.
3314
3315 2015-09-14  Werner Lemberg  <wl@gnu.org>
3316
3317         [type1] Fix another potential buffer overflow (#45955).
3318
3319         * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for
3320         `eexec' doesn't exceed `limit'.
3321
3322 2015-09-13  Werner Lemberg  <wl@gnu.org>
3323
3324         Replace `mkinstalldirs' with AC_PROG_MKDIR_P.
3325
3326         * builds/unix/mkinstalldirs: Removed, no longer needed.
3327
3328         * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'.
3329         Update pwd call for `$INSTALL'.
3330
3331         * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'.
3332
3333         * autogen.sh: Updated.
3334
3335 2015-09-13  Werner Lemberg  <wl@gnu.org>
3336
3337         [winfonts] Check alignment shift count for resource data (#45938).
3338
3339         * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it.
3340
3341 2015-09-13  Werner Lemberg  <wl@gnu.org>
3342
3343         [type1] Fix potential buffer overflow (#45923).
3344
3345         * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't
3346         point to end of file buffer.
3347
3348 2015-09-13  Werner Lemberg  <wl@gnu.org>
3349
3350         [gzip] Fix access of small compressed files (#45937).
3351
3352         * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak.
3353
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.
3359
3360 2015-09-11  Werner Lemberg  <wl@gnu.org>
3361
3362         [psaux] Fix potential buffer overflow (#45922).
3363
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.
3367
3368 2015-09-11  Werner Lemberg  <wl@gnu.org>
3369
3370         [base] Avoid crash while tracing `load_mac_face'.
3371
3372         Reported in Savannah bug #45919.
3373
3374         * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while
3375         tracing.
3376
3377 2015-09-11  Werner Lemberg  <wl@gnu.org>
3378
3379         [type42] Fix endless loop (#45920).
3380
3381         * src/type42/t42parse.c (t42_parse_encoding): Synchronize with
3382         type1's `parse_encoding'.
3383
3384 2015-09-10  Werner Lemberg  <wl@gnu.org>
3385
3386         [docmaker] Allow `-' in bold and italic markup.
3387
3388         * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust
3389         accordingly.
3390
3391 2015-09-09  Alexei Podtelezhnikov  <apodtele@gmail.com>
3392
3393         * src/base/ftcalc.c (FT_RoundFix): Improve.
3394
3395 2015-09-09  Wojciech Mamrak  <wmamrak@gmail.com>
3396
3397         * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize.
3398
3399         This commit makes the functions behave as expected, this is,
3400         rounding towards plus or minus infinity.
3401
3402 2015-09-07  Alexei Podtelezhnikov  <apodtele@gmail.com>
3403
3404         * src/smooth/ftgrays.c (gray_render_line): Simplify clipping.
3405
3406 2015-09-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
3407
3408         [raster,smooth] Microoptimizations.
3409
3410         * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table,
3411         Bezier_Up): Use do-while loops.
3412
3413         * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line,
3414         gray_convert_glyph): Ditto.
3415
3416 2015-09-04  Werner Lemberg  <wl@gnu.org>
3417
3418         [autofit] Redesign code ranges (2/2).
3419
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.
3423
3424         * src/autofit/aftypes.h (AF_ScriptClassRec): Add
3425         `script_uni_nobase_ranges' field.
3426         (AF_DEFINE_SCRIPT_CLASS): Updated.
3427
3428         * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and
3429         `latp' fallback scripts.
3430
3431         * src/autofit/afblue.dat: Add blue zones for Latin subscript and
3432         superscript fallback scripts.
3433
3434         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3435
3436         * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base
3437         characters.
3438         (AF_STYLE_MASK): Updated.
3439
3440         * src/autofit/afglobal.c (SCRIPT): Updated.
3441         (af_face_globals_compute_style_coverage): Handle new style flag.
3442
3443         * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style
3444         flag.
3445
3446         * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges.
3447
3448 2015-09-04  Werner Lemberg  <wl@gnu.org>
3449
3450         [autofit] Redesign code ranges (1/2).
3451
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).
3455
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.
3461
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.
3465
3466         * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode
3467         8.0.
3468         Split off superscript-like and subscript-like glyphs into...
3469
3470         (af_latb_uniranges, af_latp_uniranges): ... these two new arrays.
3471
3472         (af_xxxx_nobase_uniranges): New arrays that hold no-base characters
3473         of the corresponding character ranges.
3474
3475 2015-09-03  Werner Lemberg  <wl@gnu.org>
3476
3477         [autofit] Pass glyph index to hinting function.
3478
3479         No functionality change yet.
3480
3481         * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass
3482         glyph index.
3483
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.
3490
3491 2015-08-30  Werner Lemberg  <wl@gnu.org>
3492
3493         [autofit] Code clean-up.
3494
3495         * src/autofit/afglobal.h (AF_STYLE_MASK): New macro.
3496         (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition.
3497
3498         * src/autofit/afglobal.c (af_face_globals_compute_style_coverage):
3499         Updated.
3500
3501 2015-08-30  Werner Lemberg  <wl@gnu.org>
3502
3503         [autofit] Make glyph style array use 16bit values.
3504
3505         * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use
3506         `FT_UShort' for `map' field.
3507
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.
3511
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.
3515
3516 2015-08-26  Werner Lemberg  <wl@gnu.org>
3517
3518         * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828).
3519
3520 2015-08-25  Werner Lemberg  <wl@gnu.org>
3521
3522         [base] Improve kerning tracing and documentation.
3523
3524         * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if
3525         scaled-down kerning values differ.
3526
3527 2015-08-18  Werner Lemberg  <wl@gnu.org>
3528
3529         [raster] Remove last remnants of `raster5' driver.
3530
3531         * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed.
3532
3533         * src/raster/rastpic.c, src/raster/rastpic.h
3534         (ft_raster5_renderer_class_pic_init,
3535         ft_raster5_renderer_class_pic_free): Removed.
3536
3537 2015-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
3538
3539         [base] Improve emboldener (#45596).
3540
3541         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement
3542         of zero-length segments.
3543
3544 2015-08-16  Alexei Podtelezhnikov  <apodtele@gmail.com>
3545
3546         [base] Reoptimize arithmetic.
3547
3548         * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove
3549         special cases that slow down the general use.
3550
3551 2015-08-15  pazer  <ibemad@gmail.com>
3552
3553         Fix C++ compilation (#45762).
3554
3555         * src/base/ftstroke.c (ft_outline_glyph_class): Use
3556         FT_CALLBACK_TABLE.
3557
3558 2015-08-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
3559
3560         [truetype] Clean up.
3561
3562         * src/truetype/ttgload.c (TT_Process_Composite_Component): Use
3563         `FT_Outline_Transform' and `FT_Outline_Translate'.
3564         (translate_array): Dropped.
3565
3566 2015-08-14  Andreas Enge  <andreas.enge@inria.fr>
3567
3568         * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261).
3569
3570 2015-08-13  Werner Lemberg  <wl@gnu.org>
3571
3572         [truetype] Introduce named instance access to GX fonts.
3573
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.
3578
3579         * include/freetype/freetype.h (FT_FaceRec): Update documentation.
3580         * include/freetype/internal/sfnt.h: Ditto.
3581
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.
3586
3587         * src/truetype/ttobjs.c (tt_face_init)
3588         [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting
3589         the style name.
3590
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.
3595
3596         * src/cff/cffobjs.c (cff_face_init): Make function exit early for
3597         pure CFF fonts if `font_index < 0'.
3598         Updated.
3599
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.
3607
3608         * docs/CHANGES: Updated.
3609
3610 2015-08-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
3611
3612         [type1,cff,cid] Streamline font matrix application.
3613
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.
3619
3620 2015-08-11  Werner Lemberg  <wl@gnu.org>
3621
3622         [builds/unix] Minor.
3623
3624         * builds/unix/configure.raw:
3625         s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with
3626         similarly named uppercase variables.
3627
3628 2015-08-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
3629
3630         [type1,cid,type42] Minor improvements.
3631
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.
3636
3637 2015-08-08  Werner Lemberg  <wl@gnu.org>
3638
3639         [type42] Fix glyph access.
3640
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.
3647
3648         Apparently, noone ever noticed it; this shows how much Type 42 fonts
3649         are in use...
3650
3651         * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index
3652         to embedded TTF's glyph index.
3653
3654 2015-08-08  Werner Lemberg  <wl@gnu.org>
3655
3656         [type42] Minor clean-up.
3657
3658         * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused
3659         variable.
3660
3661 2015-08-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
3662
3663         [type42] Parse FontMatrix according to specifications.
3664
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.
3668
3669 2015-08-06  Werner Lemberg  <wl@gnu.org>
3670
3671         [autofit] Improve Arabic hinting.
3672
3673         Problem reported by Titus Nemeth <tn@tntypography.eu> (by using
3674         ttfautohint).
3675
3676         * src/autofit/afblue.dat: Add neutral blue zone for the tatweel
3677         character.
3678
3679         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
3680
3681 2015-08-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
3682
3683         [truetype] Clean up types.
3684
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.
3690
3691 2015-08-05  Werner Lemberg  <wl@gnu.org>
3692
3693         [autofit] Improve recognition of flat vs. rounded segments.
3694
3695         Lower the flatness threshold from upem/8 to upem/14, making the
3696         auto-hinter accept shorter elements.
3697
3698         Synchronize flat/round stem selection algorithm with blue zone code.
3699
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'.
3706
3707 2015-08-04  Werner Lemberg  <wl@gnu.org>
3708
3709         Another left-shift bug (#45681).
3710
3711         * src/base/ftobjs.c (IsMacBinary): Only accept positive values for
3712         `dlen'.
3713
3714 2015-08-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
3715
3716         [base] Fix `ft_corner_orientation'.
3717
3718         Remove casting from `FT_Long' to `FT_Int' that might change the sign
3719         of the return value and make it faster too.
3720
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.
3724
3725 2015-08-03  Werner Lemberg  <wl@gnu.org>
3726
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.
3730
3731 2015-08-03  Werner Lemberg  <wl@gnu.org>
3732
3733         Fix typo in clang bug from 2015-07-31 (#45678).
3734
3735         * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality.
3736
3737 2015-08-02  Werner Lemberg  <wl@gnu.org>
3738
3739         * CMakeLists.txt: Improve shared library support.
3740
3741         Based on a patch from John Cary <cary@txcorp.com>.
3742
3743 2015-08-02  Werner Lemberg  <wl@gnu.org>
3744
3745         * builds/unix/freetype-config.in (enable_shared): Remove.  Unused.
3746
3747 2015-08-02  Werner Lemberg  <wl@gnu.org>
3748
3749         Fix more invalid left-shifts.
3750
3751         * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication,
3752         not left-shift.
3753
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.
3757
3758 2015-07-31  Werner Lemberg  <wl@gnu.org>
3759
3760         Fix some bugs found by clang's `-fsanitize=undefined' (#45661).
3761
3762         * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept
3763         positive values from header.
3764         Check overflow.
3765
3766         * src/base/ftoutln.c (SCALED): Correctly handle left-shift of
3767         negative values.
3768
3769         * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified,
3770         _bdf_clear_glyph_modified): Use unsigned long constant.
3771
3772         * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't
3773         left-shift values that can be negative.
3774
3775         * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't
3776         left-shift values that can be negative.
3777
3778         * src/raster/ftraster.c (SCALED): Correctly handle left-shift of
3779         negative values.
3780
3781         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift
3782         values that can be negative.
3783
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.
3787
3788 2015-07-31  Werner Lemberg  <wl@gnu.org>
3789
3790         Define FT_LONG_MAX.
3791
3792         * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro.
3793         * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it.
3794
3795 2015-07-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
3796
3797         * src/base/ftcalc.c (FT_Vector_NormLen): Clarify.
3798
3799 2015-07-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
3800
3801         * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions.
3802
3803 2015-07-26  Matthias Clasen  <matthias.clasen@gmail.com>
3804
3805         [cff] Don't use `hmtx' table for LSB (#45520).
3806
3807         * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance
3808         width only.  Bug introduced 2015-04-10.
3809
3810 2015-07-09  Werner Lemberg  <wl@gnu.org>
3811
3812         Better support of user-supplied C++ namespaces.
3813
3814         See
3815
3816           https://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html
3817
3818         for a rationale.
3819
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.
3826
3827         * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include
3828         FT_CONFIG_STANDARD_LIBRARY_H earlier.
3829
3830         * src/truetype/ttpic.h: Include FT_INTERNAL_PIC_H.
3831
3832 2015-07-07  Werner Lemberg  <wl@gnu.org>
3833
3834         [sfnt] Make `tt_face_get_name' member of the SFNT interface.
3835
3836         * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New
3837         prototype.
3838         (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'.
3839
3840         * src/sfnt/sfdriver.c (sfnt_interface): Updated.
3841
3842         * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'.
3843         * src/sfnt/sfobjs.h: Add prototype for it.
3844
3845 2015-06-30  Werner Lemberg  <wl@gnu.org>
3846
3847         Fix some clang compiler warnings.
3848
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.
3853
3854 2015-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
3855
3856         [truetype] Speed up bytecode interpreter.
3857
3858         * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'.
3859
3860 2015-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
3861
3862         [base] Speed up emboldening.
3863
3864         * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use
3865         `FT_Vector_NormLen'.
3866
3867 2015-06-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
3868
3869         [base] Implement fast vector normalization.
3870
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.
3874
3875         * src/base/ftcalc.c (FT_Vector_NormLen): New function.
3876
3877 2015-06-28  Werner Lemberg  <wl@gnu.org>
3878
3879         * CMakeLists.txt: Always create `ftconfig.h'.
3880
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.
3884
3885 2015-06-28  Werner Lemberg  <wl@gnu.org>
3886
3887         * CMakeLists.txt: Improve MSVC support (#43737).
3888
3889 2015-06-28  Werner Lemberg  <wl@gnu.org>
3890
3891         [cmake] Check for libraries and create `ftoption.h'.
3892
3893         * builds/FindHarfBuzz.cmake: New file, taken from
3894
3895           https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake
3896
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.
3901
3902 2015-06-28  Werner Lemberg  <wl@gnu.org>
3903
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.
3907
3908 2015-06-28  Werner Lemberg  <wl@gnu.org>
3909
3910         * CMakeLists.txt: Disallow in-source builds.
3911
3912 2015-06-27  Werner Lemberg  <wl@gnu.org>
3913
3914         * src/tools/docmaker/utils.py (check_output): Add missing `\n'.
3915
3916 2015-06-26  Werner Lemberg  <wl@gnu.org>
3917
3918         * CMakeLists.txt: Select platform-dependent `ftdebug.c'.
3919
3920 2015-06-25  Werner Lemberg  <wl@gnu.org>
3921
3922         * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'.
3923         Additionally, do this for UNIX only.
3924
3925 2015-06-25  Werner Lemberg  <wl@gnu.org>
3926
3927         * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'.
3928
3929 2015-06-25  Werner Lemberg  <wl@gnu.org>
3930
3931         Another adjustment to header locations.
3932
3933         This change is a result of a discussion thread on freetype-devel
3934
3935           https://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html
3936
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'.
3940
3941         * include/freetype2: Renamed to...
3942         * include/freetype: This.
3943
3944         * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
3945         PRIVATE_HEADERS): Updated.
3946         Update creation of `ftconfig.h'.
3947         Install generated `ftconfig.h'.
3948
3949         * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
3950
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.
3954
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.
3961
3962         * builds/wince/*, builds/windows/*: Updated.
3963
3964         * devel/ft2build.h, include/ft2build.h: Updated.
3965
3966         * include/freetype2/config/ftheader.h,
3967         include/freetype2/internal/ftserv.h,
3968         include/freetype2/internal/internal.h: Update all header file
3969         macros.
3970
3971         * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
3972
3973         * docs/*: Updated.
3974
3975 2015-06-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
3976
3977         * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp.
3978
3979 2015-06-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
3980
3981         * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing.
3982
3983 2015-06-23  Werner Lemberg  <wl@gnu.org>
3984
3985         s/TYPEOF/FT_TYPEOF/ (#45376).
3986
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.
3990
3991 2015-06-22  Werner Lemberg  <wl@gnu.org>
3992
3993         Fix Savannah bug #45097.
3994
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.
4000
4001         No visible changes for the user who follows the standard FreeType
4002         header inclusion rules.
4003
4004         * include/*: Move to ...
4005         * include/freetype2/*: This directory, except `ft2build.h'.
4006
4007         * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS,
4008         PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated.
4009
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.
4014
4015         * builds/unix/freetype-config.in: Updated.
4016         Emit -I directory only if it is not `/usr/include'.
4017
4018         * builds/wince/*, builds/windows/*: Updated.
4019
4020         * devel/ft2build.h, include/ft2build.h: Updated.
4021
4022         * include/freetype2/config/ftheader.h,
4023         include/freetype2/internal/ftserv.h,
4024         include/freetype2/internal/internal.h: Update all header file
4025         macros.
4026
4027         * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated.
4028
4029 2015-06-21  Werner Lemberg  <wl@gnu.org>
4030
4031         Make Jam support work again.
4032
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.
4035
4036         * Jamfile: Call `HDRMACRO' for `ftserv.h' also.
4037         (DEFINES): Replace with...
4038         (CCFLAGS): ... this.
4039
4040         * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is
4041         already handled in the top-level Jamfile.
4042
4043         * src/autofit/Jamfile (DEFINES): Replace with...
4044         (CCFLAGS): ... this.
4045         (_sources): Add missing files.
4046
4047         * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no
4048         longer contains macro header definitions.
4049
4050         * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile,
4051         src/truetype/Jamfile (_sources): Add missing files.
4052
4053 2015-06-16  Werner Lemberg  <wl@gnu.org>
4054
4055         Fix Savannah bug #45326.
4056
4057         * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate
4058         definitions.
4059
4060 2015-06-07  Werner Lemberg  <wl@gnu.org>
4061
4062         * Version 2.6 released.
4063         =======================
4064
4065
4066         Tag sources with `VER-2-6'.
4067
4068         * docs/VERSION.DLL: Update documentation and bump version number to
4069         2.6.
4070
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/.
4087
4088         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6.
4089         (FREETYPE_PATCH): Set to 0.
4090
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.
4094
4095         * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add
4096         declarations for dumping functions.
4097
4098         * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler.
4099
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.
4104
4105 2015-06-06  Ashish Azad  <ashish.azad@samsung.com>
4106
4107         Fix Savannah bug #45260.
4108
4109         * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo.
4110
4111 2015-06-03  Werner Lemberg  <wl@gnu.org>
4112
4113         [truetype] Fix memory leak.
4114
4115         Problem reported by Grissiom <chaos.proton@gmail.com>; in
4116
4117           https://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html
4118
4119         there is an example code to trigger the bug.
4120
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.
4124
4125 2015-06-02  Werner Lemberg  <wl@gnu.org>
4126
4127         [raster] Add more tracing.
4128
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.
4132
4133 2015-06-01  Werner Lemberg  <wl@gnu.org>
4134
4135         [truetype] While tracing opcodes, show code position and stack.
4136
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.
4141
4142 2015-05-31  Werner Lemberg  <wl@gnu.org>
4143
4144         [truetype] In GX, make private point numbers work correctly.
4145
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.
4151
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.
4160
4161         * src/truetype/ttgxvar.h: Updated.
4162
4163         * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
4164         load_truetype_glyph): Updated.
4165
4166 2015-05-31  Werner Lemberg  <wl@gnu.org>
4167
4168         [truetype] In GX, make intermediate tuplets work at extrema.
4169
4170         * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition.
4171
4172 2015-05-31  Werner Lemberg  <wl@gnu.org>
4173
4174         [truetype] Add tracing information to GX code.
4175
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.
4179
4180 2015-05-28  Werner Lemberg  <wl@gnu.org>
4181
4182         * src/tools/apinames.c (names_dump): Fix invalid reference.
4183
4184         Problem reported by Guzman Mosqueda, Jose R
4185         <jose.r.guzman.mosqueda@intel.com>.
4186
4187 2015-05-24  Werner Lemberg  <wl@gnu.org>
4188
4189         [truetype] Fix commit from 2015-05-22.
4190
4191         * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code
4192         with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'.
4193
4194         Problem reported by Nikolaus Waxweiler <madigens@gmail.com>.
4195
4196 2015-05-23  Werner Lemberg  <wl@gnu.org>
4197
4198         [truetype] Fix return values of GETINFO bytecode instruction.
4199
4200         * src/truetype/ttinterp.h (TT_ExecContextRec): New fields
4201         `vertical_lcd' and `gray_cleartype'.
4202
4203         * src/truetype/ttgload.c (tt_loader_init): Initialize new fields.
4204         Change `symmetrical smoothing' to TRUE, since FreeType produces
4205         exactly this.
4206
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).
4211
4212 2015-05-23  Werner Lemberg  <wl@gnu.org>
4213
4214         [truetype] Minor.
4215
4216         * src/truetype/ttinterp.h (TT_ExecContext):
4217          s/subpixel/subpixel_hinting.
4218
4219         * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated.
4220
4221 2015-05-22  Werner Lemberg  <wl@gnu.org>
4222
4223         [truetype] Support selector index 3 of the INSTCTRL instruction.
4224
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.
4229
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.
4234
4235         * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3.
4236         (Ins_GETINFO): Updated.
4237
4238         * docs/CHANGES: Document it.
4239
4240 2015-05-20  Werner Lemberg  <wl@gnu.org>
4241
4242         [truetype] Minor.
4243
4244         * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod'
4245         argument.
4246
4247 2015-05-17  Werner Lemberg  <wl@gnu.org>
4248
4249         [truetype] Fix loading of composite glyphs.
4250
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...
4255
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).
4260
4261 2015-05-12  Chris Liddell  <chris.liddell@artifex.com>
4262
4263         [cff] Make the `*curveto' operators more tolerant.
4264
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).
4271
4272 2015-05-12  Chris Liddell  <chris.liddell@artifex.com>
4273
4274         [cff] fix incremental interface with new cff code.
4275
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).
4280
4281 2015-04-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
4282
4283         [autofit] Speed up IUP.
4284
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.
4288
4289 2015-04-28  Werner Lemberg  <wl@gnu.org>
4290
4291         [cff] Use `name' table for PS name if we have a SFNT-CFF.
4292
4293         This follows the OpenType 1.7 specification.  See
4294
4295           https://tug.org/pipermail/tex-live/2015-April/036634.html
4296
4297         for a discussion.
4298
4299         * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we
4300         have an SFNT.
4301
4302 2015-04-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
4303
4304         [truetype] Speed up IUP.
4305
4306         * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
4307         snapping to the same position from true interpolation.
4308
4309 2015-04-21  Werner Lemberg  <wl@gnu.org>
4310
4311         [autofit] By default, enable warping code but switch off warping.
4312
4313         Suggested by Behdad.
4314
4315         * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER.
4316
4317         * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping'
4318         with `false'.
4319
4320 2015-04-21  Werner Lemberg  <wl@gnu.org>
4321
4322         * docs/CHANGES: Updated.
4323
4324 2015-04-21  Werner Lemberg  <wl@gnu.org>
4325
4326         [autofit] Introduce `warping' property.
4327
4328         This code replaces the debugging hook from the previous commit with
4329         a better, more generic solution.
4330
4331         * include/ftautoh.h: Document it.
4332
4333         * src/autofit/afmodule.h (AF_ModuleRec)
4334         [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field.
4335
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.
4339
4340         * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no
4341         longer existing `_af_debug_disable_warper'.
4342
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.
4347
4348         * src/autofit/aftypes.h: Updated.
4349
4350 2015-04-16  Werner Lemberg  <wl@gnu.org>
4351
4352         [autofit] Add debugging hook to disable warper.
4353
4354         * src/autofit/afmodule.c (_af_debug_disable_warper)
4355         [FT_DEBUG_AUTOFIT]: New global variable.
4356
4357         * src/autofit/aftypes.h: Updated.
4358         (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet).
4359
4360         * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro.
4361
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.
4365
4366         * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply)
4367         [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
4368
4369         * src/autofit/aflatin2.c (af_latin2_hints_apply)
4370         [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'.
4371
4372 2015-04-10  Werner Lemberg  <wl@gnu.org>
4373
4374         [cff] Update advance width handling to OpenType 1.7.
4375
4376         Problem reported by Behdad.
4377
4378         * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case
4379         separately.
4380
4381         * src/cff/cffgload.c (cff_slot_load): Use advance width and side
4382         bearing values from `hmtx' table if present.
4383
4384 2015-04-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
4385
4386         * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop.
4387
4388 2015-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
4389
4390         * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic.
4391
4392 2015-04-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
4393
4394         [autofit] Finish the thought.
4395
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.
4398
4399 2015-04-01  Werner Lemberg  <wl@gnu.org>
4400
4401         [autofit] Call dumper functions for tracing.
4402
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.
4407
4408 2015-04-01  Werner Lemberg  <wl@gnu.org>
4409
4410         [autofit] Make debugging stuff work again.
4411
4412         The interface to ftgrid was broken in the series of commits starting
4413         with
4414
4415           [autofit] Allocate AF_Loader on the stack instead of AF_Module.
4416
4417         from 2015-01-14.
4418
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.
4422
4423         * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated.
4424
4425 2015-04-01  Werner Lemberg  <wl@gnu.org>
4426
4427         * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko.
4428
4429 2015-03-29  Werner Lemberg  <wl@gnu.org>
4430
4431         [cff] Fix Savannah bug #44629.
4432
4433         * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h
4434         (CFF_MAX_SUBRS_CALLS): Set to 16.
4435
4436 2015-03-29  Werner Lemberg  <wl@gnu.org>
4437
4438         [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'.
4439
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.
4443
4444         * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
4445         Implement it.
4446
4447         * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design,
4448         T1_Set_Var_Design): Ditto.
4449
4450 2015-03-29  Werner Lemberg  <wl@gnu.org>
4451
4452         [type1] Minor.
4453
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.
4457
4458 2015-03-27  Werner Lemberg  <wl@gnu.org>
4459
4460         [cff] Trace charstring nesting levels.
4461
4462         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdCALLGSUBR,
4463         cf2_cmdCALLSUBR, cf2_cmdRETURN>: Implement it.
4464
4465         * src/cff/cffgload.c (cff_decoder_parse_charstrings)
4466         <cff_op_callsubr, cff_op_callgsubr, cff_op_return>: Ditto.
4467
4468 2015-03-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
4469
4470         [base] Optimize `FT_Angle_Diff'.
4471
4472         Under normal circumstances we are usually close to the desired range
4473         of angle values, so that the remainder is not really necessary.
4474
4475         * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder.
4476
4477         * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro.
4478
4479 2015-03-21  Werner Lemberg  <wl@gnu.org>
4480
4481         [truetype] Improve `gvar' handling.
4482
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.
4486
4487 2015-03-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
4488
4489         * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring.
4490
4491 2015-03-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
4492
4493         Fix Savannah bug #44412 (part 2).
4494
4495         * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'.
4496
4497 2015-03-11  Werner Lemberg  <wl@gnu.org>
4498
4499         [autofit] Add support for Arabic script.
4500
4501         Thanks to Titus Nemeth <tn@tntypography.eu> for guidance!
4502
4503         * src/autofit/afblue.dat: Add blue zone data for Arabic.
4504
4505         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
4506
4507         * src/autofit/afscript.h: Add Arabic standard characters.
4508
4509         * src/autofit/afranges.c: Add Arabic data.
4510
4511         * src/autofit/afstyles.h: Add Arabic data.
4512
4513         * docs/CHANGES: Document it.
4514
4515 2015-03-11  Werner Lemberg  <wl@gnu.org>
4516
4517         Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols.
4518
4519         * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed
4520         to...
4521         (FT_SERVICE_FONT_FORMAT_H): This.
4522
4523         * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed
4524         to ...
4525         (FT_FONT_FORMAT_*): This.
4526
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.
4531
4532 2015-03-11  Werner Lemberg  <wl@gnu.org>
4533
4534         [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'.
4535
4536         * include/config/ftheader.h: Implement it.
4537         * src/base/ftfntfmt.c, docs/CHANGES: Updated.
4538
4539 2015-03-11  Werner Lemberg  <wl@gnu.org>
4540
4541         [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'.
4542
4543         * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it.
4544
4545         * docs/CHANGES: Updated.
4546
4547 2015-03-11  Werner Lemberg  <wl@gnu.org>
4548
4549         Fix automatic copyright updating.
4550
4551         * src/tools/update-copyright: Make scanning of `no-copyright'
4552         actually work.
4553
4554         * src/tools/no-copyright: Don't include README in general.
4555
4556 2015-03-11  Werner Lemberg  <wl@gnu.org>
4557
4558         Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'.
4559
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.
4577
4578 2015-03-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
4579
4580         Fix Savannah bug #44412 (part 1).
4581
4582         * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns.
4583
4584 2015-03-10  Werner Lemberg  <wl@gnu.org>
4585
4586         [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'.
4587
4588         * include/ftbitmap.h, src/base/ftbitmap.c: Implement it.
4589         Update all callers.
4590
4591         * docs/CHANGES: Updated.
4592
4593 2015-03-06  Werner Lemberg  <wl@gnu.org>
4594
4595         * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
4596
4597         Found by Alexei.
4598
4599 2015-03-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
4600
4601         * src/base/ftstroke.c: Simplify.
4602
4603 2015-03-04  Werner Lemberg  <wl@gnu.org>
4604
4605         [truetype] Some fixes and code refactoring in `ttgxvar.c'.
4606
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.
4612
4613 2015-03-03  Werner Lemberg  <wl@gnu.org>
4614
4615         [autofit] Fix Savannah bug #44241.
4616
4617         * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs
4618         with less than 3 points.
4619
4620 2015-03-02  Werner Lemberg  <wl@gnu.org>
4621
4622         Simplify `TYPEOF' macro.
4623
4624         No need for two arguments.
4625
4626         * include/config/ftconfig.h, builds/unix/ftconfig.in,
4627         builds/vms/ftconfig.h (TYPEOF): Updated.
4628
4629         * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
4630         src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated.
4631
4632 2015-03-01  Werner Lemberg  <wl@gnu.org>
4633
4634         Various compiler warning fixes for `make multi'.
4635
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'.
4641
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.
4646
4647         * src/cff/cf2intrp.c: Include `cf2intrp.h'.
4648         * src/cff/cffdrivr.c (PAIR_TAG): Removed.  Unused.
4649
4650         * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed.  Unused.
4651
4652         * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'.
4653
4654         * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX):
4655         Removed.  Unused.
4656
4657         * src/raster/ftraster.c (Render_Glyph): Declare as `static'.
4658
4659         * src/sfnt/ttpost.c (load_format_20): Fix signedness warning.
4660
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'.
4664
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.
4671
4672         * src/type42/t42parse.c (T1_Done_Table): Removed.  Unused.
4673
4674 2015-02-25  Werner Lemberg  <wl@gnu.org>
4675
4676         [psaux] Signedness fixes.
4677
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.
4681
4682 2015-02-25  Werner Lemberg  <wl@gnu.org>
4683
4684         [otvalid] Signedness fixes.
4685
4686         * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c,
4687         src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c:
4688         Apply.
4689
4690 2015-02-25  Werner Lemberg  <wl@gnu.org>
4691
4692         * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix.
4693
4694 2015-02-25  Werner Lemberg  <wl@gnu.org>
4695
4696         [lzw] Signedness fixes.
4697
4698         * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply.
4699
4700 2015-02-25  Werner Lemberg  <wl@gnu.org>
4701
4702         [gxvalid] Signedness fixes.
4703
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.
4711
4712 2015-02-25  Werner Lemberg  <wl@gnu.org>
4713
4714         [cache] Signedness fixes.
4715
4716         * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c,
4717         src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply.
4718
4719 2015-02-25  Werner Lemberg  <wl@gnu.org>
4720
4721         Change dimension fields in `FTC_ImageTypeRec' to unsigned type.
4722
4723         This doesn't break ABI.
4724
4725         * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for
4726         `width' and `height'.
4727
4728         * docs/CHANGES: Document it.
4729
4730 2015-02-25  Werner Lemberg  <wl@gnu.org>
4731
4732         [cache] Don't use `labs'.
4733
4734         This is the only place in FreeType where this function was used.
4735
4736         * include/config/ftstdlib.h (ft_labs): Remove.
4737
4738         * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with
4739         `FT_ABS'.
4740
4741 2015-02-23  Werner Lemberg  <wl@gnu.org>
4742
4743         [cache] Replace `FT_PtrDist' with `FT_Offset'.
4744
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.
4751
4752         * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c,
4753         src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated.
4754
4755 2015-02-23  Werner Lemberg  <wl@gnu.org>
4756
4757         [smooth, raster] Re-enable standalone compilation.
4758
4759         * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX)
4760         [_STANDALONE_]: Define macros.
4761
4762         * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS,
4763         FT_HYPOT) [_STANDALONE_]: Define macros.
4764
4765 2015-02-22  Werner Lemberg  <wl@gnu.org>
4766
4767         [smooth] Signedness fixes.
4768
4769         * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply.
4770
4771 2015-02-22  Werner Lemberg  <wl@gnu.org>
4772
4773         * src/raster/ftraster.c: Use the file's typedefs everywhere.
4774
4775 2015-02-22  Werner Lemberg  <wl@gnu.org>
4776
4777         * src/sfnt/ttpost.c (load_format_20): Fix error tracing message.
4778
4779         Bug introduced 6 commits earlier.
4780
4781 2015-02-22  Werner Lemberg  <wl@gnu.org>
4782
4783         [pshinter] Fix thinko.
4784
4785         * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly
4786         check `count'.
4787         Bug introduced two commits earlier.
4788
4789 2015-02-22  Werner Lemberg  <wl@gnu.org>
4790
4791         [raster] Signedness fixes.
4792
4793         * src/raster/ftraster.c, src/raster/ftrend1.c: Apply.
4794
4795 2015-02-22  Werner Lemberg  <wl@gnu.org>
4796
4797         [pshinter] Signedness fixes.
4798
4799         * src/pshinter/pshalgo.c, src/pshinter/pshglob.c,
4800         src/pshinter/pshrec.c: Apply.
4801
4802 2015-02-22  Werner Lemberg  <wl@gnu.org>
4803
4804         [pshinter] Use macros for (unsigned) flags, not enumerations.
4805
4806         * src/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros.
4807         Updated.
4808         * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros.
4809
4810 2015-02-22  Werner Lemberg  <wl@gnu.org>
4811
4812         * src/pshinter/pshrec.c: Simplify.
4813         (ps_hints_open, ps_hints_stem): Remove switch statement.
4814
4815 2015-02-22  Werner Lemberg  <wl@gnu.org>
4816
4817         [sfnt] Signedness fixes.
4818
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.
4824
4825 2015-02-22  Werner Lemberg  <wl@gnu.org>
4826
4827         [bdf] Signedness fixes.
4828
4829         * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h,
4830         src/bdf/bdflib.c: Apply.
4831
4832 2015-02-22  Werner Lemberg  <wl@gnu.org>
4833
4834         * src/bdf/bdflib.c (_bdf_atous): New function.
4835         (_bdf_parse_glyphs, _bdf_parse_start): Use it.
4836
4837 2015-02-22  Werner Lemberg  <wl@gnu.org>
4838
4839         [pcf] Signedness fixes.
4840
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.
4844
4845 2015-02-21  Werner Lemberg  <wl@gnu.org>
4846
4847         * src/winfonts/winfnt.c: Signedness fixes.
4848
4849 2015-02-21  Werner Lemberg  <wl@gnu.org>
4850
4851         [type42] Signedness fixes.
4852
4853         * src/type42/t42parse.c, src/type42/t42parse.h,
4854         src/type42/t42types.h: Apply.
4855
4856 2015-02-21  Werner Lemberg  <wl@gnu.org>
4857
4858         [pfr] Signedness fixes.
4859
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.
4863
4864 2015-02-21  Werner Lemberg  <wl@gnu.org>
4865
4866         [cff] Minor signedness fixes related to last commit.
4867
4868         * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply.
4869
4870 2015-02-20  Werner Lemberg  <wl@gnu.org>
4871
4872         [cff] Thinkos in bias handling.
4873
4874         Only the final result is always positive.
4875
4876         Bug introduced three commits earlier.
4877
4878         * src/cff/cffgload.c, src/cff/cffgload.h: Apply.
4879
4880 2015-02-20  Werner Lemberg  <wl@gnu.org>
4881
4882         [cid] Fix signedness issues and emit some better error codes.
4883
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.
4890
4891 2015-02-20  Werner Lemberg  <wl@gnu.org>
4892
4893         [cff] Signedness fixes for new engine.
4894
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.
4897
4898 2015-02-20  Werner Lemberg  <wl@gnu.org>
4899
4900         [cff] Signedness fixes for basic infrastructure and old engine.
4901
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.
4905
4906 2015-02-19  Werner Lemberg  <wl@gnu.org>
4907
4908         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'.
4909
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.
4912
4913         Problem reported by Adam Twardoch <adam@fontlab.com>.
4914
4915 2015-02-19  Werner Lemberg  <wl@gnu.org>
4916
4917         [cff] Emit better error code for invalid private dict size.
4918
4919         * src/cff/cffparse.c (cff_parse_private_dict): Reject negative
4920         values for size and offset.
4921
4922 2015-02-19  Werner Lemberg  <wl@gnu.org>
4923
4924         [autofit] Fix signedness issues.
4925
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.
4930
4931 2015-02-19  Werner Lemberg  <wl@gnu.org>
4932
4933         [autofit] Use macros for (unsigned) flags, not enumerations.
4934
4935         This harmonizes with other code in FreeType (and reduces the number
4936         of necessary casts to avoid compiler warnings).
4937
4938         * src/autofit/afblue.hin: Make flag macros unsigned.
4939         * src/autofit/afblue.h: Regenerated.
4940
4941         * src/autofit/afcjk.h: Replace flag enumeration with macros.
4942         * src/autofit/afcjk.c: Updated.
4943
4944         * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with
4945         macros.
4946         * src/autofit/afhints.c: Updated.
4947
4948         * src/autofit/aflatin.h: Replace flag enumerations with macros.
4949         * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated.
4950
4951         * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros.
4952
4953 2015-02-18  Werner Lemberg  <wl@gnu.org>
4954
4955         [type1] Fix signedness issues.
4956
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.
4960
4961 2015-02-18  Werner Lemberg  <wl@gnu.org>
4962
4963         [psaux, type1] Fix minor AFM issues.
4964
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.
4972
4973         * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs):
4974         Reject negative values for number of kerning elements.
4975
4976         * src/type1/t1afm.c, src/tools/test_afm.c: Updated.
4977
4978 2015-02-18  Werner Lemberg  <wl@gnu.org>
4979
4980         Don't use `FT_PtrDist' for lengths.
4981
4982         Use FT_UInt instead.
4983
4984         * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec,
4985         T1_DecoderRec): Do it.
4986
4987         * include/internal/t1types.h (T1_FontRec): Ditto.
4988
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.
4996
4997 2015-02-18  Werner Lemberg  <wl@gnu.org>
4998
4999         * src/type1/t1driver.c (t1_ps_get_font_value): Clean up.
5000         This handles negative values better, avoiding many casts.
5001
5002 2015-02-17  Werner Lemberg  <wl@gnu.org>
5003
5004         [base] Fix Savannah bug #44284.
5005
5006         * src/base/ftcalc.c (FT_MulFix): Typos.
5007
5008 2015-02-17  Werner Lemberg  <wl@gnu.org>
5009
5010         [truetype] Finish compiler warning fixes for signedness issues.
5011
5012         * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c,
5013         src/truetype/ttsubpix.h: Apply.
5014
5015 2015-02-17  Werner Lemberg  <wl@gnu.org>
5016
5017         * src/truetype/ttsubpix.c: Adding missing `static' keywords.
5018
5019 2015-02-17  Werner Lemberg  <wl@gnu.org>
5020
5021         [truetype] More signedness fixes.
5022
5023         * include/internal/tttypes.h, src/truetype/ttinterp.h,
5024         src/truetype/ttobjs.h, src/truetype/ttinterp.c,
5025         src/truetype/ttobjs.c: Apply.
5026
5027 2015-02-17  Werner Lemberg  <wl@gnu.org>
5028
5029         [truetype] Various signedness fixes.
5030
5031         * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply.
5032
5033         * src/truetype/ttgload.c: Apply.
5034         (TT_Get_VMetrics): Protect against invalid ascenders and descenders
5035         while constructing advance height.
5036
5037 2015-02-16  Werner Lemberg  <wl@gnu.org>
5038
5039         [base] Finish compiler warning fixes for signedness issues.
5040
5041         * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c:
5042         Apply.
5043
5044 2015-02-16  Werner Lemberg  <wl@gnu.org>
5045
5046         * include/tttables.h (TT_OS2): `fsType' must be FT_UShort.
5047
5048 2015-02-16  Werner Lemberg  <wl@gnu.org>
5049
5050         More minor signedness warning fixes.
5051
5052         * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c,
5053         src/base/ftutil.c: Apply.
5054
5055 2015-02-16  Werner Lemberg  <wl@gnu.org>
5056
5057         Next round of minor compiler warning fixes.
5058
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.
5062
5063         * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'.
5064
5065         * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c:
5066         Signedness fixes.
5067
5068 2015-02-16  Werner Lemberg  <wl@gnu.org>
5069
5070         Various minor signedness fixes.
5071
5072         * include/ftadvanc.h, include/internal/ftobjs.h,
5073         src/base/ftgloadr.c, src/base/ftobjs.c: Apply.
5074
5075 2015-02-16  Werner Lemberg  <wl@gnu.org>
5076
5077         New `TYPEOF' macro.
5078
5079         This helps suppress signedness warnings, avoiding issues with
5080         implicit conversion changes.
5081
5082         * include/config/ftconfig.h, builds/unix/ftconfig.in,
5083         builds/vms/ftconfig.h (TYPEOF): Define.
5084
5085         * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR),
5086         src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it.
5087
5088 2015-02-16  Werner Lemberg  <wl@gnu.org>
5089
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.
5092
5093 2015-02-16  Werner Lemberg  <wl@gnu.org>
5094
5095         Fix Savannah bug #44261.
5096
5097         * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the
5098         environment also while calling the configure script.
5099
5100 2015-02-16  Werner Lemberg  <wl@gnu.org>
5101
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.
5105
5106 2015-02-15  Werner Lemberg  <wl@gnu.org>
5107
5108         [base] Clean up signedness issues in `ftdbgmem.c'.
5109
5110         Also fix other minor issues.
5111
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.
5116
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.
5120
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.
5124
5125 2015-02-15  Werner Lemberg  <wl@gnu.org>
5126
5127         [base] Clean up signedness in arithmetic functions.
5128
5129         This makes the code more readable and reduces compiler warnings.
5130
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.
5135
5136 2015-02-07  Werner Lemberg  <wl@gnu.org>
5137
5138         [sfnt] Fix Savannah bug #44184.
5139
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.
5143
5144 2015-02-06  Jon Anderson  <jon@websupergoo.com>
5145
5146         [truetype] Fix regression in the incremental glyph loader.
5147
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.
5151
5152 2015-02-06  Werner Lemberg  <wl@gnu.org>
5153
5154         [autofit] Fix potential memory leak.
5155
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).
5159
5160         It certainly doesn't harm since it is similar to already existing
5161         checks in the code for embedded arrays.
5162
5163         * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours'
5164         and `max_points' for all cases.
5165
5166 2015-01-31  Werner Lemberg  <wl@gnu.org>
5167
5168         [autofit] Add support for Thai script.
5169
5170         Thanks to Ben Mitchell <ben@rosettatype.com> for guidance with blue
5171         zone characters!
5172
5173         * src/autofit/afblue.dat: Add blue zone data for Thai.
5174
5175         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
5176
5177         * src/autofit/afscript.h: Add Thai standard characters.
5178
5179         * src/autofit/afranges.c: Add Thai data.
5180
5181         * src/autofit/afstyles.h: Add Thai data.
5182
5183 2015-01-23  Behdad Esfahbod  <behdad@behdad.org>
5184
5185         [raster] Handle `FT_RASTER_FLAG_AA' correctly.
5186
5187         This fixes a breakage caused by the commit `[raster] Remove
5188         5-level gray AA mode from monochrome rasterizer.'.
5189
5190         Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de>.
5191
5192         * src/raster/ftraster.c (ft_black_render): Handle
5193         `FT_RASTER_FLAG_AA'.
5194
5195         * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode
5196         remnants.
5197
5198 2015-01-18  Werner Lemberg  <wl@gnu.org>
5199
5200         * src/base/ftobjs.c (FT_New_Library): Fix compiler warning.
5201
5202 2015-01-18  Chris Liddell  <chris.liddell@artifex.com>
5203
5204         [raster] Fix Savannah bug #44022.
5205
5206         Add fallback for glyphs with degenerate bounding boxes.
5207
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.
5214
5215         This problem can be observed with the `I' glyph (gid 47) in the
5216         Autodesk RomanS TrueType font.
5217
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).
5221
5222 2015-01-17  Werner Lemberg  <wl@gnu.org>
5223
5224         Add some tools to handle yearly copyright notice updates.
5225
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.
5229
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'
5235
5236 2015-01-14  Werner Lemberg  <wl@gnu.org>
5237
5238         * docs/CHANGES: Updated, using a description from Behdad.
5239
5240 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5241
5242         * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning.
5243
5244 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5245
5246         [autofit] Add embedded array of segments and edges.
5247
5248         Avoids multiple mallocs per typical glyphs.
5249
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.
5253
5254         * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED):
5255         New macros.
5256         (AF_AxisHintsRec): Add two arrays for segments and edges.
5257
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.
5263
5264 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5265
5266         [autofit] Add embedded arrays for points and contours.
5267
5268         This avoids at least two malloc calls for typical glyphs.
5269
5270         * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED):
5271         New macros.
5272         (AF_GlyphHintsRec): Add two arrays for contours and points.
5273
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.
5278
5279 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5280
5281         [autofit] Allocate hints object on the stack.
5282
5283         This avoids one malloc per load.
5284
5285         * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to
5286         `AF_GlyphHints'.
5287         Update prototype.
5288
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.
5293
5294         * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local
5295         `hints' object.
5296
5297 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5298
5299         [autofit] Reuse slot glyph loader.
5300
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.
5305
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.
5312
5313         * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member.
5314         Update prototype.
5315
5316         * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated.
5317
5318 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5319
5320         [autofit] Remove (unused) support for composite glyphs.
5321
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.
5325
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:
5329
5330           /* resolve load flags dependencies */
5331
5332           if ( load_flags & FT_LOAD_NO_RECURSE )
5333             load_flags |= FT_LOAD_NO_SCALE         |
5334                           FT_LOAD_IGNORE_TRANSFORM;
5335
5336           if ( load_flags & FT_LOAD_NO_SCALE )
5337           {
5338             load_flags |= FT_LOAD_NO_HINTING |
5339                           FT_LOAD_NO_BITMAP;
5340
5341             load_flags &= ~FT_LOAD_RENDER;
5342           }
5343
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.
5347
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.
5352
5353 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5354
5355         [raster] Fix uninitialized memory access.
5356
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).
5364
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.
5369
5370         * src/raster/ftraster.c (Convert_Glyph): Don't access an
5371         uninitialized `cProfile'.
5372
5373 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5374
5375         [smooth] Fix uninitialized memory access.
5376
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.
5384
5385         * src/smooth/ftgrays.c (gray_raster_render): Initialize
5386         `ras.span_y'.
5387
5388 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5389
5390         [base] Don't initialize unused `driver->glyph_loader'.
5391
5392         * src/base/ftobjs.c (Destroy_Driver): Don't call
5393         `FT_GlyphLoader_Done'.
5394         (FT_Add_Module): Don't call `FT_GlyphLoader_New'.
5395
5396 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5397
5398         [base] Don't allocate `library->raster_pool' anymore.
5399
5400         It's unused after the following commits:
5401
5402           [raster] Allocate render pool for mono rasterizer on the stack.
5403           [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5404
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.
5408
5409         * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement.
5410
5411 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5412
5413         [base] Do not reorder library->renderers upon use.
5414
5415         Instead of keeping `library->renderers' in a MRU order, just leave
5416         it as-is.  The MRU machinery wasn't thread-safe.
5417
5418         With this patch, rasterizing glyphs from different faces from
5419         different threads doesn't fail choosing rasterizer
5420         (FT_Err_Cannot_Render_Glyph).
5421
5422         Easiest to see that crash was to add a `printf' (or otherwise let
5423         thread yield in FT_Throw with debugging enabled).
5424
5425         * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c
5426         (FT_Outline_Render): Don't call `FT_Set_Renderer'.
5427
5428 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5429
5430         [raster] Allocate render pool for mono rasterizer on the stack.
5431
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.
5435
5436         With this patch, rasterizing glyphs from different faces from
5437         different threads doesn't crash in the monochrome rasterizer.
5438
5439         * src/raster/ftraster.c (black_TRaster): Remove `buffer',
5440         `buffer_size', and `worker' members.
5441
5442         (ft_black_render): Create `buffer' locally.
5443         (ft_black_reset): Updated.
5444
5445 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5446
5447         [raster] Remove 5-level gray AA mode from monochrome rasterizer.
5448
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.
5453
5454         550 lines down.
5455
5456         * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING,
5457         RASTER_GRAY_LINES): Remove macros and all associated code.
5458
5459         (black_TWorker): Remove `gray_min_x' and `gray_max_x'.
5460         (black_TRaster): Remove `grays' and `gray_width'.
5461
5462         (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop,
5463         ft_black_render): Updated.
5464
5465         * src/raster/ftrend1.c (ft_raster1_render): Simplify code.
5466         (ft_raster5_renderer_class): Removed.
5467
5468 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5469
5470         [smooth] Allocate render pool for smooth rasterizer on the stack.
5471
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.
5475
5476         With this patch, rasterizing glyphs from different faces from
5477         different threads doesn't crash in the smooth rasterizer.
5478
5479         Bugs:
5480
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
5485
5486         * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer',
5487         `buffer_size', `band_size', and `worker' members.
5488
5489         (gray_raster_render): Create `buffer', `buffer_size', and
5490         `band_size' locally.
5491         (gray_raster_reset): Updated.
5492
5493 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5494
5495         [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver.
5496
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.
5502
5503         With this patch, loading glyphs from different faces from different
5504         threads doesn't crash in the bytecode loader code.
5505
5506         * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member.
5507         (TT_DriverRec): Remove `context' member.
5508
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.
5511
5512         (tt_driver_done): Don't remove `TT_ExecContext' object here but ...
5513         (tt_size_done_bytecode): ... here.
5514
5515         (tt_driver_init): Don't create `TT_ExecContext' object here but ...
5516         (tt_size_init_bytecode): ... here, only on demand.
5517
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.
5522
5523         * src/truetype/ttinterp.h: Updated.
5524
5525         * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated.
5526
5527 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5528
5529         [autofit] Allocate AF_Loader on the stack instead of AF_Module.
5530
5531         Stop sharing a global `AF_Loader'.  Allocate one on the stack during
5532         glyph load.
5533
5534         Right now this results in about 25% slowdown, to be fixed in a
5535         following commit.
5536
5537         With this patch loading glyphs from different faces from different
5538         threads doesn't immediately crash in the autohinting loader code.
5539
5540         Bugs:
5541
5542           https://bugzilla.redhat.com/show_bug.cgi?id=1164941
5543
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.
5550
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.
5555
5556         * src/autofit/afloader.h: Include `afmodule.h'.
5557         Update prototypes.
5558         Move typedef for `AF_Module' to...
5559
5560         * src/autofit/afmodule.h: ... this place.
5561         No longer include `afloader.h'.
5562
5563 2015-01-14  Behdad Esfahbod  <behdad@behdad.org>
5564
5565         * src/type42/t42objs.h (T42_DriverRec): Remove unused member.
5566
5567 2015-01-12  Werner Lemberg  <wl@gnu.org>
5568
5569         Fix Savannah bug #43976.
5570
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'.
5574
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.
5579
5580         * src/*/rules.mk (*_COMPILE): Fix order of include directories.
5581
5582 2015-01-11  Werner Lemberg  <wl@gnu.org>
5583
5584         [truetype] Prettifying.
5585
5586         * src/truetype/ttinterp.c (project, dualproj, fast_project,
5587         fast_dualproj): Rename to...
5588         (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this.
5589
5590 2015-01-11  Werner Lemberg  <wl@gnu.org>
5591
5592         * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify.
5593
5594         Based on a patch from Behdad.
5595
5596 2015-01-11  Werner Lemberg  <wl@gnu.org>
5597
5598         * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call.
5599
5600 2015-01-11  Werner Lemberg  <wl@gnu.org>
5601
5602         * src/truetype/ttinterp.c (Normalize): Remove unused argument.
5603
5604 2015-01-11  Werner Lemberg  <wl@gnu.org>
5605
5606         [truetype] More macro expansions.
5607
5608         * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by
5609         expansion.
5610
5611 2015-01-11  Werner Lemberg  <wl@gnu.org>
5612
5613         [truetype] More macro expansions.
5614
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.
5618
5619 2015-01-10  Werner Lemberg  <wl@gnu.org>
5620
5621         [truetype] More macro expansions.
5622
5623         Based on a patch from Behdad.
5624
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.
5632
5633 2015-01-10  Werner Lemberg  <wl@gnu.org>
5634
5635         [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH.
5636
5637         Behdad suggested this code simplification, and nobody objected...
5638
5639         * include/config/ftoption.h, devel/ftoption.h
5640         (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove.
5641
5642         * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]:
5643         Remove related code.
5644         (ARRAY_BOUND_ERROR): Use do-while loop.
5645
5646 2015-01-10  Werner Lemberg  <wl@gnu.org>
5647
5648         [truetype] More macro expansions.
5649
5650         * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_,
5651         EXEC_ARG): Remove by replacing with expansion.
5652
5653 2015-01-10  Werner Lemberg  <wl@gnu.org>
5654
5655         [truetype] More macro expansions.
5656
5657         Based on a patch from Behdad.
5658
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.
5666
5667         (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project,
5668         CUR_fast_dualproj): Replace with macros `project', `dualproj',
5669         `fast_project', `fast_dualproj'.
5670
5671 2015-01-10  Werner Lemberg  <wl@gnu.org>
5672
5673         [truetype] More macro expansions.
5674
5675         * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing
5676         with expansion.
5677
5678 2015-01-10  Werner Lemberg  <wl@gnu.org>
5679
5680         [truetype] Remove code for static TrueType interpreter.
5681
5682         This is a follow-up patch.
5683
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.
5687
5688 2015-01-10  Werner Lemberg  <wl@gnu.org>
5689
5690         * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion.
5691
5692         This starts a series of patches that simplifies the code of the
5693         bytecode interpreter.
5694
5695
5696 ----------------------------------------------------------------------------
5697
5698 Copyright (C) 2015-2023 by
5699 David Turner, Robert Wilhelm, and Werner Lemberg.
5700
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.
5706
5707
5708 Local Variables:
5709 version-control: never
5710 coding: utf-8
5711 End: