Imported Upstream version 2.13.2
[platform/upstream/freetype2.git] / docs / oldlogs / ChangeLog.27
1 2016-12-30  Werner Lemberg  <wl@gnu.org>
2
3         * Version 2.7.1 released.
4         =========================
5
6
7         Tag sources with `VER-2-7-1'.
8
9         * docs/VERSION.TXT: Add entry for version 2.7.1.
10
11         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
12         builds/windows/vc2005/index.html,
13         builds/windows/vc2008/freetype.vcproj,
14         builds/windows/vc2008/index.html,
15         builds/windows/vc2010/freetype.vcxproj,
16         builds/windows/vc2010/index.html,
17         builds/windows/visualc/freetype.dsp,
18         builds/windows/visualc/freetype.vcproj,
19         builds/windows/visualc/index.html,
20         builds/windows/visualce/freetype.dsp,
21         builds/windows/visualce/freetype.vcproj,
22         builds/windows/visualce/index.html,
23         builds/wince/vc2005-ce/freetype.vcproj,
24         builds/wince/vc2005-ce/index.html,
25         builds/wince/vc2008-ce/freetype.vcproj,
26         builds/wince/vc2008-ce/index.html: s/2.7/2.7.1/, s/27/271/.
27
28         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
29
30         * builds/unix/configure.raw (version_info): Set to 19:0:13.
31         * CMakeLists.txt (VERSION_PATCH): Set to 1.
32
33 2016-12-30  Werner Lemberg  <wl@gnu.org>
34
35         [ftfuzzer] Replace `rand' with an xorshift algorithm.
36
37         * src/tools/ftfuzzer/ftfuzzer.cc: Don't include `stdlib.h'.
38         (Random): Implement and use a 32bit `xorshift' algorithm.
39
40 2016-12-30  Werner Lemberg  <wl@gnu.org>
41
42         [ftfuzzer] Restrict number of tested bitmap strikes.
43
44         Malformed fonts often have large values for the number of bitmap
45         strikes, and FreeType doesn't check the validity of all bitmap
46         strikes in advance.
47
48         Reported as
49
50           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=353
51
52         * src/tools/ftfuzzer/ftfuzzer.cc: Include `stdlib.h' for `rand'.
53         (Random): Small class to provide n randomly selected numbers
54         (without repetition) out of the value set [1,N].
55         (LLVMFuzzerTestOneInput): Use it to test only up to 10 bitmap
56         strikes.
57
58 2016-12-29  Werner Lemberg  <wl@gnu.org>
59
60         [truetype] Variation font API stability issues.
61
62         Make some functions work before a call to `TT_Set_MM_Blend'.
63
64         * src/truetype/ttgxvar.c (tt_hadvance_adjust): Exit immediately if
65         we don't blend.
66         (TT_Get_MM_Blend, TT_Get_Var_Design): Return default values if we
67         don't blend.
68
69 2016-12-29  Werner Lemberg  <wl@gnu.org>
70
71         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis data.
72
73         Reported as
74
75           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=348
76
77 2016-12-29  Werner Lemberg  <wl@gnu.org>
78
79         [truetype] Tracing fixes.
80
81         * src/truetype/ttgxvar.c (tt_hadvance_adjust): Emit correct
82         information.
83         (TT_Set_Var_Design): Fix typo.
84         (TT_Get_Var_Design): Fix typos.
85
86 2016-12-29  Werner Lemberg  <wl@gnu.org>
87
88         */*: Use `0.5f' for tracing 16.16 numbers.
89
90 2016-12-29  Werner Lemberg  <wl@gnu.org>
91
92         [pcf] Protect against gzip bombs.
93
94         Fix suggested by Kostya; reported as
95
96           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=345
97
98         * src/pcf/pcfread.c (pcf_read_TOC): Limit number of TOC entries to
99         1024.
100
101 2016-12-28  Werner Lemberg  <wl@gnu.org>
102
103         [psnames] Only declare, not define, data in `pstables.h' (#49949).
104
105         Pdfium includes `pstables.h' a second time; moving the definition
106         from `pstables.h' to `psmodule.c' saves more than 60kByte data
107         segment space for this case.
108
109         * src/tools/glnames.py (StringTable::dump,
110         StringTable::dump_sublist, dump_encoding, dump_array): Emit
111         additional code to only define tables if `DEFINE_PS_TABLES' is set.
112
113         * src/psnames/pstables.h: Regenerated.
114         * src/psnames/psmodule.c (DEFINE_PS_TABLES): Define.
115
116 2016-12-28  Werner Lemberg  <wl@gnu.org>
117
118         [cff] Catch `blend' op in non-variant fonts.
119
120         Reported as
121
122           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=334
123
124         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>: Don't
125         allow `blend' op for non-variant fonts.
126
127 2016-12-28  Werner Lemberg  <wl@gnu.org>
128
129         [cff] Better check of number of blends.
130
131         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>,
132         src/cff/cffparse.c (cff_parse_blend): Compare number of blends with
133         stack size.
134
135 2016-12-27  Werner Lemberg  <wl@gnu.org>
136
137         Documentation updates.
138
139         * docs/CHANGES: Add missing information.
140
141         * docs/formats.txt: Rewritten and updated.
142
143 2016-12-27  Werner Lemberg  <wl@gnu.org>
144
145         [truetype, type1] Implement `FT_Get_Var_Design_Coordinates'.
146
147         * src/truetype/ttgxvar.c (TT_Get_Var_Design): Implement.
148         (TT_Set_Var_Design): Fix tracing.
149
150         * src/type1/t1load.c (T1_Get_Var_Design): Implement.
151
152 2016-12-24  Werner Lemberg  <wl@gnu.org>
153
154         * src/truetype/ttpload.c (tt_face_load_hdmx): Ignore `version'.
155
156         Problem reported by 張俊芝 <418092625@qq.com>.
157
158 2016-12-24  Werner Lemberg  <wl@gnu.org>
159
160         * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
161
162         Some fonts seem to have the `version' field in the wrong byte order.
163
164         Problem reported by 張俊芝 <418092625@qq.com>.
165
166 2016-12-24  Werner Lemberg  <wl@gnu.org>
167
168         * src/truetype/ttpload.c (tt_face_load_loca): Sanitize table length.
169
170         This trivial fix allows us to accept more fonts.
171
172         Problem reported by 張俊芝 <418092625@qq.com>.
173
174 2016-12-24  Werner Lemberg  <wl@gnu.org>
175
176         * src/sfnt/sfobjs.c (sfnt_init_face): Fix tracing.
177
178 2016-12-22  Werner Lemberg  <wl@gnu.org>
179
180         * CMakeLists.txt: Make it work with cmake 2.8.11.2 (#49909).
181
182 2016-12-22  Werner Lemberg  <wl@gnu.org>
183
184         Ensure used preprocessor symbols are defined (#49790).
185
186         * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
187         include/freetype/config/ftconfig.h: Check `__GNUC__', `__IBMC__',
188         and `__SUNPRO_C' correctly.
189
190 2016-12-22  Werner Lemberg  <wl@gnu.org>
191
192         * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Check `count'.
193
194         Reported as
195
196           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=308
197
198 2016-12-22  Werner Lemberg  <wl@gnu.org>
199
200         [cff] Protect against invalid `vsindex' and `blend' values.
201
202         Reported as
203
204           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=305
205
206         * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVSINDEX,
207         cf2_cmdBLEND>: Implement it.
208
209 2016-12-22  Werner Lemberg  <wl@gnu.org>
210
211         [ftfuzzer] Always use Adobe CFF engine.
212
213         * src/tools/ftfuzzer/ftfuzzer.cc (FT_Global::FT_Global): Implement
214         it.
215
216 2016-12-21  Werner Lemberg  <wl@gnu.org>
217
218         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
219
220         I should really stop coding late in the evening...
221
222         Thanks again to Ben for checking.
223
224 2016-12-21  Werner Lemberg  <wl@gnu.org>
225
226         [autofit] Support variation fonts.
227
228         (This ChangeLog entry was added later on.)
229
230         * src/autofit/afglobal.c (af_face_globals_free): Remove useless
231         code.
232
233         * src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
234         * FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
235         FT_Set_Var_Blend_Coordinates): Finalize
236         auto-hinter data to enforce recomputation.  Note that this is a
237         brute-force method which should be improved.
238
239 2016-12-21  Werner Lemberg  <wl@gnu.org>
240
241         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
242
243         Don't apply deltas twice for non-phantom points.
244
245         Spotted by Ben Wagner.
246
247 2016-12-21  Werner Lemberg  <wl@gnu.org>
248
249         [cff, truetype] Another try for #49829.
250
251         * src/cff/cffdrivr.c: Don't include
252         `FT_SERVICE_METRICS_VARIATIONS_H'.
253         (cff_get_advances): Use `ttface->variation_support'.
254
255         * src/truetype/ttdriver.c (tt_get_advances): Use
256         `ttface->variation_support'.
257
258         * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
259         load_truetype_glyph): Use `ttface->variation_support'.
260
261 2016-12-21  Werner Lemberg  <wl@gnu.org>
262
263         [truetype, sfnt] Introduce font variation flags to `TT_Face'.
264
265         * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
266         New macros describing available functionality of various OpenType
267         tables related to font variation.
268         (TT_Face): New fields `variation_support' and `mvar_support',
269         replacing and extending `use_fvar'.
270
271         * src/sfnt/sfobjs.c (sfnt_init_face, sfnt_load_face): Use
272         `variation_support'.
273
274         * src/truetype/ttgxvar.c (ft_var_load_hvar): Set `variation_support'
275         field.
276         (TT_Vary_Apply_Glyph_Deltas): Updated.
277
278 2016-12-21  Werner Lemberg  <wl@gnu.org>
279
280         [base] Improve sanity check for Mac resources (#49888).
281
282         * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Abort if `rlen' is not
283         positive.
284
285 2016-12-20  Werner Lemberg  <wl@gnu.org>
286
287         [base] More sanity checks for Mac resources.
288
289         We use
290
291           https://github.com/kreativekorp/ksfl/wiki/Macintosh-Resource-File-Format
292
293         and
294
295           https://developer.apple.com/legacy/library/documentation/mac/pdf/MoreMacintoshToolbox.pdf#page=151
296
297         as references.
298
299         * include/freetype/internal/ftrfork.h (FT_RFork_Ref): Use FT_Short
300         for `res_id'.
301
302         * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Extract map length
303         and use it to improve sanity checks.
304         Follow the specification more closely;in particular, all data types
305         are signed, not unsigned.
306         (FT_Raccess_Get_DataOffsets): Follow the specification more closely;
307         in particular, all data types are signed, not unsigned.
308         Add some sanity checks.
309
310 2016-12-20  Werner Lemberg  <wl@gnu.org>
311
312         [truetype] Improve logic for getting fast advance widths.
313
314         * src/cff/cffdrivr.c (cff_get_advances), src/truetype/ttdriver.c
315         (tt_get_advances): Use `is_default_instance' for test; this gets
316         recomputed after changing blend coordinates.
317
318 2016-12-20  Ben Wagner  <bungeman@google.com>
319             Werner Lemberg  <wl@gnu.org>
320
321         [truetype] Fix linear metrics of GX variation fonts (#49829).
322
323         When asking for an unhinted non-default variations,
324         `linearVertAdvance' is currently the value from the `hmtx' table
325         instead of the actual value after applying the variation.  `HVAR'
326         support fixes this, but fonts will exist without that table and will
327         need sane fallback.
328
329         Problem also reported as
330
331           https://bugs.chromium.org/p/skia/issues/detail?id=5917
332
333         * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
334         load_truetype_glyph): Implement linear advance adjustments if `HVAR'
335         or `VVAR' tables are missing.
336
337 2016-12-20  Werner Lemberg  <wl@gnu.org>
338
339         [cff, truetype] Fast advance width retrieval for fonts with HVAR.
340
341         Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
342
343         * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Don't handle MM.
344
345         * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
346         (cff_get_advances): Test for HVAR and VVAR.
347
348         * src/truetype/ttdriver.c (tt_get_advances): Test for HVAR and VVAR.
349
350 2016-12-18  Werner Lemberg  <wl@gnu.org>
351
352         [base] Fix invalid mac font recursion.
353
354         Reported as
355
356           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=304
357
358         * src/base/ftobjs.c (FT_Open_Face): Code moved to...
359         (ft_open_face_internal): ... this function.
360         Add a parameter to control whether we try special Mac font handling
361         in case of failure.
362         (FT_Open_Face, FT_New_Face, FT_New_Memory_Face,
363         open_face_from_buffer): Use `ft_open_face_internal'.
364
365 2016-12-18  Werner Lemberg  <wl@gnu.org>
366
367         * src/cff/cffobjs.c (cff_face_init): Make named instances work.
368
369 2016-12-18  Werner Lemberg  <wl@gnu.org>
370
371         [truetype, cff] Extend `get_var_blend' function of MM service.
372
373         In particular, we need access to named instance data.
374
375         * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
376         Add argument for `FT_MM_Var'.
377
378         * src/cff/cffload.c (cff_get_var_blend): Updated.
379         * src/cff/cffload.h: Updated.
380
381         * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
382
383         * src/truetype/ttgxvar.c (tt_get_var_blend): Updated.
384         Accept value `NULL' for arguments.
385         * src/truetype/ttgxvar.h: Updated.
386
387 2016-12-18  Werner Lemberg  <wl@gnu.org>
388
389         [sfnt] Handle `fvar' with zero axes as a non-MM font.
390
391         This is better behaviour than exiting with an error.
392
393         * include/freetype/internal/tttypes.h (TT_Face): Add `use_fvar'
394         field.
395
396         * src/sfnt/sfobjs.c (sfnt_init_face): Compute `use_fvar', also
397         updating the validation code.
398         Use `use_fvar' to compute FT_FACE_FLAG_MULTIPLE_MASTERS.
399
400         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Remove `fvar' validation
401         code.
402
403 2016-12-18  Werner Lemberg  <wl@gnu.org>
404
405         Minor GX code shuffling.
406
407         * include/freetype/internal/tttypes.h (TT_Face): Move
408         `is_default_instance' into TT_CONFIG_OPTION_GX_VAR_SUPPORT
409         block.
410
411         * src/sfnt/sfobjs.c (sfnt_init_face): Updated.
412         * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): New macro.
413         (TT_Load_Glyph): Use it.
414
415 2016-12-18  Werner Lemberg  <wl@gnu.org>
416
417         [cff] Better handling of non-CFF font formats.
418
419         * src/cff/cffload.c (cff_font_load): Pure CFFs don't have a
420         signature, so return `FT_Err_Unknown_File_Format' more often.
421
422 2016-12-17  Werner Lemberg  <wl@gnu.org>
423
424         * src/cff/cffload.c (cff_build_blend_vector): Remove redundant code.
425
426 2016-12-17  Werner Lemberg  <wl@gnu.org>
427
428         * src/truetype/ttobjs.c (tt_face_init): Simplify conditional code.
429
430 2016-12-17  Werner Lemberg  <wl@gnu.org>
431
432         [sfnt, truetype] Various sanitizing fixes.
433
434         * src/sfnt/sfobjs.c (sfnt_init_face): If the axis count in `fvar' is
435         zero, set `num_instances' to zero.
436
437         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Handle `fvar' table with
438         zero axes as invalid.
439
440         * src/truetype/ttobjs.c (tt_face_init): Improve logic of loading
441         `loca', `cvt', `fpgm', and `prep' table.
442
443 2016-12-17  Werner Lemberg  <wl@gnu.org>
444
445         Improve tracing of `FT_Open_Face'.
446
447         * src/base/ftobjs.c (FT_Open_Face): Return info on number of
448         available faces and numbered instances, or the indices of the
449         requested face and numbered instance.
450
451         * src/sfnt/sfobjs. (sfnt_open_font): Trace number of subfonts.
452
453 2016-12-17  Werner Lemberg  <wl@gnu.org>
454
455         * src/cff/cffload.c (cff_load_private_dict): Always init `blend'.
456
457         Reported as
458
459           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=295
460
461 2016-12-16  Werner Lemberg  <wl@gnu.org>
462
463         [truetype] Fix `cvar' sanity test.
464
465         Reported by Dave Arnold.
466
467         * src/truetype/ttgxvar.c (tt_face_vary_cvt): Use tuple count mask.
468
469 2016-12-16  Werner Lemberg  <wl@gnu.org>
470
471         [cff, truetype] Remove compiler warnings; fix `make multi'.
472
473         * src/cff/cf2font.h: Include `cffload.h'.
474
475         * src/cff/cffload.c: Include FT_MULTIPLE_MASTERS_H and
476         FT_SERVICE_MULTIPLE_MASTERS_H.
477         (cff_vstore_load): Eliminate `vsSize'.
478         (cff_load_private_dict): Tag as `FT_LOCAL_DEF'.
479
480         * src/cff/cffload.h: Include `cffobjs.h'.
481         Provide declaration for `cff_load_private_dict'.
482
483         * src/truetype/ttgxvar.c (ft_var_load_hvar): Eliminate
484         `minorVersion' and `map_offset'.
485
486 2016-12-16  Werner Lemberg  <wl@gnu.org>
487
488         [cff] Fix heap buffer overflow (#49858).
489
490         * src/cff/cffparse.c (cff_parser_run): Add one more stack size
491         check.
492
493 2016-12-15  Werner Lemberg  <wl@gnu.org>
494
495         Fix clang warnings.
496
497         * src/cff/cffload.c (cff_blend_doBlend): Add cast.
498         (cff_subfont_load): Set `error' correctly.
499
500         * src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.
501
502 2016-12-15  Dave Arnold  <darnold@adobe.com>
503             Werner Lemberg  <wl@gnu.org>
504
505         [cff] Implement CFF2 support (2/2).
506
507         The font variation code.  All parts dependent on the GX code in the
508         `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
509         In other words, you can still compile the `cff' module without
510         defining TT_CONFIG_OPTION_GX_VAR_SUPPORT (which brings you CFF2
511         support without font variation).
512
513         * src/cff/cf2font.c (cf2_font_setup): Add support for font
514         variation.
515         * src/cff/cf2font.h (CF2_Font): Add fields for variation data.
516
517         * src/cff/cf2ft.c (cf2_free_instance): Free blend data.
518         (cf2_getVStore, cf2_getNormalizedVector): New functions.
519         * src/cff/cf2ft.h: Updated.
520
521         * src/cff/cf2intrp.c: Include `cffload.h'.
522         (cf2_cmdRESERVED_15, cf2_cmdRESERVED_16): Replace with...
523         (cf2_cmdVSINDEX, cf2_cmdBLEND): ... this new enum values.
524         (cf2_doBlend): New function.
525         (cf2_interpT2CharString): Handle `vsindex' and `blend' opcodes.
526
527         * src/cff/cffload.c (FT_fdot14ToFixed): New macro.
528         (cff_vstore_done, cff_vstore_load): New functions.
529         (cff_blend_clear, cff_blend_doBlend, cff_blend_build_vector,
530         cff_blend_check_vector): New functions.
531         (cff_load_private_dict): Add arguments for blend vector.
532         Handle blend data.
533         (cff_subfont_load, cff_subfont_done): Updated.
534         (cff_font_load): Handle CFF2 variation store data.
535         (cff_font_done): Updated.
536         * src/cff/cffload.h: Include `cffparse.h'.
537         Updated.
538
539         * src/cff/cffobjs.c (cff_face_done): Updated.
540
541         * src/cff/cffparse.c: Include `cffload.h'.
542         (cff_parse_num): Handle internal value 255.
543         (cff_parse_vsindex, cff_parse_blend): New functions.
544         (CFF_FIELD_BLEND): New macro.
545         (cff_parser_run): Updated.
546         * src/cff/cffparse.h (cff_kind_blend): New enum value.
547
548         * src/cff/cfftoken.h: Handle `vstore', `vsindex', and `blend'
549         dictionary values.
550
551         * src/cff/cfftypes.h (CFF_VarData, CFF_AxisCoords, CFF_VarRegion,
552         CFF_VStore, CFF_Blend): New structures.
553         (CFF_FontRecDict): Add `vstore_offset' field.
554         (CFF_Private): Add `vsindex' field.
555         (CFF_SubFont): Add fields for blend data.
556         (CFF_Font): Add `vstore' field.
557
558         * src/truetype/ttgxvar.c (TT_Get_MM_Var): `CFF2' is equal to `gvar',
559         since glyph variation data is directly embedded.
560         (TT_Set_MM_Blend): Don't load `gvar' table for CFF2 fonts.
561
562 2016-12-15  Dave Arnold  <darnold@adobe.com>
563             Werner Lemberg  <wl@gnu.org>
564
565         [cff] Implement CFF2 support (1/2).
566
567         This commit does not contain the blend code for font variation
568         support, which follows in another commit.
569
570         You should ignore whitespace while inspecting this commit.
571
572         * include/freetype/internal/tttypes.h (TT_Face): Add `isCFF2'
573         member.
574
575         * src/cff/cf2font.h (CF2_Font): Add `isCFF2' member.
576
577         * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Handle `isCFF2'
578         flag.
579         (cf2_getMaxstack): New function.
580         * src/cff/cf2ft.h: Updated.
581
582         * src/cff/cf2intrp.c (cf2_escRESERVED_38): New enum.
583         (cf2_interpT2CharString): Handle CFF2 differences.
584         Add tracing message for errors.
585
586         * src/cff/cffdrivr.c (cff_get_glyph_name, cff_get_name_index):
587         Update for CFF2.
588
589         * src/cff/cffload.c (FT_FIXED_ONE): New macro.
590         (cff_index_init, cff_index_load_offsets, cff_index_access_element,
591         cff_index_get_name, cff_ft_select_get, cff_load_private_dict,
592         cff_subfont_load, cff_font_load): Handle CFF2.
593         * src/cff/cffload.h: Updated.
594
595         * src/cff/cffobjs.c (cff_face_init): Handle CFF2.
596
597         * src/cff/cffparse.c (cff_parse_maxstack): New function.
598         (CFFCODE_TOPDICT, CFFCODE_PRIVATE): Removed
599         * src/cff/cffparse.h (CFF2_MAX_STACK, CFF2_DEFAULT_STACK): New
600         macros.
601         (CFF2_CODE_TOPDICT, CFF2_CODE_FONTDICT, CFF2_CODE_PRIVATE): New
602         macros.
603
604         * src/cff/cfftoken.h: Add fields for CFF2 dictionaries (but no blend
605         stuff).
606
607         * src/cff/cfftypes.h (CFF_Index): Add `hdr_size' field.
608         (CFF_FontRecDict): Add `maxstack' field.
609         (CFF_Private): Add `subfont' field.
610         (CFF_Font): Add `top_dict_length' and `cff2' fields.
611
612         * src/sfnt/sfobjs.c (sfnt_load_face): Handle `CFF2' table.
613
614 2016-12-15  Werner Lemberg  <wl@gnu.org>
615             Dave Arnold  <darnold@adobe.com>
616
617         [truetype] Provide HVAR advance width variation as a service.
618
619         Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
620
621         * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
622
623         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Prevent
624         double adjustment of advance width.
625
626         * src/sfnt/ttmtx.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
627         (tt_face_get_metrics): Apply metrics variations.
628
629 2016-12-15  Dave Arnold  <darnold@adobe.com>
630             Werner Lemberg  <wl@gnu.org>
631
632         [truetype] Provide function to apply `HVAR' advance width variation.
633
634         Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
635
636         * src/truetype/ttgxvar.c (tt_hadvance_adjust): New function.
637         * src/truetype/ttgxvar.h: Updated.
638
639 2016-12-15  Dave Arnold  <darnold@adobe.com>
640             Werner Lemberg  <wl@gnu.org>
641
642         [truetype] Add `HVAR' table parsing.
643
644         Note that this is not complete yet; it only handles advance width
645         variation.
646
647         Activation of the code follows in another commit.
648
649         Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
650
651         * include/freetype/ftmm.h (FT_Var_Named_Style): Add `psid' member.
652
653         * src/truetype/ttgxvar.h (GX_HVarData, GX_AxisCoords, GX_HVarRegion,
654         GX_HVStore, GX_WidthMap): New auxiliary structures for...
655         (GX_HVarTable): ... HVAR main structure.
656         (GX_BlendRec): Add data for HVAR loading.
657
658         * src/truetype/ttgxvar.c (FT_FIXED_ONE, FT_fdot14ToFixed,
659         FT_intToFixed, FT_fixedToInt): New macros.
660         (ft_var_load_hvar): New function.
661         (TT_Get_MM_Var): Updated.
662         (tt_done_blend): Deallocate HVAR data.
663
664 2016-12-15  Dave Arnold  <darnold@adobe.com>
665
666         [cff] Extend number parsing.
667
668         The forthcoming CFF2 support needs a dynamic parsing limit.
669
670         * src/cff/cffparse.c (cff_parse_num, do_fixed, cff_parse_fixed,
671         cff_parse_fixed_scaled, cff_parse_fixed_dynamic): Add argument for
672         parser.
673         (cff_parse_font_matrix, cff_parse_font_bbox, cff_parse_private_dict,
674         cff_parse_multiple_master, cff_parse_cid_ros, cff_parser_run): Updated.
675
676         * src/cff/cffparse.h (cff_parse_num): Export locally.
677
678 2016-12-15  Dave Arnold  <darnold@adobe.com>
679
680         [cff] Implement dynamic stack size for Adobe engine.
681
682         This also adds `cf2_stack_setReal' and `cf2_stack_pop', needed for
683         the forthcoming CFF2 support.
684
685         * src/cff/cf2stack.c (cf2_stack_init): Add argument for stack size.
686         (cf2_stack_free): Deallocate stack.
687         (cf2_stack_count, cf2_stack_pushInt, cf2_stack_pushFixed,
688         cf2_stack_popInt, cf2_stack_popFixed, cf2_stack_getReal,
689         cf2_stack_clear): Updated.
690         (cf2_stack_setReal, cf2_stack_pop): New functions.
691
692         * src/cff/cf2stack.h (CF2_Stack): Add `stackSize' member.
693         Update function declarations.
694
695         * src/cff/cf2intrp.c (cf2_interpT2CharString): Updated.
696
697         * src/cff/cffparse.c (cff_parser_init): Add parameter for stack
698         size; return error code.
699         (cff_parser_done): New function.
700         (cff_parser_run): Updated.
701
702         * src/cff/cffparse.h (CFF_Parser): Add `stackSize' member and make
703         `stack' a pointer.
704         Update function declarations.
705
706         * src/cff/cffload.c (cff_load_private_dict, cff_subfont_load):
707         Updated.
708
709 2016-12-15  Dave Arnold  <darnold@adobe.com>
710             Werner Lemberg  <wl@gnu.org>
711
712         [cff] Code shuffling.
713
714         * src/cff/cfftypes.h (CFF_Font): Add `library' and `base_offset'
715         fields.
716
717         * src/cff/cffload.c (cff_subfont_load): Change last argument to
718         `CFF_Font'
719         Split off parsing of private dictionary into...
720         (cff_load_private_dict): ...this new function.
721         (cff_font_load): Updated.
722
723 2016-12-14  Werner Lemberg  <wl@gnu.org>
724
725         [sfnt, truetype] Add framework for Metrics Variations service.
726
727         No effect yet; service functions will be implemented later on.
728
729         Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
730
731         * include/freetype/internal/services/svmetric.h: New file.
732
733         * include/freetype/internal/ftserv.h
734         (FT_SERVICE_METRICS_VARIATIONS_H): New macro.
735
736         * include/freetype/internal/tttypes.h (TT_Face): New field `var'.
737
738         * src/sfnt/sfobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
739         (sfnt_init_face): Initialize `face->var'.
740
741         * src/truetype/ttdriver.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
742         (tt_service_metrics_variations): New service.
743         (tt_services): Updated.
744
745         * src/truetype/ttpic.h: Updated.
746
747 2016-12-14  Werner Lemberg  <wl@gnu.org>
748
749         [cff] Add Multiple Masters service.
750
751         The code simply uses the MM functions from the `truetype' module.
752
753         Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
754
755         * include/freetype/internal/tttypes.h (TT_Face): New field `mm'.
756
757         * src/cff/cffdrivr.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
758         (cff_set_mm_blend, cff_get_mm_blend, cff_get_mm_var,
759         cff_set_var_design, cff_get_var_design): New functions.
760         (cff_service_multi_masters): New service.
761         (cff_services): Updated.
762
763         * src/cff/cffload.c (cff_get_var_blend, cff_done_blend): New
764         functions.
765         * src/cff/cffload.h: Updated.
766
767         * src/cff/cffpic.h (CFF_SERVICE_MULTI_MASTERS_GET): New macro.
768
769         * src/sfnt/sfobjs.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
770         (sfnt_init_face): Initialize `face->mm'.
771
772 2016-12-14  Werner Lemberg  <wl@gnu.org>
773
774         Extend functionality of `ft_module_get_service'.
775
776         It can now differentiate between local and global searches.
777
778         * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
779         (FT_Get_TrueType_Engine_Type): Updated.
780
781         * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
782
783         * include/freetype/internal/ftobjs.h: Updated.
784         * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
785         Updated.
786
787 2016-12-14  Werner Lemberg  <wl@gnu.org>
788
789         * src/truetype/ttgxvar.c (tt_get_var_blend): Fix compiler warning.
790
791 2016-12-14  Dave Arnold  <darnold@adobe.com>
792             Werner Lemberg  <wl@gnu.org>
793
794         [sfnt, cff] Minor preparations.
795
796         * include/freetype/tttags.h (TTAG_CFF2, TTAG_HVAR, TTAG_MVAR,
797         TTAG_VVAR): New SFNT table tags.
798
799         * src/cff/cf2fixed.h (CF2_FIXED_ONE, CF2_FIXED_EPSILON): Add cast.
800
801 2016-12-10  Werner Lemberg  <wl@gnu.org>
802
803         [truetype, type1] Add `get_var_blend' to MM service.
804
805         For internal use; we want to share code between the forthcoming CFF2
806         support and TrueType.
807
808         * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
809         New typedef.
810         (MultiMasters): Add `get_var_blend'.
811         (FT_Service_MultiMasters): Updated.
812
813         * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
814         * src/truetype/ttgxvar.h: Updated.
815
816         * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
817         * src/type1/t1driver.c (t1_service_multi_masters): Updated.
818
819 2016-12-10  Werner Lemberg  <wl@gnu.org>
820
821         [truetype, type1] Add `done_blend' to MM service.
822
823         For internal use; we want to share code between the forthcoming CFF2
824         support and TrueType.
825
826         * include/freetype/internal/services/svmm.h (FT_Done_Blend_Func):
827         New typedef.
828         (MultiMasters): Add `done_blend'.
829         (FT_Service_MultiMasters): Updated.
830
831         * src/truetype/ttgxvar.c (tt_done_blend): Use `TT_Face' as argument.
832         * src/truetype/ttgxvar.h: Updated.
833
834         * src/truetype/ttobjs.c (TT_Face_Done): Updated.
835
836         * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
837         * src/type1/t1driver.c (t1_service_multi_masters): Updated.
838
839 2016-12-09  Werner Lemberg  <wl@gnu.org>
840
841         [sfnt] Revert change from 2016-12-08.
842
843         I missed the functionality of `ft_module_get_service', which makes
844         the change unnecessary.
845
846 2016-12-08  Werner Lemberg  <wl@gnu.org>
847
848         Add framework to support services with 8 functions.
849
850         We will need this for CFF variation font support.
851
852         * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC8):
853         New macro.
854
855 2016-12-08  Werner Lemberg  <wl@gnu.org>
856
857         [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
858
859         CFF2 fonts will need access to those two functions.
860
861         * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
862         (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
863         (FT_DEFINE_SFNT_INTERFACE): Updated.
864
865         * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
866         Fix signatures to exactly correspond to the glyph dict service
867         function typedefs.
868         (sfnt_interface): Updated.
869
870 2016-12-06  Dave Arnold  <darnold@adobe.com>
871
872         Add `FT_Get_Var_Design_Coordinates' function.
873
874         Note that the low-level functions aren't implemented yet.
875
876         * include/freetype/ftmm.h: Declare.
877
878         * include/freetype/internal/services/svmm.h
879         (FT_Get_Var_Design_Func): New typedef.
880         (MultiMasters): New MM service function `get_var_design'.
881         (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
882         Update all callers.
883
884         * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
885
886         * src/truetype/ttdriver.c: Updated.
887
888         * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
889         handle `get_var_design' service.
890         * src/truetype/ttgxvar.h: Updated.
891
892         * src/type1/t1driver.c: Updated.
893
894         * src/type1/t1load.c (T1_Get_Var_Design): New dump function to
895         handle `get_var_design' service.
896         * src/type1/t1load.h: Updated.
897
898 2016-12-06  Werner Lemberg  <wl@gnu.org>
899
900         * src/type1/t1load.c (parse_subrs): Fix memory leak.
901
902         The `subrs' keyword might erroneously occur multiple times.
903
904         Reported as
905
906           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
907
908 2016-12-01  Werner Lemberg  <wl@gnu.org>
909
910         [gzip] Improve building with external zlib (#49673).
911
912         Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
913         the following error.
914
915           ftgzip.c
916           zlib-1.2.8\zlib.h(86): error C2061:
917                                  syntax error: identifier 'z_const'
918           zlib-1.2.8\zlib.h(94): error C2054:
919                                  expected '(' to follow 'z_const'
920           zlib-1.2.8\zlib.h(94): error C2085:
921                                  'msg': not in formal parameter list
922           ...
923           zlib-1.2.8\zlib.h(877): fatal error C1003:
924                                   error count exceeds 100; stopping compilation
925
926         The error happens because FreeType keeps an own copy of zlib-1.1.4
927         under `src/gzip'.  When building `src/gzip/ftgzip.c' with
928         FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
929
930           #include <zlib.h>
931
932         which correctly finds an external `zlib.h', but `zlib.h' itself has
933         a line
934
935           #include "zconf.h"
936
937         which makes Visual Studio 2015 find `src/gzip/zconf.h' while
938         compiling the files in `src/gzip'.
939
940         * src/gzip/zconf.h: Rename to...
941         * src/gzip/ftzconf.h: ... this.
942         * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
943
944 2016-12-01  Oleksandr Chekhovskyi  <oleksandr.chekhovskyi@gmail.com>
945
946         [autofit] Fix Emscripten crash (patch #9180).
947
948         Function calls through pointers must use a matching signature to
949         work on Emscripten, since such calls are dispatched through lookup
950         tables grouped by signature.
951
952         * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
953         typedef.
954
955 2016-11-29  Werner Lemberg  <wl@gnu.org>
956
957         [smooth] Revert previous commit.  Already fixed with 6ca54c64.
958
959 2016-11-29  Werner Lemberg  <wl@gnu.org>
960
961         [smooth] Avoid conditional jump on uninitialized value (#49711).
962
963         * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
964
965 2016-11-27  Nikolaus Waxweiler  <madigens@gmail.com>
966
967         [autofit] Code shuffling.
968
969         Also improve some comments and remove unused code.
970
971         No functional change.
972
973         * src/autofit/afloader.c (af_loader_load_g): Merged with...
974         (af_loader_load_glyph): ...this function.
975         Split off emboldening code into...
976         (af_loader_embolden_glyph_in_slot): ... this function.
977
978 2016-11-17  Werner Lemberg  <wl@gnu.org>
979
980         Better support of LLP64 systems with gcc (and clang).
981
982         * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
983
984         * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
985         suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
986
987 2016-11-10  Werner Lemberg  <wl@gnu.org>
988
989         Fix `lcd_weights' array size.
990
991         * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
992
993         Reported by Nikolaus.
994
995 2016-11-06  Werner Lemberg  <wl@gnu.org>
996
997         * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
998
999 2016-11-06  Werner Lemberg  <wl@gnu.org>
1000
1001         [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
1002
1003         It's unavoidable to call the PNG engine, but to get the metrics it
1004         is sufficient to read the PNG image's header only.
1005
1006         * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
1007         allocation of the glyph slot.
1008         * src/sfnt/pngshim.h: Updated.
1009         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
1010         tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
1011
1012 2016-11-06  Werner Lemberg  <wl@gnu.org>
1013
1014         [sfnt] Speed up `sbix' lookup.
1015
1016         This also fixes a bug introduced in 2016-10-01 which prevents
1017         display of embedded bitmap fonts that use the `sbix' format.
1018
1019         * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
1020         offset also in `ebdt_size' and `ebdt_start', respectively.  This
1021         makes the test for an embedded bitmap data table succeed for this
1022         format.
1023
1024         (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
1025         `ebdt_size' and `ebdt_start'
1026         (tt_face_load_sbix_image): Ditto.
1027
1028 2016-11-06  Seigo Nonaka  <nona@google.com>
1029             Werner Lemberg  <wl@gnu.org>
1030
1031         Introduce a way of quickly retrieving (embedded) bitmap metrics.
1032
1033         `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
1034         until the user calls `FT_Render_Glyph'.  However, it always
1035         allocates memory for bitmaps and copies or decodes the contents of a
1036         bitmap glyph, which can be quite slow for PNG data.
1037
1038         * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
1039         macro.
1040
1041         * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
1042         FT_LOAD_BITMAP_METRICS_ONLY is used.
1043
1044         * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
1045         tt_sbit_decoder_load_bitmap): Add argument to control allocation of
1046         the glyph slot.
1047         (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
1048         tt_face_load_sbit_image): Updated.
1049
1050         * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
1051         `FT_LOAD_BITMAP_METRICS_ONLY' is set.
1052
1053         * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
1054         argument to control allocation of the glyph slot.
1055         * src/pfr/pfrobjs (pfr_slot_load): Updated.
1056
1057         * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
1058
1059         * docs/CHANGES: Updated.
1060
1061 2016-11-06  Werner Lemberg  <wl@gnu.org>
1062
1063         Synchronize with gnulib (#49448).
1064
1065         * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
1066         builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
1067         current version of `intprops.h'.
1068         Other minor synchronization to reduce code differences between the
1069         three files.
1070
1071 2016-11-03  Behdad Esfahbod  <behdad@behdad.org>
1072
1073         [truetype] Clamp variation requests to valid range.
1074
1075         This is required by OpenType 1.8; it also avoids rounding surprises.
1076
1077         * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
1078         outside of the allowed range to always stay within the range instead
1079         of producing an error.
1080
1081 2016-10-29  Werner Lemberg  <wl@gnu.org>
1082
1083         [truetype] Remove clang warnings.
1084
1085         * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
1086         loop counter handling.
1087
1088         * src/truetype/ttinterp.c: Updated.
1089         (Ins_SCANTYPE): Use signed constant.
1090         (TT_RunIns): Ensure `num_twilight_points' is 16bit.
1091
1092 2016-10-27  Werner Lemberg  <wl@gnu.org>
1093
1094         [truetype] Fix commit from 2014-11-24.
1095
1096         Problem reported by Hin-Tak Leung  <htl10@users.sourceforge.net>.
1097
1098         * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
1099         logic.
1100
1101 2016-10-26  Werner Lemberg  <wl@gnu.org>
1102
1103         Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
1104
1105         * include/freetype/ftmm.h: Declare.
1106
1107         * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
1108         New typedef.
1109         (MultiMasters): New MM service function `get_mm_blend'.
1110         (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
1111         Update all callers.
1112
1113         * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
1114         FT_Get_Var_Blend_Coordinates): Implement.
1115
1116         * src/truetype/ttdriver.c: Updated.
1117
1118         * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
1119         `get_mm_blend' service.
1120         * src/truetype/ttgxvar.h: Updated.
1121
1122         * src/type1/t1driver.c: Updated.
1123
1124         * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
1125         `get_mm_blend' service.
1126         * src/type1/t1load.h: Updated.
1127
1128         * docs/CHANGES: Document.
1129
1130 2016-10-26  Werner Lemberg  <wl@gnu.org>
1131
1132         * src/type1/t1load.c (parse_subrs): Fix limit check.
1133
1134         Reported as
1135
1136           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
1137
1138 2016-10-25  Alexei Podtelezhnikov  <apodtele@gmail.com>
1139
1140         [cff] Correct cmap format reporting (#24819).
1141
1142         * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
1143         charmap instead of guessing its format and language.
1144
1145 2016-10-22  Werner Lemberg  <wl@gnu.org>
1146
1147         [truetype] Fix SCANTYPE instruction (#49394).
1148
1149         * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
1150
1151 2016-10-22  Werner Lemberg  <wl@gnu.org>
1152
1153         [sfnt] Improve handling of invalid post 2.5 tables [#49393].
1154
1155         * src/sfnt/ttpost.c (load_format_25): We need at least a single
1156         table entry.
1157
1158 2016-10-14  Werner Lemberg  <wl@gnu.org>
1159
1160         [truetype] Fix handling of `cvar' table data.
1161
1162         Reported as
1163
1164           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
1165
1166         * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
1167         indices.
1168
1169 2016-10-11  Werner Lemberg  <wl@gnu.org>
1170
1171         [psaux] Fix handling of invalid flex subrs.
1172
1173         Problem reported as
1174
1175           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
1176
1177         * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
1178         <op_callothersubr>: Set `flex_state' after error checking.
1179
1180 2016-10-11  Werner Lemberg  <wl@gnu.org>
1181
1182         * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
1183
1184 2016-10-08  Werner Lemberg  <wl@gnu.org>
1185
1186         * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
1187
1188 2016-10-08  Werner Lemberg  <wl@gnu.org>
1189
1190         [cid] Fix parsing of subr offsets.
1191
1192         Bug introduced 2016-05-16.
1193
1194         * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
1195
1196 2016-10-01  Werner Lemberg  <wl@gnu.org>
1197
1198         [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
1199
1200         * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
1201         a bitmap data table.
1202
1203 2016-10-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
1204
1205         [smooth] Remove impossibility.
1206
1207         * src/smooth/ftgrays.c (TWorker): Rearrange fields.
1208         (gray_convert_glyph): Remove impossible condition and clean up.
1209
1210 2016-09-29  Werner Lemberg  <wl@gnu.org>
1211
1212         [pcf] Enrich family name with foundry name and glyph width info.
1213
1214         This is a very old patch from openSuSE (from 2006, submitted to
1215         FreeType in 2011) that I forgot to apply.
1216
1217           https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
1218
1219         Prepend the foundry name plus a space to the family name.  There are
1220         many fonts just called `Fixed' which look completely different, and
1221         which have nothing to do with each other.  When selecting `Fixed' in
1222         KDE or Gnome one gets results that appear rather random, the style
1223         changes often if one changes the size and one cannot select some
1224         fonts at all.
1225
1226         We also check whether we have `wide' characters; all put together,
1227         we get family names like `Sony Fixed' or `Misc Fixed Wide'.
1228
1229         * src/pcf/pcfread.c (pcf_load_font): Implement it.
1230
1231         * docs/CHANGES: Document it.
1232
1233 2016-09-29  Werner Lemberg  <wl@gnu.org>
1234
1235         [ftfuzzer] Speed up.
1236
1237         * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
1238         check for embedded bitmaps if we have a non-default instance.
1239
1240 2016-09-29  Werner Lemberg  <wl@gnu.org>
1241
1242         [truetype] Disallow bitmap strikes for non-default instances.
1243
1244         Also speed up access of default instances if GX variations are
1245         active.
1246
1247         * include/freetype/internal/tttypes.h (TT_FaceRec): Add
1248         `is_default_instance' member.
1249
1250         * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
1251         `is_default_instance'.
1252
1253         * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
1254         load_truetype_glyph): Add test for default instance.
1255         (TT_Load_Glyph): Load embedded bitmaps for default instance only.
1256
1257         * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
1258         `is_default_instance'.
1259
1260 2016-09-29  Werner Lemberg  <wl@gnu.org>
1261
1262         [truetype] Clean up `TT_Face' structure.
1263
1264         * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
1265         fields `horz_metrics' and `vert_metrics'.
1266         Update documentation.
1267
1268         * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
1269
1270 2016-09-28  Werner Lemberg  <wl@gnu.org>
1271
1272         More FT_ZERO usage.
1273
1274         * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
1275         s/ft_memset/FT_MEM_ZERO/.
1276
1277         * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
1278         s/ft_memset/FT_ARRAY_ZERO/.
1279
1280         * src/raster/ftraster.c (FT_ZERO): Define.
1281         (ft_black_new): Use it.
1282         * src/raster/ftrend1.c (ft_raster1_get_cbox):
1283         s/FT_MEM_ZERO/FT_ZERO/.
1284
1285         * src/smooth/ftgrays.c (FT_ZERO): Define.
1286         (gray_raster_new): Use it.
1287         * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
1288         s/FT_MEM_ZERO/FT_ZERO/.
1289
1290 2016-09-28  Werner Lemberg  <wl@gnu.org>
1291
1292         */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
1293
1294 2016-09-27  Werner Lemberg  <wl@gnu.org>
1295
1296         [truetype] Trace number of executed opcodes.
1297
1298         * src/truetype/ttinterp.c (TT_RunIns): Implement it.
1299
1300 2016-09-27  Werner Lemberg  <wl@gnu.org>
1301
1302         [truetype] Speed up `TT_Load_Glyph'.
1303
1304         This avoids additional calls to `tt_face_lookup_table' for the
1305         `glyf' table, which can be expensive.
1306
1307         * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
1308         `glyf_offset' field to ...
1309         (TT_FaceRec): ... this structure.
1310         * src/truetype/ttgload.c (load_truetype_glyph): Updated.
1311         (tt_loader_init): Move initialization of `glyf_offset' to ...
1312         * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
1313
1314 2016-09-27  Werner Lemberg  <wl@gnu.org>
1315
1316         [truetype] Introduce dynamic limits for some bytecode opcodes.
1317
1318         This speeds up FreeType's handling of malformed fonts.
1319
1320         * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
1321         of twilight points, the total number of negative jumps, and the
1322         total number of loops in LOOPCALL opcodes.  The values are based on
1323         the number of points and entries in the CVT table.
1324         (Ins_JMPR): Test negative jump counter.
1325         (Ins_LOOPCALL): Test loopcall counter.
1326
1327         * src/truetype/ttinterp.h (TT_ExecContext): Updated.
1328
1329         * docs/CHANGES: Updated.
1330
1331 2016-09-25  Werner Lemberg  <wl@gnu.org>
1332
1333         [truetype] Sanitize only last entry of `loca' table.
1334
1335         Without this patch, a loca sequence like `0 100000 0 100000 ...',
1336         where value 100000 is larger than the `glyf' table size, makes
1337         FreeType handle the whole `glyf' table as a single glyph again and
1338         again, which is certainly invalid (and can be very slow, too).
1339
1340         * src/truetype/ttpload.c (tt_face_get_location): Implement.
1341         Improve tracing messages.
1342
1343 2016-09-25  Werner Lemberg  <wl@gnu.org>
1344
1345         * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
1346
1347 2016-09-24  Werner Lemberg  <wl@gnu.org>
1348
1349         [autofit] Tracing fixes.
1350
1351         * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
1352         functions only if we actually do tracing.
1353
1354 2016-09-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
1355
1356         [smooth] Reduce divisions in the line renderer.
1357
1358         We don't need some divisions if a line segments stays within a single
1359         row or a single column of pixels.
1360
1361         * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
1362         conditional.
1363
1364 2016-09-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1365
1366         * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
1367
1368 2016-09-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1369
1370         [smooth] Another tiny speed-up.
1371
1372         * src/smooth/ftgrays.c (gray_find_cell): Merge into...
1373         (gray_record_cell): ... this function.
1374
1375 2016-09-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1376
1377         * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
1378
1379 2016-09-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1380
1381         [smooth] Fix valgrind warning and reoptimize.
1382
1383         The algorithm calls `gray_set_cell' at the start of each new contour
1384         or when the contours cross the cell boundaries. Double-checking for
1385         that is wasteful.
1386
1387         * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
1388         (gray_convert_glyph): Remove initialization introduced by 44b172e88.
1389
1390 2016-09-10  Werner Lemberg  <wl@gnu.org>
1391
1392         [sfnt] Fix previous commit.
1393
1394         Problems reported as
1395
1396           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
1397
1398         We now map the strike index right before accessing the physical
1399         data, not earlier.
1400
1401         * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
1402         after creating the map so that...
1403
1404         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
1405         can be used before and after setting up `sbit_strike_map'.
1406         (tt_face_set_sbit_strike): Revert change.
1407         (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
1408
1409         * src/truetype/ttdriver.c (tt_size_select): Revert change.
1410
1411 2016-09-09  Werner Lemberg  <wl@gnu.org>
1412
1413         [ftfuzzer] Minor improvements.
1414
1415         * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
1416         invalid strikes.
1417         Use better values for call to `FT_Set_Char_Size'.
1418
1419 2016-09-09  Werner Lemberg  <wl@gnu.org>
1420
1421         [sfnt] Don't provide (completely) broken strike data.
1422
1423         FreeType tries to sanitize strike header data; we now reject
1424         completely broken ones.
1425
1426         * include/freetype/internal/tttypes.h (TT_FaceRec): New
1427         `sbit_strike_map' array pointer.
1428
1429         * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
1430         width or height would be zero.
1431         Add tracing message in case of error.
1432
1433         * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
1434         only using (more or less) valid strike header data for
1435         FT_Face's `available_sizes' array.
1436         (sfnt_done_face): Updated.
1437
1438         * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
1439         `sbit_strike_map'.
1440         (tt_face_load_strike_metrics): Improve tracing.
1441
1442         * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
1443
1444 2016-09-08  Werner Lemberg  <wl@gnu.org>
1445
1446         * Version 2.7 released.
1447         =======================
1448
1449
1450         Tag sources with `VER-2-7'.
1451
1452         * docs/VERSION.TXT: Add entry for version 2.7.
1453
1454         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1455         builds/windows/vc2005/index.html,
1456         builds/windows/vc2008/freetype.vcproj,
1457         builds/windows/vc2008/index.html,
1458         builds/windows/vc2010/freetype.vcxproj,
1459         builds/windows/vc2010/index.html,
1460         builds/windows/visualc/freetype.dsp,
1461         builds/windows/visualc/freetype.vcproj,
1462         builds/windows/visualc/index.html,
1463         builds/windows/visualce/freetype.dsp,
1464         builds/windows/visualce/freetype.vcproj,
1465         builds/windows/visualce/index.html,
1466         builds/wince/vc2005-ce/freetype.vcproj,
1467         builds/wince/vc2005-ce/index.html,
1468         builds/wince/vc2008-ce/freetype.vcproj,
1469         builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
1470
1471         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
1472         (FREETYPE_PATCH): Set to 0.
1473
1474         * builds/unix/configure.raw (version_info): Set to 18:6:12.
1475         * CMakeLists.txt (VERSION_MINOR): Set to 7.
1476         (VERSION_PATCH): Set to 0.
1477
1478         * docs/CHANGES: Updated.
1479
1480 2016-09-08  Werner Lemberg  <wl@gnu.org>
1481
1482         * src/truetype/ttinterp.c: Include `ttgxvar.h'.
1483
1484         This fixes the `multi' build.
1485
1486 2016-09-08  Werner Lemberg  <wl@gnu.org>
1487
1488         [autofit] Another improvement to Armenian support.
1489
1490         Suggested by Hrant H Papazian <hpapazian@gmail.com>.
1491
1492         * src/autofit/afscript.h: Use better suited characters to derive
1493         default stem widths.
1494
1495 2016-09-07  Alexei Podtelezhnikov  <apodtele@gmail.com>
1496
1497         * src/smooth/ftgrays.c (gray_hline): Micro-optimize.
1498
1499 2016-09-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1500
1501         [smooth] Operate in absolute bitmap coordinates.
1502
1503         Simpler bitmap addressing improves performance by 1.5%.
1504
1505         * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
1506         (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
1507         gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
1508
1509 2016-09-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1510
1511         [smooth] Improve contour start (take 2).
1512
1513         * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
1514         instead of...
1515         (gray_start_cell): ... this function, which is removed.
1516         (gray_convert_glyph): Make initial y-coordinate invalid.
1517
1518 2016-09-06  Werner Lemberg  <wl@gnu.org>
1519
1520         [type1] MM fonts support exactly zero named instances (#48748).
1521
1522         * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
1523
1524 2016-09-06  Jonathan Kew  <jfkthame@gmail.com>
1525
1526         [cff] Fix uninitialized memory.
1527
1528         Problem reported as
1529
1530           https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
1531
1532         * src/cff/cf2intrp.c (cf2_interpT2CharString): Initialize `storage'
1533         array to handle a `get' opcode without a previous `put'.
1534
1535 2016-09-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
1536
1537         * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
1538
1539 2016-09-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
1540
1541         [smooth] Improve contour start.
1542
1543         * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
1544         instead of...
1545         (gray_start_cell): ... this function, which is removed.
1546
1547 2016-09-05  Werner Lemberg  <wl@gnu.org>
1548
1549         [cff] Fix memory initialization.
1550
1551         * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'.  The `Q'
1552         variants of FreeType's memory allocation macros don't do zeroing.
1553
1554 2016-09-05  Werner Lemberg  <wl@gnu.org>
1555
1556         [ftrandom] Minor improvements.
1557
1558         * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
1559         500.
1560
1561         * src/tools/ftrandom/Makefile (CFLAGS): Split off include
1562         directories to ...
1563         (INCLUDES): ... this new variable.
1564         (LDFLAGS): New variable.
1565         (ftrandom.o, ftrandom): Updated.
1566
1567 2016-09-05  Werner Lemberg  <wl@gnu.org>
1568
1569         [autofit] Improve Armenian support.
1570
1571         Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
1572
1573         * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
1574         selection of characters.
1575
1576         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1577
1578 2016-09-04  Werner Lemberg  <wl@gnu.org>
1579
1580         [ftrandom] Improve Makefile.
1581
1582         It now supports both a normal build (`./configure && make') and a
1583         development build (`make devel').
1584
1585         * src/tools/ftrandom/Makefile (VPATH): Set it so that
1586         `libfreetype.a' gets searched in both `objs' (for the development
1587         build) and `objs/.libs' (for a normal build which uses libtool).
1588         (LIBS): Add missing libraries.
1589         (ftrandom.o): New rule.
1590         (ftrandom): Use automatic variables.
1591
1592 2016-09-03  Werner Lemberg  <wl@gnu.org>
1593
1594         [truetype] More fixes for handling of GX deltas.
1595
1596         Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
1597
1598         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
1599         sanity test for glyph variation array header size.
1600         Always set stream position before reading packed x and y deltas.
1601         Fix thinko w.r.t. `localpoints' array.
1602
1603 2016-09-03  Werner Lemberg  <wl@gnu.org>
1604
1605         [ftrandom] Various fixes.
1606
1607         * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
1608         default.
1609         (error_fraction): Make it of type `double' to work as advertized –
1610         this was completely broken.
1611         Update all related code.
1612         (error_count, fcnt): Make it unsigned to fix compiler warnings.
1613         Update all related code.
1614         (fontlist): Change `len' member to `long' to fix compiler warnings.
1615         (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
1616         unused variables.
1617         (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
1618         (ExecuteTest): Ditto.
1619         Call `FT_Done_FreeType'.
1620         (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
1621         int'.
1622         (usage): Improve output.
1623         (main): Fix compiler warnings.
1624
1625         * src/tools/ftrandom/README: Updated.
1626
1627 2016-09-03  Werner Lemberg  <wl@gnu.org>
1628
1629         [base] Avoid negative bitmap strike dimensions (#48985).
1630
1631         * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
1632         actually successful.  For example, this can fail for value
1633         -32768 if the type is `signed short'.  If there are problems,
1634         disable the strike.
1635
1636 2016-09-03  Werner Lemberg  <wl@gnu.org>
1637
1638         [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
1639
1640         * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
1641
1642 2016-09-02  Werner Lemberg  <wl@gnu.org>
1643
1644         [unix] Enable 64bit support in file system access (#48962).
1645
1646         * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
1647
1648 2016-09-02  Werner Lemberg  <wl@gnu.org>
1649
1650         [sfnt] Avoid left shift of negative value (#48980).
1651
1652         * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
1653         constant.
1654
1655 2016-09-02  Werner Lemberg  <wl@gnu.org>
1656
1657         * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
1658
1659 2016-09-02  Werner Lemberg  <wl@gnu.org>
1660
1661         Some preparations for the next release.
1662
1663         * include/freetype/config/ftoption.h
1664         (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
1665
1666         * docs/CHANGES: Updated.
1667
1668 2016-09-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
1669
1670         [smooth] Simplify span rendering more.
1671
1672         It turns out that there is significant cost associated with `FT_Span'
1673         creation and calls to `gray_render_span' because it happens so
1674         frequently. This removes these steps from our internal use but leaves
1675         it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
1676         is about 5%.
1677
1678         * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
1679         migrated to...
1680         (gray_hline): ... here.
1681
1682 2016-08-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
1683
1684         [smooth] Streamline pixmap drawing a bit more.
1685
1686         Zero coverage is unlikely (1 out of 256) to warrant checking. This
1687         gives 0.5% speed improvement in rendering simple glyphs.
1688
1689         * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
1690
1691 2016-08-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
1692
1693         [smooth] Streamline pixmap drawing.
1694
1695         This gives 2% speed improvement in rendering simple glyphs.
1696
1697         * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
1698         pointer to its bottom-left and pitch to be used in...
1699         (gray_TWorker): ... here.
1700         (gray_render_span): Move pixmap flow check from here...
1701         (gray_raster_render): .. to here.
1702
1703 2016-08-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
1704
1705         [smooth] Reduce stack of band boundaries.
1706
1707         * src/smooth/ftgrays.c (gray_TBand): Removed.
1708         (gray_convert_glyph): Updated to stack band boundaries concisely.
1709
1710 2016-08-26  Werner Lemberg  <wl@gnu.org>
1711
1712         * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
1713
1714 2016-08-26  Werner Lemberg  <wl@gnu.org>
1715
1716         [cid] Fix commit from 2016-05-16.
1717
1718         * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
1719
1720 2016-08-26  Werner Lemberg  <wl@gnu.org>
1721
1722         [sfnt] Cache offset and size to bitmap data table.
1723
1724         This commit avoids `EBDT' and friends being looked up again and
1725         again while loading a single embedded bitmap.
1726
1727         * include/freetype/internal/tttypes.h (TT_FaceRec)
1728         [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
1729         `ebdt_size'.
1730
1731         * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
1732         (tt_face_load_sbit): ... this function; also store the table size
1733         and offset.
1734
1735 2016-08-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
1736
1737         * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
1738
1739 2016-08-26  Werner Lemberg  <wl@gnu.org>
1740
1741         [type1] Fix heap buffer overflow.
1742
1743         Reported as
1744
1745           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
1746
1747         * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
1748         contain glyph names.
1749
1750 2016-08-25  Werner Lemberg  <wl@gnu.org>
1751
1752         [sfnt] Fix previous commit (#48901).
1753
1754         * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
1755
1756 2016-08-25  Werner Lemberg  <wl@gnu.org>
1757
1758         [sfnt] Speed up handling of invalid format 4 cmaps.
1759
1760         * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
1761         tests for `num_glyph' from `tt_cmap4_char_map_linear'.
1762
1763 2016-08-25  Werner Lemberg  <wl@gnu.org>
1764
1765         * include/freetype/internal/ftdriver.h: Remove unused typedefs.
1766
1767 2016-08-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
1768
1769         [smooth] Simplify span rendering.
1770
1771         This removes unnecessary complexity of span merging and buffering.
1772         Instead, the spans are rendered as they come, speeding up the
1773         rendering by about 5% as a result.
1774
1775         * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
1776         (gray_TWorker): Remove span buffer and related fields.
1777         (gray_sweep, gray_hline): Updated.
1778
1779         * include/freetype/ftimage.h: Remove documentation note about
1780         `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
1781
1782 2016-08-16  Werner Lemberg  <wl@gnu.org>
1783
1784         [truetype] Fix `MPS' instruction.
1785
1786         According to Greg Hitchcock, MPS in DWrite really returns the point
1787         size.
1788
1789         * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
1790
1791         * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
1792
1793         * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
1794         member.
1795
1796         * src/truetype/ttinterp.c (TT_Load_Context): Updated.
1797         (Ins_MPS): Fix instruction.
1798
1799 2016-08-16  Werner Lemberg  <wl@gnu.org>
1800
1801         [lzw] Optimize last commit.
1802
1803         * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
1804         conditional clause.
1805
1806 2016-08-16  Werner Lemberg  <wl@gnu.org>
1807
1808         [lzw] Avoid invalid left shift.
1809
1810         Reported as
1811
1812           https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
1813
1814         * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
1815
1816 2016-08-16  Werner Lemberg  <wl@gnu.org>
1817
1818         [lzw] Avoid buffer overrun.
1819
1820         Reported as
1821
1822           https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
1823
1824         * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
1825         underflow.
1826
1827 2016-08-16  Werner Lemberg  <wl@gnu.org>
1828
1829         [truetype] Fix compiler warning.
1830
1831         * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
1832
1833 2016-08-13  Werner Lemberg  <wl@gnu.org>
1834
1835         [winfonts] Avoid zero bitmap width and height.
1836
1837         Reported as
1838
1839           https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
1840
1841         * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
1842         (FNT_Load_Glyph): Check for zero pitch.
1843
1844 2016-08-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1845
1846         * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
1847
1848 2016-08-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1849
1850         * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
1851
1852 2016-08-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
1853
1854         * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
1855
1856 2016-08-10  Peter Klotz  <Peter.Klotz@ith-icoserve.com>
1857
1858         * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
1859
1860 2016-08-10  Werner Lemberg  <wl@gnu.org>
1861
1862         [sfnt] Use correct type for `italicAngle' field (#48732).
1863
1864         * src/sfnt/ttload.c (tt_face_load_post): Fix types.
1865
1866 2016-08-06  Jon Spencer  <jon@jonspencer.ca>
1867
1868         [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
1869
1870         `FT_Get_Advance' returns 0 for bitmap fonts.  It first gets the
1871         advance value from the font table and then scales it by the
1872         `font->size->metrics->x_scale' field.  But `FT_Select_Size' doesn't
1873         set that value for bitmap fonts and the advance gets scaled to zero.
1874
1875         Taken from
1876
1877           https://github.com/behdad/harfbuzz/issues/252
1878
1879         * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
1880         <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
1881
1882 2016-08-06  Behdad Esfahbod  <behdad@behdad.org>
1883
1884         [truetype] Fix GX variation handling of composites.
1885
1886         * src/truetype/ttgload.c (load_truetype_glyph)
1887         [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
1888
1889 2016-08-05  Alexei Podtelezhnikov  <apodtele@gmail.com>
1890
1891         [smooth] Minor refactoring.
1892
1893         * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
1894         Updated.
1895
1896 2016-07-29  Werner Lemberg  <wl@gnu.org>
1897
1898         [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
1899
1900         Since 2016-05-16 we detect infinite recursion directly.
1901
1902         * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
1903         `maxComponentDepth'.
1904         * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
1905         `maxComponentDepth' is not valid.  Instead, simply adjust its value
1906         and emit a tracing message.
1907
1908 2016-07-26  Werner Lemberg  <wl@gnu.org>
1909
1910         * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
1911
1912         No functional change.
1913
1914 2016-07-22  Hin-Tak Leung  <htl10@users.sourceforge.net>
1915
1916         [truetype] Record the end of IDEFs.
1917
1918         To match the logic in FDEF.  The value of the end is only used for
1919         bound-checking in `Ins_JMPR', so it may not have been obvious that
1920         it was not recorded.  Tested (as part of Font Validator 2.0) all the
1921         fonts on Fedora and did not see any change.
1922
1923         * src/truetype/ttinterp.c (Ins_IDEF): Updated.
1924
1925 2016-07-19  Werner Lemberg  <wl@gnu.org>
1926
1927         [truetype] Sanitizer fix, second try.
1928
1929         * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1930         tests and use only one slot more.
1931
1932 2016-07-19  Werner Lemberg  <wl@gnu.org>
1933
1934         [truetype] Sanitizer fix.
1935
1936         * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
1937         to fix nested loops.
1938
1939 2016-07-18  Werner Lemberg  <wl@gnu.org>
1940
1941         [truetype] Make GETDATA work only for GX fonts.
1942
1943         * src/truetype/ttinterp.c (opcode_name): Updated.
1944         (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
1945         (TT_RunIns): Updated.
1946
1947 2016-07-17  Werner Lemberg  <wl@gnu.org>
1948
1949         [truetype] Add support for Apple's
1950
1951           GETDATA[], opcode 0x92
1952
1953         bytecode instruction.  It always returns 17, and we have absolutely
1954         no idea what it is good for...
1955
1956         * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
1957         (Ins_GETDATA): New function.
1958         (TT_RunIns): Add it.
1959
1960 2016-07-16  Werner Lemberg  <wl@gnu.org>
1961
1962         [truetype] Add bytecode support for GX variation fonts.
1963
1964         This commit implements undocumented (but confirmed) stuff from
1965         Apple's old bytecode engine.
1966
1967           GETVARIATION[], opcode 0x91
1968             This opcode pushes normalized variation coordinates for all axes
1969             onto the stack (in 2.14 format).  Coordinate of first axis gets
1970             pushed first.
1971
1972           GETINFO[], selector bit 3
1973             If GX variation support is enabled, bit 10 of the result is set
1974             to 1.
1975
1976         * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
1977         (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
1978         (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
1979         bit 3, checking support for variation glyph hinting.
1980         (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
1981         to implement opcode 0x91.
1982         (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
1983
1984 2016-07-16  Werner Lemberg  <wl@gnu.org>
1985
1986         [truetype] Fix GETINFO bytecode instruction.
1987
1988         * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
1989         stretching information.
1990
1991 2016-07-16  Behdad Esfahbod  <behdad@behdad.org>
1992
1993         [truetype] Make all glyphs in `Zycon' GX font work.
1994
1995         * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1996         tests.
1997
1998 2016-07-16  Werner Lemberg  <wl@gnu.org>
1999
2000         [truetype] Fix GX delta tracing.
2001
2002         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
2003         relative point movements.
2004
2005 2016-07-16  Behdad Esfahbod  <behdad@behdad.org>
2006
2007         [truetype] More fixes for GX.
2008
2009         This finally fixes the rendering of the cyclist and the lizard in
2010         the `Zycon' font.
2011
2012         * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
2013         index is always cumulative.
2014
2015         (tt_handle_deltas): Rename to...
2016         (tt_interpolate_deltas): ... This.
2017         Add new parameter for output point array.
2018         Update caller.
2019
2020         (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
2021         the intermediate results of `tt_interpolate_deltas' that are to be
2022         added to `outline->points'.
2023
2024 2016-07-15  Werner Lemberg  <wl@gnu.org>
2025
2026         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
2027
2028         `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
2029
2030         Reported by Alexei.
2031
2032 2016-07-16  Nikolaus Waxweiler  <madigens@gmail.com>
2033
2034         * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
2035
2036         Problem reported by Hin-Tak Leung.
2037
2038 2016-07-15  Werner Lemberg  <wl@gnu.org>
2039
2040         [autofit] Update and improve segment and edge tracing.
2041
2042         * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
2043         `delta' also.
2044         Don't show first point of segment as a replacement for `pos'; this
2045         is (a) misleading, since the difference to `pos' can be almost
2046         arbitrarily large in corner cases, and (b) it is better to have all
2047         segment data in font units instead of a single value given in output
2048         space coordinates.
2049         Improve layout.
2050         (af_glyph_hints_dump_edges): Show px->units and units->px conversion
2051         values for convenience.
2052         Improve layout.
2053
2054 2016-07-15  Werner Lemberg  <wl@gnu.org>
2055
2056         [autofit] For edges, reject segments wider than 1px (#41334).
2057
2058         * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
2059
2060         * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
2061         `delta'.
2062         (af_latin_hints_compute_edges): Reject segments with a delta larger
2063         than 0.5px.
2064
2065 2016-07-14  Werner Lemberg  <wl@gnu.org>
2066
2067         * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
2068
2069 2016-07-14  Werner Lemberg  <wl@gnu.org>
2070
2071         [sfnt] Fix `face_index' value in `FT_Face' for named instances.
2072
2073         * src/sfnt/sfobjs.c (sfnt_init_face): Don't strip off higher 16bits.
2074
2075 2016-07-14  Werner Lemberg  <wl@gnu.org>
2076
2077         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
2078
2079 2016-07-14  Behdad Esfahbod  <behdad@behdad.org>
2080
2081         [truetype] Fix gxvar delta interpolation.
2082
2083         The coordinates of the base font should be used for interpolation
2084         purposes, NOT the current points (i.e., the result of accumulation
2085         of previous deltas).
2086
2087         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
2088         `points_org' before looping over all tuples.
2089
2090
2091 ----------------------------------------------------------------------------
2092
2093 Copyright (C) 2016-2023 by
2094 David Turner, Robert Wilhelm, and Werner Lemberg.
2095
2096 This file is part of the FreeType project, and may only be used, modified,
2097 and distributed under the terms of the FreeType project license,
2098 LICENSE.TXT.  By continuing to use, modify, or distribute this file you
2099 indicate that you have read the license and understand and accept it
2100 fully.
2101
2102
2103 Local Variables:
2104 version-control: never
2105 coding: utf-8
2106 End: