blob: 769cb24fff924f3e84bc99016974af9535e66bcb [file] [log] [blame]
Werner Lemberg57a67332016-12-21 06:52:23 +010012016-12-21 Werner Lemberg <wl@gnu.org>
2
3 [base] Improve sanity check for Mac resources (#49888).
4
5 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Abort if `rlen' is not
6 positive.
7
Werner Lemberg70704b32016-12-20 12:27:22 +010082016-12-20 Werner Lemberg <wl@gnu.org>
9
Werner Lembergded4bdb2016-12-20 23:26:38 +010010 [base] More sanity checks for Mac resources.
11
12 We use
13
14 https://github.com/kreativekorp/ksfl/wiki/Macintosh-Resource-File-Format
15
16 and
17
18 https://developer.apple.com/legacy/library/documentation/mac/pdf/MoreMacintoshToolbox.pdf#page=151
19
20 as references.
21
22 * include/freetype/internal/ftrfork.h (FT_RFork_Ref): Use FT_Short
23 for `res_id'.
24
25 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Extract map length
26 and use it to improve sanity checks.
27 Follow the specification more closely;in particular, all data types
28 are signed, not unsigned.
29 (FT_Raccess_Get_DataOffsets): Follow the specification more closely;
30 in particular, all data types are signed, not unsigned.
31 Add some sanity checks.
32
332016-12-20 Werner Lemberg <wl@gnu.org>
34
Werner Lemberg70704b32016-12-20 12:27:22 +010035 [truetype] Improve logic for getting fast advance widths.
36
37 * src/cff/cffdrivr.c (cff_get_advances), src/truetype/ttdriver.c
38 (tt_get_advances): Use `is_default_instance' for test; this gets
39 recomputed after changing blend coordinates.
40
Ben Wagnercc576f82016-12-20 11:37:42 +0100412016-12-20 Ben Wagner <bungeman@google.com>
42 Werner Lemberg <wl@gnu.org>
43
Werner Lembergd678b372016-12-20 12:45:31 +010044 [truetype] Fix linear metrics of GX variation fonts (#49829).
Ben Wagnercc576f82016-12-20 11:37:42 +010045
46 When asking for an unhinted non-default variations,
47 `linearVertAdvance' is currently the value from the `hmtx' table
48 instead of the actual value after applying the variation. `HVAR'
49 support fixes this, but fonts will exist without that table and will
50 need sane fallback.
51
Werner Lembergd678b372016-12-20 12:45:31 +010052 Problem also reported as
Werner Lemberg59b0b3a2016-12-20 11:39:52 +010053
54 https://bugs.chromium.org/p/skia/issues/detail?id=5917
55
Ben Wagnercc576f82016-12-20 11:37:42 +010056 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
57 load_truetype_glyph): Implement linear advance adjustments if `HVAR'
58 or `VVAR' tables are missing.
59
Werner Lemberga1e85f12016-12-20 10:52:26 +0100602016-12-20 Werner Lemberg <wl@gnu.org>
61
62 [cff, truetype] Fast advance width retrieval for fonts with HVAR.
63
64 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
65
66 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Don't handle MM.
67
68 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
69 (cff_get_advances): Test for HVAR and VVAR.
70
71 * src/truetype/ttdriver.c (tt_get_advances): Test for HVAR and VVAR.
72
Werner Lemberg8f633a02016-12-18 06:42:31 +0100732016-12-18 Werner Lemberg <wl@gnu.org>
74
Werner Lemberg5743df72016-12-18 21:01:03 +010075 [base] Fix invalid mac font recursion.
76
77 Reported as
78
79 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=304
80
81 * src/base/ftobjs.c (FT_Open_Face): Code moved to...
82 (ft_open_face_internal): ... this function.
83 Add a parameter to control whether we try special Mac font handling
84 in case of failure.
85 (FT_Open_Face, FT_New_Face, FT_New_Memory_Face,
86 open_face_from_buffer): Use `ft_open_face_internal'.
87
882016-12-18 Werner Lemberg <wl@gnu.org>
89
Werner Lembergca3d4012016-12-18 18:23:19 +010090 * src/cff/cffobjs.c (cff_face_init): Make named instances work.
91
922016-12-18 Werner Lemberg <wl@gnu.org>
93
Werner Lemberga8652c52016-12-18 18:12:03 +010094 [truetype, cff] Extend `get_var_blend' function of MM service.
95
96 In particular, we need access to named instance data.
97
98 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
99 Add argument for `FT_MM_Var'.
100
101 * src/cff/cffload.c (cff_get_var_blend): Updated.
102 * src/cff/cffload.h: Updated.
103
104 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
105
106 * src/truetype/ttgxvar.c (tt_get_var_blend): Updated.
107 Accept value `NULL' for arguments.
108 * src/truetype/ttgxvar.h: Updated.
109
1102016-12-18 Werner Lemberg <wl@gnu.org>
111
Werner Lemberg25f3ac22016-12-18 15:50:18 +0100112 [sfnt] Handle `fvar' with zero axes as a non-MM font.
113
114 This is better behaviour than exiting with an error.
115
116 * include/freetype/internal/tttypes.h (TT_Face): Add `use_fvar'
117 field.
118
119 * src/sfnt/sfobjs.c (sfnt_init_face): Compute `use_fvar', also
120 updating the validation code.
121 Use `use_fvar' to compute FT_FACE_FLAG_MULTIPLE_MASTERS.
122
123 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Remove `fvar' validation
124 code.
125
1262016-12-18 Werner Lemberg <wl@gnu.org>
127
Werner Lembergeb6d0202016-12-18 09:29:58 +0100128 Minor GX code shuffling.
129
130 * include/freetype/internal/tttypes.h (TT_Face): Move
131 `is_default_instance' into TT_CONFIG_OPTION_GX_VAR_SUPPORT
132 block.
133
134 * src/sfnt/sfobjs.c (sfnt_init_face): Updated.
135 * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): New macro.
136 (TT_Load_Glyph): Use it.
137
1382016-12-18 Werner Lemberg <wl@gnu.org>
139
Werner Lemberg8f633a02016-12-18 06:42:31 +0100140 [cff] Better handling of non-CFF font formats.
141
142 * src/cff/cffload.c (cff_font_load): Pure CFFs don't have a
143 signature, so return `FT_Err_Unknown_File_Format' more often.
144
Werner Lemberg50ff6c12016-12-17 07:44:46 +01001452016-12-17 Werner Lemberg <wl@gnu.org>
146
Werner Lemberg4cd68172016-12-17 22:52:50 +0100147 * src/cff/cffload.c (cff_build_blend_vector): Remove redundant code.
148
1492016-12-17 Werner Lemberg <wl@gnu.org>
150
Werner Lembergdb17ceb2016-12-17 13:39:31 +0100151 * src/truetype/ttobjs.c (tt_face_init): Simplify conditional code.
152
1532016-12-17 Werner Lemberg <wl@gnu.org>
154
Werner Lemberg7c75b162016-12-17 13:28:24 +0100155 [sfnt, truetype] Various sanitizing fixes.
156
157 * src/sfnt/sfobjs.c (sfnt_init_face): If the axis count in `fvar' is
158 zero, set `num_instances' to zero.
159
160 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Handle `fvar' table with
161 zero axes as invalid.
162
163 * src/truetype/ttobjs.c (tt_face_init): Improve logic of loading
164 `loca', `cvt', `fpgm', and `prep' table.
165
1662016-12-17 Werner Lemberg <wl@gnu.org>
167
Werner Lemberg3b125e92016-12-17 10:02:19 +0100168 Improve tracing of `FT_Open_Face'.
169
170 * src/base/ftobjs.c (FT_Open_Face): Return info on number of
171 available faces and numbered instances, or the indices of the
172 requested face and numbered instance.
173
174 * src/sfnt/sfobjs. (sfnt_open_font): Trace number of subfonts.
175
1762016-12-17 Werner Lemberg <wl@gnu.org>
177
Werner Lemberg50ff6c12016-12-17 07:44:46 +0100178 * src/cff/cffload.c (cff_load_private_dict): Always init `blend'.
179
180 Reported as
181
182 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=295
183
Werner Lembergbeecf802016-12-16 08:52:03 +01001842016-12-16 Werner Lemberg <wl@gnu.org>
185
Werner Lembergdf2cf432016-12-16 11:38:20 +0100186 [truetype] Fix `cvar' sanity test.
187
188 Reported by Dave Arnold.
189
190 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Use tuple count mask.
191
1922016-12-16 Werner Lemberg <wl@gnu.org>
193
Werner Lemberg68620242016-12-16 11:15:17 +0100194 [cff, truetype] Remove compiler warnings; fix `make multi'.
195
196 * src/cff/cf2font.h: Include `cffload.h'.
197
198 * src/cff/cffload.c: Include FT_MULTIPLE_MASTERS_H and
199 FT_SERVICE_MULTIPLE_MASTERS_H.
200 (cff_vstore_load): Eliminate `vsSize'.
201 (cff_load_private_dict): Tag as `FT_LOCAL_DEF'.
202
203 * src/cff/cffload.h: Include `cffobjs.h'.
204 Provide declaration for `cff_load_private_dict'.
205
206 * src/truetype/ttgxvar.c (ft_var_load_hvar): Eliminate
207 `minorVersion' and `map_offset'.
208
2092016-12-16 Werner Lemberg <wl@gnu.org>
210
Werner Lembergbeecf802016-12-16 08:52:03 +0100211 [cff] Fix heap buffer overflow (#49858).
212
213 * src/cff/cffparse.c (cff_parser_run): Add one more stack size
214 check.
215
Werner Lemberg01658be2016-12-15 23:10:59 +01002162016-12-15 Werner Lemberg <wl@gnu.org>
217
218 Fix clang warnings.
219
220 * src/cff/cffload.c (cff_blend_doBlend): Add cast.
221 (cff_subfont_load): Set `error' correctly.
222
223 * src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.
224
Dave Arnold9f62d2c2016-12-15 20:27:47 +01002252016-12-15 Dave Arnold <darnold@adobe.com>
226 Werner Lemberg <wl@gnu.org>
227
Dave Arnoldedf40142016-12-15 21:56:44 +0100228 [cff] Implement CFF2 support (2/2).
229
230 The font variation code. All parts dependent on the GX code in the
231 `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
232 In other words, you can still compile the `cff' module without
233 defining TT_CONFIG_OPTION_GX_VAR_SUPPORT (which brings you CFF2
234 support without font variation).
235
236 * src/cff/cf2font.c (cf2_font_setup): Add support for font
237 variation.
238 * src/cff/cf2font.h (CF2_Font): Add fields for variation data.
239
240 * src/cff/cf2ft.c (cf2_free_instance): Free blend data.
241 (cf2_getVStore, cf2_getNormalizedVector): New functions.
242 * src/cff/cf2ft.h: Updated.
243
244 * src/cff/cf2intrp.c: Include `cffload.h'.
245 (cf2_cmdRESERVED_15, cf2_cmdRESERVED_16): Replace with...
246 (cf2_cmdVSINDEX, cf2_cmdBLEND): ... this new enum values.
247 (cf2_doBlend): New function.
248 (cf2_interpT2CharString): Handle `vsindex' and `blend' opcodes.
249
250 * src/cff/cffload.c (FT_fdot14ToFixed): New macro.
251 (cff_vstore_done, cff_vstore_load): New functions.
252 (cff_blend_clear, cff_blend_doBlend, cff_blend_build_vector,
253 cff_blend_check_vector): New functions.
254 (cff_load_private_dict): Add arguments for blend vector.
255 Handle blend data.
256 (cff_subfont_load, cff_subfont_done): Updated.
257 (cff_font_load): Handle CFF2 variation store data.
258 (cff_font_done): Updated.
259 * src/cff/cffload.h: Include `cffparse.h'.
260 Updated.
261
262 * src/cff/cffobjs.c (cff_face_done): Updated.
263
264 * src/cff/cffparse.c: Include `cffload.h'.
265 (cff_parse_num): Handle internal value 255.
266 (cff_parse_vsindex, cff_parse_blend): New functions.
267 (CFF_FIELD_BLEND): New macro.
268 (cff_parser_run): Updated.
269 * src/cff/cffparse.h (cff_kind_blend): New enum value.
270
271 * src/cff/cfftoken.h: Handle `vstore', `vsindex', and `blend'
272 dictionary values.
273
274 * src/cff/cfftypes.h (CFF_VarData, CFF_AxisCoords, CFF_VarRegion,
275 CFF_VStore, CFF_Blend): New structures.
276 (CFF_FontRecDict): Add `vstore_offset' field.
277 (CFF_Private): Add `vsindex' field.
278 (CFF_SubFont): Add fields for blend data.
279 (CFF_Font): Add `vstore' field.
280
281 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `CFF2' is equal to `gvar',
282 since glyph variation data is directly embedded.
283 (TT_Set_MM_Blend): Don't load `gvar' table for CFF2 fonts.
284
2852016-12-15 Dave Arnold <darnold@adobe.com>
286 Werner Lemberg <wl@gnu.org>
287
Dave Arnold9f62d2c2016-12-15 20:27:47 +0100288 [cff] Implement CFF2 support (1/2).
289
290 This commit does not contain the blend code for font variation
291 support, which follows in another commit.
292
293 You should ignore whitespace while inspecting this commit.
294
295 * include/freetype/internal/tttypes.h (TT_Face): Add `isCFF2'
296 member.
297
298 * src/cff/cf2font.h (CF2_Font): Add `isCFF2' member.
299
300 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Handle `isCFF2'
301 flag.
302 (cf2_getMaxstack): New function.
303 * src/cff/cf2ft.h: Updated.
304
305 * src/cff/cf2intrp.c (cf2_escRESERVED_38): New enum.
306 (cf2_interpT2CharString): Handle CFF2 differences.
307 Add tracing message for errors.
308
309 * src/cff/cffdrivr.c (cff_get_glyph_name, cff_get_name_index):
310 Update for CFF2.
311
312 * src/cff/cffload.c (FT_FIXED_ONE): New macro.
313 (cff_index_init, cff_index_load_offsets, cff_index_access_element,
314 cff_index_get_name, cff_ft_select_get, cff_load_private_dict,
315 cff_subfont_load, cff_font_load): Handle CFF2.
316 * src/cff/cffload.h: Updated.
317
318 * src/cff/cffobjs.c (cff_face_init): Handle CFF2.
319
320 * src/cff/cffparse.c (cff_parse_maxstack): New function.
321 (CFFCODE_TOPDICT, CFFCODE_PRIVATE): Removed
322 * src/cff/cffparse.h (CFF2_MAX_STACK, CFF2_DEFAULT_STACK): New
323 macros.
324 (CFF2_CODE_TOPDICT, CFF2_CODE_FONTDICT, CFF2_CODE_PRIVATE): New
325 macros.
326
327 * src/cff/cfftoken.h: Add fields for CFF2 dictionaries (but no blend
328 stuff).
329
330 * src/cff/cfftypes.h (CFF_Index): Add `hdr_size' field.
331 (CFF_FontRecDict): Add `maxstack' field.
332 (CFF_Private): Add `subfont' field.
333 (CFF_Font): Add `top_dict_length' and `cff2' fields.
334
335 * src/sfnt/sfobjs.c (sfnt_load_face): Handle `CFF2' table.
336
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01003372016-12-15 Werner Lemberg <wl@gnu.org>
338 Dave Arnold <darnold@adobe.com>
339
340 [truetype] Provide HVAR advance width variation as a service.
341
342 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
343
344 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
345
346 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Prevent
347 double adjustment of advance width.
348
349 * src/sfnt/ttmtx.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
350 (tt_face_get_metrics): Apply metrics variations.
351
Dave Arnold41533b92016-12-15 00:00:45 +01003522016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold097cd872016-12-15 12:58:26 +0100353 Werner Lemberg <wl@gnu.org>
354
Dave Arnoldaa0c4b42016-12-15 14:04:51 +0100355 [truetype] Provide function to apply `HVAR' advance width variation.
356
Werner Lemberg3bd79cc2016-12-15 14:34:57 +0100357 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
358
Dave Arnoldaa0c4b42016-12-15 14:04:51 +0100359 * src/truetype/ttgxvar.c (tt_hadvance_adjust): New function.
360 * src/truetype/ttgxvar.h: Updated.
361
3622016-12-15 Dave Arnold <darnold@adobe.com>
363 Werner Lemberg <wl@gnu.org>
364
Dave Arnold097cd872016-12-15 12:58:26 +0100365 [truetype] Add `HVAR' table parsing.
366
367 Note that this is not complete yet; it only handles advance width
368 variation.
369
370 Activation of the code follows in another commit.
371
Werner Lemberg3bd79cc2016-12-15 14:34:57 +0100372 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
373
Dave Arnold097cd872016-12-15 12:58:26 +0100374 * include/freetype/ftmm.h (FT_Var_Named_Style): Add `psid' member.
375
376 * src/truetype/ttgxvar.h (GX_HVarData, GX_AxisCoords, GX_HVarRegion,
377 GX_HVStore, GX_WidthMap): New auxiliary structures for...
378 (GX_HVarTable): ... HVAR main structure.
379 (GX_BlendRec): Add data for HVAR loading.
380
381 * src/truetype/ttgxvar.c (FT_FIXED_ONE, FT_fdot14ToFixed,
382 FT_intToFixed, FT_fixedToInt): New macros.
383 (ft_var_load_hvar): New function.
384 (TT_Get_MM_Var): Updated.
385 (tt_done_blend): Deallocate HVAR data.
386
3872016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold010e0612016-12-15 11:22:15 +0100388
Dave Arnoldabd58582016-12-15 12:17:22 +0100389 [cff] Extend number parsing.
390
391 The forthcoming CFF2 support needs a dynamic parsing limit.
392
393 * src/cff/cffparse.c (cff_parse_num, do_fixed, cff_parse_fixed,
394 cff_parse_fixed_scaled, cff_parse_fixed_dynamic): Add argument for
395 parser.
396 (cff_parse_font_matrix, cff_parse_font_bbox, cff_parse_private_dict,
397 cff_parse_multiple_master, cff_parse_cid_ros, cff_parser_run): Updated.
398
399 * src/cff/cffparse.h (cff_parse_num): Export locally.
400
4012016-12-15 Dave Arnold <darnold@adobe.com>
402
Dave Arnold010e0612016-12-15 11:22:15 +0100403 [cff] Implement dynamic stack size for Adobe engine.
404
405 This also adds `cf2_stack_setReal' and `cf2_stack_pop', needed for
406 the forthcoming CFF2 support.
407
408 * src/cff/cf2stack.c (cf2_stack_init): Add argument for stack size.
409 (cf2_stack_free): Deallocate stack.
410 (cf2_stack_count, cf2_stack_pushInt, cf2_stack_pushFixed,
411 cf2_stack_popInt, cf2_stack_popFixed, cf2_stack_getReal,
412 cf2_stack_clear): Updated.
413 (cf2_stack_setReal, cf2_stack_pop): New functions.
414
415 * src/cff/cf2stack.h (CF2_Stack): Add `stackSize' member.
416 Update function declarations.
417
418 * src/cff/cf2intrp.c (cf2_interpT2CharString): Updated.
419
420 * src/cff/cffparse.c (cff_parser_init): Add parameter for stack
421 size; return error code.
422 (cff_parser_done): New function.
423 (cff_parser_run): Updated.
424
425 * src/cff/cffparse.h (CFF_Parser): Add `stackSize' member and make
426 `stack' a pointer.
427 Update function declarations.
428
429 * src/cff/cffload.c (cff_load_private_dict, cff_subfont_load):
430 Updated.
431
4322016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold41533b92016-12-15 00:00:45 +0100433 Werner Lemberg <wl@gnu.org>
434
435 [cff] Code shuffling.
436
437 * src/cff/cfftypes.h (CFF_Font): Add `library' and `base_offset'
438 fields.
439
440 * src/cff/cffload.c (cff_subfont_load): Change last argument to
441 `CFF_Font'
442 Split off parsing of private dictionary into...
443 (cff_load_private_dict): ...this new function.
444 (cff_font_load): Updated.
445
Werner Lembergab22b432016-12-14 18:34:55 +01004462016-12-14 Werner Lemberg <wl@gnu.org>
447
Werner Lemberg09183252016-12-14 20:44:11 +0100448 [sfnt, truetype] Add framework for Metrics Variations service.
449
450 No effect yet; service functions will be implemented later on.
451
452 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
453
454 * include/freetype/internal/services/svmetric.h: New file.
455
456 * include/freetype/internal/ftserv.h
457 (FT_SERVICE_METRICS_VARIATIONS_H): New macro.
458
459 * include/freetype/internal/tttypes.h (TT_Face): New field `var'.
460
461 * src/sfnt/sfobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
462 (sfnt_init_face): Initialize `face->var'.
463
464 * src/truetype/ttdriver.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
465 (tt_service_metrics_variations): New service.
466 (tt_services): Updated.
467
468 * src/truetype/ttpic.h: Updated.
469
4702016-12-14 Werner Lemberg <wl@gnu.org>
471
Werner Lembergc628a7d2016-12-14 19:31:42 +0100472 [cff] Add Multiple Masters service.
473
474 The code simply uses the MM functions from the `truetype' module.
475
476 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
477
478 * include/freetype/internal/tttypes.h (TT_Face): New field `mm'.
479
480 * src/cff/cffdrivr.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
481 (cff_set_mm_blend, cff_get_mm_blend, cff_get_mm_var,
482 cff_set_var_design, cff_get_var_design): New functions.
483 (cff_service_multi_masters): New service.
484 (cff_services): Updated.
485
486 * src/cff/cffload.c (cff_get_var_blend, cff_done_blend): New
487 functions.
488 * src/cff/cffload.h: Updated.
489
490 * src/cff/cffpic.h (CFF_SERVICE_MULTI_MASTERS_GET): New macro.
491
492 * src/sfnt/sfobjs.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
493 (sfnt_init_face): Initialize `face->mm'.
494
4952016-12-14 Werner Lemberg <wl@gnu.org>
496
Werner Lemberga7dc0c32016-12-14 18:54:21 +0100497 Extend functionality of `ft_module_get_service'.
498
499 It can now differentiate between local and global searches.
500
501 * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
502 (FT_Get_TrueType_Engine_Type): Updated.
503
504 * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
505
506 * include/freetype/internal/ftobjs.h: Updated.
507 * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
508 Updated.
509
5102016-12-14 Werner Lemberg <wl@gnu.org>
511
Werner Lembergab22b432016-12-14 18:34:55 +0100512 * src/truetype/ttgxvar.c (tt_get_var_blend): Fix compiler warning.
513
Werner Lemberg4e075162016-12-14 18:25:44 +01005142016-12-14 Dave Arnold <darnold@adobe.com>
515 Werner Lemberg <wl@gnu.org>
516
517 [sfnt, cff] Minor preparations.
518
519 * include/freetype/tttags.h (TTAG_CFF2, TTAG_HVAR, TTAG_MVAR,
520 TTAG_VVAR): New SFNT table tags.
521
522 * src/cff/cf2fixed.h (CF2_FIXED_ONE, CF2_FIXED_EPSILON): Add cast.
523
Werner Lemberg27bdb362016-12-10 09:56:03 +01005242016-12-10 Werner Lemberg <wl@gnu.org>
525
Werner Lemberg8b174b42016-12-11 09:16:52 +0100526 [truetype, type1] Add `get_var_blend' to MM service.
527
528 For internal use; we want to share code between the forthcoming CFF2
529 support and TrueType.
530
531 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
532 New typedef.
533 (MultiMasters): Add `get_var_blend'.
534 (FT_Service_MultiMasters): Updated.
535
536 * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
537 * src/truetype/ttgxvar.h: Updated.
538
539 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
540 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
541
5422016-12-10 Werner Lemberg <wl@gnu.org>
543
Werner Lemberg27bdb362016-12-10 09:56:03 +0100544 [truetype, type1] Add `done_blend' to MM service.
545
546 For internal use; we want to share code between the forthcoming CFF2
547 support and TrueType.
548
549 * include/freetype/internal/services/svmm.h (FT_Done_Blend_Func):
550 New typedef.
551 (MultiMasters): Add `done_blend'.
552 (FT_Service_MultiMasters): Updated.
553
554 * src/truetype/ttgxvar.c (tt_done_blend): Use `TT_Face' as argument.
555 * src/truetype/ttgxvar.h: Updated.
556
557 * src/truetype/ttobjs.c (TT_Face_Done): Updated.
558
559 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
560 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
561
Werner Lemberg3205a442016-12-09 06:55:34 +01005622016-12-09 Werner Lemberg <wl@gnu.org>
563
564 [sfnt] Revert change from 2016-12-08.
565
566 I missed the functionality of `ft_module_get_service', which makes
567 the change unnecessary.
568
Werner Lemberg29aa9572016-12-08 08:59:34 +01005692016-12-08 Werner Lemberg <wl@gnu.org>
570
Werner Lemberg4191b772016-12-08 22:33:46 +0100571 Add framework to support services with 8 functions.
572
573 We will need this for CFF variation font support.
574
575 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC8):
576 New macro.
577
5782016-12-08 Werner Lemberg <wl@gnu.org>
579
Werner Lemberg29aa9572016-12-08 08:59:34 +0100580 [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
581
582 CFF2 fonts will need access to those two functions.
583
584 * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
585 (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
586 (FT_DEFINE_SFNT_INTERFACE): Updated.
587
588 * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
589 Fix signatures to exactly correspond to the glyph dict service
590 function typedefs.
591 (sfnt_interface): Updated.
592
Dave Arnoldbcae6572016-12-05 22:08:15 +01005932016-12-06 Dave Arnold <darnold@adobe.com>
594
595 Add `FT_Get_Var_Design_Coordinates' function.
596
597 Note that the low-level functions aren't implemented yet.
598
599 * include/freetype/ftmm.h: Declare.
600
601 * include/freetype/internal/services/svmm.h
602 (FT_Get_Var_Design_Func): New typedef.
603 (MultiMasters): New MM service function `get_var_design'.
604 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
605 Update all callers.
606
607 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
608
609 * src/truetype/ttdriver.c: Updated.
610
611 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
612 handle `get_var_design' service.
613 * src/truetype/ttgxvar.h: Updated.
614
615 * src/type1/t1driver.c: Updated.
616
617 * src/type1/t1load.c (T1_Get_Var_Design): New dummp function to
618 handle `get_var_design' service.
619 * src/type1/t1load.h: Updated.
620
Werner Lembergc0fae7d2016-12-06 11:13:19 +01006212016-12-06 Werner Lemberg <wl@gnu.org>
622
623 * src/type1/t1load.c (parse_subrs): Fix memory leak.
624
625 The `subrs' keyword might erroneously occur multiple times.
626
627 Reported as
628
629 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
630
Werner Lemberg602be7c2016-12-01 11:36:37 +01006312016-12-01 Werner Lemberg <wl@gnu.org>
632
633 [gzip] Improve building with external zlib (#49673).
634
635 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
636 the following error.
637
638 ftgzip.c
639 zlib-1.2.8\zlib.h(86): error C2061:
640 syntax error: identifier 'z_const'
641 zlib-1.2.8\zlib.h(94): error C2054:
642 expected '(' to follow 'z_const'
643 zlib-1.2.8\zlib.h(94): error C2085:
644 'msg': not in formal parameter list
645 ...
646 zlib-1.2.8\zlib.h(877): fatal error C1003:
647 error count exceeds 100; stopping compilation
648
649 The error happens because FreeType keeps an own copy of zlib-1.1.4
650 under `src/gzip'. When building `src/gzip/ftgzip.c' with
651 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
652
653 #include <zlib.h>
654
655 which correctly finds an external `zlib.h', but `zlib.h' itself has
656 a line
657
658 #include "zconf.h"
659
660 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
661 compiling the files in `src/gzip'.
662
663 * src/gzip/zconf.h: Rename to...
664 * src/gzip/ftzconf.h: ... this.
665 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
666
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +01006672016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
668
669 [autofit] Fix Emscripten crash (patch #9180).
670
671 Function calls through pointers must use a matching signature to
672 work on Emscripten, since such calls are dispatched through lookup
673 tables grouped by signature.
674
675 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
676 typedef.
677
Werner Lembergd949a3d2016-11-29 12:09:56 +01006782016-11-29 Werner Lemberg <wl@gnu.org>
679
Werner Lemberg1d28f692016-11-29 18:45:22 +0100680 [smooth] Revert previous commit. Already fixed with 6ca54c64.
681
6822016-11-29 Werner Lemberg <wl@gnu.org>
683
Werner Lembergd949a3d2016-11-29 12:09:56 +0100684 [smooth] Avoid conditional jump on uninitialized value (#49711).
685
686 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
687
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +01006882016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
689
690 [autofit] Code shuffling.
691
692 Also improve some comments and remove unused code.
693
694 No functional change.
695
696 * src/autofit/afloader.c (af_loader_load_g): Merged with...
697 (af_loader_load_glyph): ...this function.
698 Split off emboldening code into...
699 (af_loader_embolden_glyph_in_slot): ... this function.
700
Werner Lemberg78150502016-11-17 12:00:20 +01007012016-11-17 Werner Lemberg <wl@gnu.org>
702
703 Better support of LLP64 systems with gcc (and clang).
704
705 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
706
707 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
708 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
709
Werner Lembergdd26e3d2016-11-10 12:03:32 +01007102016-11-10 Werner Lemberg <wl@gnu.org>
711
712 Fix `lcd_weights' array size.
713
714 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
715
716 Reported by Nikolaus.
717
Werner Lemberg565db952016-11-06 12:33:51 +01007182016-11-06 Werner Lemberg <wl@gnu.org>
719
Werner Lemberge1ee5472016-11-06 12:39:05 +0100720 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
721
7222016-11-06 Werner Lemberg <wl@gnu.org>
723
Werner Lemberg1c6fd992016-11-06 12:37:55 +0100724 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
725
726 It's unavoidable to call the PNG engine, but to get the metrics it
727 is sufficient to read the PNG image's header only.
728
729 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
730 allocation of the glyph slot.
731 * src/sfnt/pngshim.h: Updated.
732 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
733 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
734
7352016-11-06 Werner Lemberg <wl@gnu.org>
736
Werner Lemberg565db952016-11-06 12:33:51 +0100737 [sfnt] Speed up `sbix' lookup.
738
739 This also fixes a bug introduced in 2016-10-01 which prevents
740 display of embedded bitmap fonts that use the `sbix' format.
741
742 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
743 offset also in `ebdt_size' and `ebdt_start', respectively. This
744 makes the test for an embedded bitmap data table succeed for this
745 format.
746
747 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
748 `ebdt_size' and `ebdt_start'
749 (tt_face_load_sbix_image): Ditto.
750
Werner Lemberg37e193e2016-11-06 12:32:51 +01007512016-11-06 Seigo Nonaka <nona@google.com>
752 Werner Lemberg <wl@gnu.org>
753
754 Introduce a way of quickly retrieving (embedded) bitmap metrics.
755
756 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
757 until the user calls `FT_Render_Glyph'. However, it always
758 allocates memory for bitmaps and copies or decodes the contents of a
759 bitmap glyph, which can be quite slow for PNG data.
760
761 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
762 macro.
763
764 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
765 FT_LOAD_BITMAP_METRICS_ONLY is used.
766
767 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
768 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
769 the glyph slot.
770 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
771 tt_face_load_sbit_image): Updated.
772
773 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
774 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
775
776 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
777 argument to control allocation of the glyph slot.
778 * src/pfr/pfrobjs (pfr_slot_load): Updated.
779
780 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
781
782 * docs/CHANGES: Updated.
783
7842016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +0100785
786 Synchronize with gnulib (#49448).
787
788 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
789 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
790 current version of `intprops.h'.
791 Other minor synchronization to reduce code differences between the
792 three files.
793
Behdad Esfahbodb72858c2016-11-03 06:41:00 +01007942016-11-03 Behdad Esfahbod <behdad@behdad.org>
795
796 [truetype] Clamp variation requests to valid range.
797
798 This is required by OpenType 1.8; it also avoids rounding surprises.
799
800 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
801 outside of the allowed range to always stay within the range instead
802 of producing an error.
803
Werner Lemberg328d6842016-10-29 00:18:56 +02008042016-10-29 Werner Lemberg <wl@gnu.org>
805
806 [truetype] Remove clang warnings.
807
808 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
809 loop counter handling.
810
811 * src/truetype/ttinterp.c: Updated.
812 (Ins_SCANTYPE): Use signed constant.
813 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
814
Werner Lembergddf38722016-10-27 07:27:27 +02008152016-10-27 Werner Lemberg <wl@gnu.org>
816
817 [truetype] Fix commit from 2014-11-24.
818
819 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
820
821 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
822 logic.
823
Werner Lemberg56140902016-10-26 08:10:59 +02008242016-10-26 Werner Lemberg <wl@gnu.org>
825
Werner Lemberg9c45ac32016-10-26 16:00:00 +0200826 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
827
828 * include/freetype/ftmm.h: Declare.
829
830 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
831 New typedef.
832 (MultiMasters): New MM service function `get_mm_blend'.
833 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
834 Update all callers.
835
836 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
837 FT_Get_Var_Blend_Coordinates): Implement.
838
839 * src/truetype/ttdriver.c: Updated.
840
841 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
842 `get_mm_blend' service.
843 * src/truetype/ttgxvar.h: Updated.
844
845 * src/type1/t1driver.c: Updated.
846
847 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
848 `get_mm_blend' service.
849 * src/type1/t1load.h: Updated.
850
851 * docs/CHANGES: Document.
852
8532016-10-26 Werner Lemberg <wl@gnu.org>
854
Werner Lemberg56140902016-10-26 08:10:59 +0200855 * src/type1/t1load.c (parse_subrs): Fix limit check.
856
857 Reported as
858
859 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
860
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -04008612016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
862
863 [cff] Correct cmap format reporting (#24819).
864
865 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
866 charmap instead of guessing its format and language.
867
Werner Lemberg57741402016-10-22 18:34:48 +02008682016-10-22 Werner Lemberg <wl@gnu.org>
869
Werner Lemberg50816742016-10-22 19:16:08 +0200870 [truetype] Fix SCANTYPE instruction (#49394).
871
872 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
873
8742016-10-22 Werner Lemberg <wl@gnu.org>
875
Werner Lemberg57741402016-10-22 18:34:48 +0200876 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
877
878 * src/sfnt/ttpost.c (load_format_25): We need at least a single
879 table entry.
880
Werner Lemberg7eeaf982016-10-14 08:58:17 +02008812016-10-14 Werner Lemberg <wl@gnu.org>
882
883 [truetype] Fix handling of `cvar' table data.
884
885 Reported as
886
887 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
888
889 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
890 indices.
891
Werner Lemberg92281222016-10-11 07:12:12 +02008922016-10-11 Werner Lemberg <wl@gnu.org>
893
Werner Lemberg9c54d122016-10-11 08:57:55 +0200894 [psaux] Fix handling of invalid flex subrs.
895
896 Problem reported as
897
898 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
899
900 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
901 <op_callothersubr>: Set `flex_state' after error checking.
902
9032016-10-11 Werner Lemberg <wl@gnu.org>
904
Werner Lemberg92281222016-10-11 07:12:12 +0200905 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
906
Werner Lembergd61b0422016-10-08 19:20:33 +02009072016-10-08 Werner Lemberg <wl@gnu.org>
908
Werner Lemberg6b354932016-10-08 20:26:59 +0200909 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
910
9112016-10-08 Werner Lemberg <wl@gnu.org>
912
Werner Lembergd61b0422016-10-08 19:20:33 +0200913 [cid] Fix parsing of subr offsets.
914
915 Bug introduced 2016-05-16.
916
917 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
918
Werner Lembergfcc0ee82016-10-01 20:12:25 +02009192016-10-01 Werner Lemberg <wl@gnu.org>
920
921 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
922
923 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
924 a bitmap data table.
925
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -04009262016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
927
928 [smooth] Remove impossibility.
929
930 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
931 (gray_convert_glyph): Remove impossible condition and clean up.
932
Werner Lembergbf902392016-09-29 13:04:46 +02009332016-09-29 Werner Lemberg <wl@gnu.org>
934
Werner Lemberg35764872016-09-30 08:11:52 +0200935 [pcf] Enrich family name with foundry name and glyph width info.
936
937 This is a very old patch from openSuSE (from 2006, submitted to
938 FreeType in 2011) that I forgot to apply.
939
940 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
941
942 Prepend the foundry name plus a space to the family name. There are
943 many fonts just called `Fixed' which look completely different, and
944 which have nothing to do with each other. When selecting `Fixed' in
945 KDE or Gnome one gets results that appear rather random, the style
946 changes often if one changes the size and one cannot select some
947 fonts at all.
948
949 We also check whether we have `wide' characters; all put together,
950 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
951
952 * src/pcf/pcfread.c (pcf_load_font): Implement it.
953
954 * docs/CHANGES: Document it.
955
9562016-09-29 Werner Lemberg <wl@gnu.org>
957
Werner Lemberg71b617d2016-09-29 19:53:39 +0200958 [ftfuzzer] Speed up.
959
960 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
961 check for embedded bitmaps if we have a non-default instance.
962
9632016-09-29 Werner Lemberg <wl@gnu.org>
964
Werner Lemberg2067c692016-09-29 19:49:07 +0200965 [truetype] Disallow bitmap strokes for non-default instances.
966
967 Also speed up access of default instances if GX variations are
968 active.
969
970 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
971 `is_default_instance' member.
972
973 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
974 `is_default_instance'.
975
976 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
977 load_truetype_glyph): Add test for default instance.
978 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
979
980 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
981 `is_default_instance'.
982
9832016-09-29 Werner Lemberg <wl@gnu.org>
984
Werner Lembergbf902392016-09-29 13:04:46 +0200985 [truetype] Clean up `TT_Face' structure.
986
987 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
988 fields `horz_metrics' and `vert_metrics'.
989 Update documentation.
990
991 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
992
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02009932016-09-28 Werner Lemberg <wl@gnu.org>
994
Werner Lemberg45cad2e2016-09-28 19:10:52 +0200995 More FT_ZERO usage.
996
997 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
998 s/ft_memset/FT_MEM_ZERO/.
999
1000 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
1001 s/ft_memset/FT_ARRAY_ZERO/.
1002
1003 * src/raster/ftraster.c (FT_ZERO): Define.
1004 (ft_black_new): Use it.
1005 * src/raster/ftrend1.c (ft_raster1_get_cbox):
1006 s/FT_MEM_ZERO/FT_ZERO/.
1007
1008 * src/smooth/ftgrays.c (FT_ZERO): Define.
1009 (gray_raster_new): Use it.
1010 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
1011 s/FT_MEM_ZERO/FT_ZERO/.
1012
10132016-09-28 Werner Lemberg <wl@gnu.org>
1014
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02001015 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
1016
Werner Lemberg0d945922016-09-27 08:44:31 +020010172016-09-27 Werner Lemberg <wl@gnu.org>
1018
Werner Lemberga3e2c832016-09-27 21:42:02 +02001019 [truetype] Trace number of executed opcodes.
1020
1021 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
1022
10232016-09-27 Werner Lemberg <wl@gnu.org>
1024
Werner Lemberge27b8a52016-09-27 21:21:01 +02001025 [truetype] Speed up `TT_Load_Glyph'.
1026
1027 This avoids additional calls to `tt_face_lookup_table' for the
1028 `glyf' table, which can be expensive.
1029
1030 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
1031 `glyf_offset' field to ...
1032 (TT_FaceRec): ... this structure.
1033 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
1034 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +02001035 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +02001036
10372016-09-27 Werner Lemberg <wl@gnu.org>
1038
Werner Lemberg0d945922016-09-27 08:44:31 +02001039 [truetype] Introduce dynamic limits for some bytecode opcodes.
1040
1041 This speeds up FreeType's handling of malformed fonts.
1042
1043 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
1044 of twilight points, the total number of negative jumps, and the
1045 total number of loops in LOOPCALL opcodes. The values are based on
1046 the number of points and entries in the CVT table.
1047 (Ins_JMPR): Test negative jump counter.
1048 (Ins_LOOPCALL): Test loopcall counter.
1049
1050 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
1051
1052 * docs/CHANGES: Updated.
1053
Werner Lembergd11e8b62016-09-25 15:32:04 +020010542016-09-25 Werner Lemberg <wl@gnu.org>
1055
Werner Lemberga7649632016-09-25 16:29:05 +02001056 [truetype] Sanitize only last entry of `loca' table.
1057
1058 Without this patch, a loca sequence like `0 100000 0 100000 ...',
1059 where value 100000 is larger than the `glyf' table size, makes
1060 FreeType handle the whole `glyf' table as a single glyph again and
1061 again, which is certainly invalid (and can be very slow, too).
1062
1063 * src/truetype/ttpload.c (tt_face_get_location): Implement.
1064 Improve tracing messages.
1065
10662016-09-25 Werner Lemberg <wl@gnu.org>
1067
Werner Lembergd11e8b62016-09-25 15:32:04 +02001068 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
1069
Werner Lemberg2f2e73c2016-09-24 22:42:58 +020010702016-09-24 Werner Lemberg <wl@gnu.org>
1071
1072 [autofit] Tracing fixes.
1073
1074 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
1075 functions only if we actually do tracing.
1076
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -040010772016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1078
1079 [smooth] Reduce divisions in the line renderer.
1080
1081 We don't need some divisions if a line segments stays within a single
1082 row or a single column of pixels.
1083
1084 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
1085 conditional.
1086
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -040010872016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1088
1089 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
1090
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -040010912016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
1092
1093 [smooth] Another tiny speed-up.
1094
1095 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
1096 (gray_record_cell): ... this function.
1097
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -040010982016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1099
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -04001100 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
1101
11022016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1103
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04001104 [smooth] Fix valgrind warning and reoptimize.
1105
1106 The algorithm calls `gray_set_cell' at the start of each new contour
1107 or when the contours cross the cell boundaries. Double-checking for
1108 that is wasteful.
1109
1110 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
1111 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
1112
Werner Lemberge421a0b2016-09-10 08:02:30 +020011132016-09-10 Werner Lemberg <wl@gnu.org>
1114
1115 [sfnt] Fix previous commit.
1116
1117 Problems reported as
1118
1119 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
1120
1121 We now map the strike index right before accessing the physical
1122 data, not earlier.
1123
1124 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
1125 after creating the map so that...
1126
1127 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
1128 can be used before and after setting up `sbit_strike_map'.
1129 (tt_face_set_sbit_strike): Revert change.
1130 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
1131
1132 * src/truetype/ttdriver.c (tt_size_select): Revert change.
1133
Werner Lembergd609b7c2016-09-09 22:11:07 +020011342016-09-09 Werner Lemberg <wl@gnu.org>
1135
Werner Lembergdeb26152016-09-09 22:13:33 +02001136 [ftfuzzer] Minor improvements.
1137
1138 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
1139 invalid strikes.
1140 Use better values for call to `FT_Set_Char_Size'.
1141
11422016-09-09 Werner Lemberg <wl@gnu.org>
1143
Werner Lembergd609b7c2016-09-09 22:11:07 +02001144 [sfnt] Don't provide (completely) broken strike data.
1145
1146 FreeType tries to sanitize strike header data; we now reject
1147 completely broken ones.
1148
1149 * include/freetype/internal/tttypes.h (TT_FaceRec): New
1150 `sbit_strike_map' array pointer.
1151
1152 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
1153 width or height would be zero.
1154 Add tracing message in case of error.
1155
1156 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
1157 only using (more or less) valid strike header data for
1158 FT_Face's `available_sizes' array.
1159 (sfnt_done_face): Updated.
1160
1161 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
1162 `sbit_strike_map'.
1163 (tt_face_load_strike_metrics): Improve tracing.
1164
1165 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
1166
Werner Lemberg9749f262016-09-08 07:51:03 +020011672016-09-08 Werner Lemberg <wl@gnu.org>
1168
Werner Lembergd2d59682016-09-08 09:04:32 +02001169 * Version 2.7 released.
1170 =======================
1171
1172
1173 Tag sources with `VER-2-7'.
1174
1175 * docs/VERSION.TXT: Add entry for version 2.7.
1176
1177 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1178 builds/windows/vc2005/index.html,
1179 builds/windows/vc2008/freetype.vcproj,
1180 builds/windows/vc2008/index.html,
1181 builds/windows/vc2010/freetype.vcxproj,
1182 builds/windows/vc2010/index.html,
1183 builds/windows/visualc/freetype.dsp,
1184 builds/windows/visualc/freetype.vcproj,
1185 builds/windows/visualc/index.html,
1186 builds/windows/visualce/freetype.dsp,
1187 builds/windows/visualce/freetype.vcproj,
1188 builds/windows/visualce/index.html,
1189 builds/wince/vc2005-ce/freetype.vcproj,
1190 builds/wince/vc2005-ce/index.html,
1191 builds/wince/vc2008-ce/freetype.vcproj,
1192 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
1193
1194 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
1195 (FREETYPE_PATCH): Set to 0.
1196
1197 * builds/unix/configure.raw (version_info): Set to 18:6:12.
1198 * CMakeLists.txt (VERSION_MINOR): Set to 7.
1199 (VERSION_PATCH): Set to 0.
1200
1201 * docs/CHANGES: Updated.
1202
12032016-09-08 Werner Lemberg <wl@gnu.org>
1204
Werner Lembergb1e7b682016-09-08 08:56:34 +02001205 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
1206
1207 This fixes the `multi' build.
1208
12092016-09-08 Werner Lemberg <wl@gnu.org>
1210
Werner Lemberg9749f262016-09-08 07:51:03 +02001211 [autofit] Another improvement to Armenian support.
1212
1213 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
1214
1215 * src/autofit/afscript.h: Use better suited characters to derive
1216 default stem widths.
1217
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -040012182016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
1219
1220 * src/smooth/ftgrays.c (gray_hline): Microptimize.
1221
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -040012222016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1223
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -04001224 [smooth] Operate in absolute bitmap coordinates.
1225
1226 Simpler bitmap addressing improves performance by 1.5%.
1227
1228 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
1229 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
1230 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
1231
12322016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1233
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04001234 [smooth] Improve contour start (take 2).
1235
1236 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
1237 instead of...
1238 (gray_start_cell): ... this function, which is removed.
1239 (gray_convert_glyph): Make initial y-coordinate invalid.
1240
Werner Lembergebbb8b22016-09-06 16:28:57 +020012412016-09-06 Werner Lemberg <wl@gnu.org>
1242
1243 [type1] MM fonts support exactly zero named instances (#48748).
1244
1245 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
1246
Jonathan Kewa15133e2016-09-06 06:33:36 +020012472016-09-06 Jonathan Kew <jfkthame@gmail.com>
1248
1249 [cff] Fix uninitialized memory.
1250
1251 Problem reported as
1252
1253 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
1254
1255 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
1256 array to handle a `get' opcode without a previous `put'.
1257
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -040012582016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1259
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -04001260 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
1261
12622016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1263
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04001264 [smooth] Improve contour start.
1265
1266 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
1267 instead of...
1268 (gray_start_cell): ... this function, which is removed.
1269
Werner Lembergc9adf1a2016-09-05 07:32:37 +020012702016-09-05 Werner Lemberg <wl@gnu.org>
1271
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +02001272 [cff] Fix memory initialization.
1273
1274 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
1275 variants of FreeType's memory allocation macros don't do zeroing.
1276
12772016-09-05 Werner Lemberg <wl@gnu.org>
1278
Werner Lemberg1c8bb632016-09-05 08:13:42 +02001279 [ftrandom] Minor improvements.
1280
1281 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
1282 500.
1283
1284 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
1285 directories to ...
1286 (INCLUDES): ... this new variable.
1287 (LDFLAGS): New variable.
1288 (ftrandom.o, ftrandom): Updated.
1289
12902016-09-05 Werner Lemberg <wl@gnu.org>
1291
Werner Lembergc9adf1a2016-09-05 07:32:37 +02001292 [autofit] Improve Armenian support.
1293
1294 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
1295
1296 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
1297 selection of characters.
1298
1299 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1300
Werner Lemberg4b28f6a2016-09-04 19:05:45 +020013012016-09-04 Werner Lemberg <wl@gnu.org>
1302
1303 [ftrandom] Improve Makefile.
1304
1305 It now supports both a normal build (`./configure && make') and a
1306 development build (`make devel').
1307
1308 * src/tools/ftrandom/Makefile (VPATH): Set it so that
1309 `libfreetype.a' gets searched in both `objs' (for the development
1310 build) and `objs/.libs' (for a normal build which uses libtool).
1311 (LIBS): Add missing libraries.
1312 (ftrandom.o): New rule.
1313 (ftrandom): Use automatic variables.
1314
Werner Lembergf0fa7a62016-09-03 06:33:36 +020013152016-09-03 Werner Lemberg <wl@gnu.org>
1316
Werner Lemberg4e659d72016-09-03 18:14:00 +02001317 [truetype] More fixes for handling of GX deltas.
1318
1319 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
1320
1321 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
1322 sanity test for glyph variation array header size.
1323 Always set stream position before reading packed x and y deltas.
1324 Fix thinko w.r.t. `localpoints' array.
1325
13262016-09-03 Werner Lemberg <wl@gnu.org>
1327
Werner Lembergca8e98d2016-09-03 13:06:16 +02001328 [ftrandom] Various fixes.
1329
1330 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
1331 default.
1332 (error_fraction): Make it of type `double' to work as advertized –
1333 this was completely broken.
1334 Update all related code.
1335 (error_count, fcnt): Make it unsigned to fix compiler warnings.
1336 Update all related code.
1337 (fontlist): Change `len' member to `long' to fix compiler warnings.
1338 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
1339 unused variables.
1340 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
1341 (ExecuteTest): Ditto.
1342 Call `FT_Done_FreeType'.
1343 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
1344 int'.
1345 (usage): Improve output.
1346 (main): Fix compiler warnings.
1347
1348 * src/tools/ftrandom/README: Updated.
1349
13502016-09-03 Werner Lemberg <wl@gnu.org>
1351
Werner Lembergb98dfda2016-09-03 08:20:31 +02001352 [base] Avoid negative bitmap stroke dimensions (#48985).
1353
1354 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
1355 actually successful. For example, this can fail for value
1356 -32768 if the type is `signed short'. If there are problems,
1357 disable the stroke.
1358
13592016-09-03 Werner Lemberg <wl@gnu.org>
1360
Werner Lembergf0fa7a62016-09-03 06:33:36 +02001361 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
1362
1363 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
1364
Werner Lembergd8ef7262016-09-02 23:27:50 +020013652016-09-02 Werner Lemberg <wl@gnu.org>
1366
Werner Lembergd87bb912016-09-02 23:56:27 +02001367 [unix] Enable 64bit support in file system access (#48962).
1368
1369 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
1370
13712016-09-02 Werner Lemberg <wl@gnu.org>
1372
Werner Lembergd8ef7262016-09-02 23:27:50 +02001373 [sfnt] Avoid left shift of negative value (#48980).
1374
1375 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
1376 constant.
1377
13782016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +02001379
1380 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
1381
Werner Lemberg7a13dc02016-09-02 08:24:01 +020013822016-09-02 Werner Lemberg <wl@gnu.org>
1383
1384 Some preparations for the next release.
1385
1386 * include/freetype/config/ftoption.h
1387 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
1388
1389 * docs/CHANGES: Updated.
1390
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -040013912016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
1392
1393 [smooth] Simplify span rendering more.
1394
1395 It turns out that there is significant cost associated with `FT_Span'
1396 creation and calls to `gray_render_span' because it happerns so
1397 frequently. This removes these steps from our internal use but leaves
1398 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
1399 is about 5%.
1400
1401 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
1402 migrated to...
1403 (gray_hline): ... here.
1404
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -040014052016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
1406
1407 [smooth] Streamline pixmap drawing a bit more.
1408
1409 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04001410 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04001411
1412 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
1413
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -040014142016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
1415
1416 [smooth] Streamline pixmap drawing.
1417
1418 This gives 2% speed improvement in rendering simple glyphs.
1419
1420 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
1421 pointer to its bottom-left and pitch to be used in...
1422 (gray_TWorker): ... here.
1423 (gray_render_span): Move pixmap flow check from here...
1424 (gray_raster_render): .. to here.
1425
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -040014262016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
1427
1428 [smooth] Reduce stack of band boundaries.
1429
1430 * src/smooth/ftgrays.c (gray_TBand): Removed.
1431 (gray_convert_glyph): Updated to stack band boundaries concisely.
1432
Werner Lembergf3e71ba2016-08-26 10:31:30 +020014332016-08-26 Werner Lemberg <wl@gnu.org>
1434
Werner Lemberg57aa8392016-08-26 11:59:50 +02001435 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
1436
14372016-08-26 Werner Lemberg <wl@gnu.org>
1438
Werner Lemberg3c61a2f2016-08-26 11:50:09 +02001439 [cid] Fix commit from 2016-05-16.
1440
1441 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
1442
14432016-08-26 Werner Lemberg <wl@gnu.org>
1444
Werner Lembergf3e71ba2016-08-26 10:31:30 +02001445 [sfnt] Cache offset and size to bitmap data table.
1446
1447 This commit avoids `EBDT' and friends being looked up again and
1448 again while loading a single embedded bitmap.
1449
1450 * include/freetype/internal/tttypes.h (TT_FaceRec)
1451 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
1452 `ebdt_size'.
1453
1454 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
1455 (tt_face_load_sbit): ... this function; also store the table size
1456 and offset.
1457
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -040014582016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
1459
1460 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
1461
Werner Lemberga660e3d2016-08-26 00:23:27 +020014622016-08-26 Werner Lemberg <wl@gnu.org>
1463
1464 [type1] Fix heap buffer overflow.
1465
1466 Reported as
1467
1468 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
1469
1470 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
1471 contain glyph names.
1472
Werner Lemberg327f2e32016-08-25 12:46:08 +020014732016-08-25 Werner Lemberg <wl@gnu.org>
1474
Werner Lemberg69ce9732016-08-25 19:49:52 +02001475 [sfnt] Fix previous commit (#48901).
1476
1477 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
1478
14792016-08-25 Werner Lemberg <wl@gnu.org>
1480
Werner Lembergacd18792016-08-25 17:12:46 +02001481 [sfnt] Speed up handling of invalid format 4 cmaps.
1482
1483 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
1484 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
1485
14862016-08-25 Werner Lemberg <wl@gnu.org>
1487
Werner Lemberg327f2e32016-08-25 12:46:08 +02001488 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
1489
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -040014902016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1491
1492 [smooth] Simplify span rendering.
1493
1494 This removes unnecessary complexity of span merging and buffering.
1495 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04001496 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04001497
1498 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
1499 (gray_TWorker): Remove span buffer and related fields.
1500 (gray_sweep, gray_hline): Updated.
1501
1502 * include/freetype/ftimage.h: Remove documentation note about
1503 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
1504
Werner Lembergcf4224a2016-08-16 06:44:23 +020015052016-08-16 Werner Lemberg <wl@gnu.org>
1506
Werner Lemberga4c2a312016-08-22 19:32:34 +02001507 [truetype] Fix `MPS' instruction.
1508
1509 According to Greg Hitchcock, MPS in DWrite really returns the point
1510 size.
1511
1512 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
1513
1514 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
1515
1516 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
1517 member.
1518
1519 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
1520 (Ins_MPS): Fix instruction.
1521
15222016-08-16 Werner Lemberg <wl@gnu.org>
1523
Werner Lemberg8521ad92016-08-16 13:44:38 +02001524 [lzw] Optimize last commit.
1525
1526 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
1527 conditional clause.
1528
15292016-08-16 Werner Lemberg <wl@gnu.org>
1530
Werner Lemberg548f68d2016-08-16 09:46:40 +02001531 [lzw] Avoid invalid left shift.
1532
Werner Lemberg6df68332016-08-16 09:50:07 +02001533 Reported as
1534
1535 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
1536
Werner Lemberg548f68d2016-08-16 09:46:40 +02001537 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
1538
15392016-08-16 Werner Lemberg <wl@gnu.org>
1540
Werner Lemberg8d7b9192016-08-16 08:07:58 +02001541 [lzw] Avoid buffer overrun.
1542
1543 Reported as
1544
1545 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
1546
1547 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
1548 underflow.
1549
15502016-08-16 Werner Lemberg <wl@gnu.org>
1551
Werner Lembergcf4224a2016-08-16 06:44:23 +02001552 [truetype] Fix compiler warning.
1553
1554 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
1555
Werner Lemberg248f5622016-08-13 06:53:53 +020015562016-08-13 Werner Lemberg <wl@gnu.org>
1557
1558 [winfonts] Avoid zero bitmap width and height.
1559
1560 Reported as
1561
1562 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
1563
1564 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
1565 (FNT_Load_Glyph): Check for zero pitch.
1566
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +020015672016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1568
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -04001569 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
1570
15712016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1572
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -04001573 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
1574
15752016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1576
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02001577 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
1578
Peter Klotz3b37bfc2016-08-10 22:38:08 -040015792016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
1580
1581 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
1582
Werner Lemberg5224aae2016-08-10 19:47:29 +020015832016-08-10 Werner Lemberg <wl@gnu.org>
1584
1585 [sfnt] Use correct type for `italicAngle' field (#48732).
1586
1587 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
1588
Werner Lemberg53059f92016-08-07 09:01:33 +020015892016-08-06 Jon Spencer <jon@jonspencer.ca>
1590
1591 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
1592
1593 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
1594 advance value from the font table and then scales it by the
1595 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
1596 set that value for bitmap fonts and the advance gets scaled to zero.
1597
1598 Taken from
1599
1600 https://github.com/behdad/harfbuzz/issues/252
1601
1602 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
1603 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
1604
16052016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02001606
1607 [truetype] Fix GX variation handling of composites.
1608
1609 * src/truetype/ttgload.c (load_truetype_glyph)
1610 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
1611
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040016122016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1613
1614 [smooth] Minor refactoring.
1615
1616 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
1617 Updated.
1618
Werner Lembergfae4ec02016-07-29 06:43:32 +020016192016-07-29 Werner Lemberg <wl@gnu.org>
1620
1621 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
1622
1623 Since 2016-05-16 we detect infinite recursion directly.
1624
1625 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
1626 `maxComponentDepth'.
1627 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
1628 `maxComponentDepth' is not valid. Instead, simply adjust its value
1629 and emit a tracing message.
1630
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020016312016-07-26 Werner Lemberg <wl@gnu.org>
1632
1633 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
1634
1635 No functional change.
1636
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020016372016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
1638
1639 [truetype] Record the end of IDEFs.
1640
1641 To match the logic in FDEF. The value of the end is only used for
1642 bound-checking in `Ins_JMPR', so it may not have been obvious that
1643 it was not recorded. Tested (as part of Font Validator 2.0) all the
1644 fonts on Fedora and did not see any change.
1645
1646 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
1647
Werner Lemberge69f34b2016-07-19 07:06:19 +020016482016-07-19 Werner Lemberg <wl@gnu.org>
1649
Werner Lemberg7f631052016-07-19 21:35:58 +02001650 [truetype] Sanitizer fix, second try.
1651
1652 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1653 tests and use only one slot more.
1654
16552016-07-19 Werner Lemberg <wl@gnu.org>
1656
Werner Lemberge69f34b2016-07-19 07:06:19 +02001657 [truetype] Sanitizer fix.
1658
1659 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
1660 to fix nested loops.
1661
Werner Lemberga3b70d72016-07-18 06:23:36 +020016622016-07-18 Werner Lemberg <wl@gnu.org>
1663
1664 [truetype] Make GETDATA work only for GX fonts.
1665
1666 * src/truetype/ttinterp.c (opcode_name): Updated.
1667 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
1668 (TT_RunIns): Updated.
1669
16702016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02001671
Werner Lemberg8c930132016-07-17 22:40:31 +02001672 [truetype] Add support for Apple's
1673
1674 GETDATA[], opcode 0x92
1675
1676 bytecode instruction. It always returns 17, and we have absolutely
1677 no idea what it is good for...
1678
1679 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
1680 (Ins_GETDATA): New function.
1681 (TT_RunIns): Add it.
1682
16832016-07-16 Werner Lemberg <wl@gnu.org>
1684
Werner Lemberge0843602016-07-16 18:46:28 +02001685 [truetype] Add bytecode support for GX variation fonts.
1686
1687 This commit implements undocumented (but confirmed) stuff from
1688 Apple's old bytecode engine.
1689
1690 GETVARIATION[], opcode 0x91
1691 This opcode pushes normalized variation coordinates for all axes
1692 onto the stack (in 2.14 format). Coordinate of first axis gets
1693 pushed first.
1694
1695 GETINFO[], selector bit 3
1696 If GX variation support is enabled, bit 10 of the result is set
1697 to 1.
1698
1699 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
1700 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
1701 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
1702 bit 3, checking support for variation glyph hinting.
1703 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
1704 to implement opcode 0x91.
1705 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
1706
17072016-07-16 Werner Lemberg <wl@gnu.org>
1708
Werner Lemberg32a32062016-07-16 16:39:26 +02001709 [truetype] Fix GETINFO bytecode instruction.
1710
1711 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
1712 stretching information.
1713
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020017142016-07-16 Behdad Esfahbod <behdad@behdad.org>
1715
1716 [truetype] Make all glyphs in `Zycon' GX font work.
1717
1718 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1719 tests.
1720
Werner Lemberga3b61252016-07-16 08:16:16 +020017212016-07-16 Werner Lemberg <wl@gnu.org>
1722
1723 [truetype] Fix GX delta tracing.
1724
1725 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
1726 relative point movements.
1727
17282016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02001729
1730 [truetype] More fixes for GX.
1731
1732 This finally fixes the rendering of the cyclist and the lizard in
1733 the `Zycon' font.
1734
1735 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
1736 index is always cumulative.
1737
1738 (tt_handle_deltas): Rename to...
1739 (tt_interpolate_deltas): ... This.
1740 Add new parameter for output point array.
1741 Update caller.
1742
1743 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
1744 the intermediate results of `tt_interpolate_deltas' that are to be
1745 added to `outline->points'.
1746
Werner Lembergaafff572016-07-16 06:41:39 +020017472016-07-15 Werner Lemberg <wl@gnu.org>
1748
1749 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
1750
1751 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
1752
1753 Reported by Alexei.
1754
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020017552016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
1756
1757 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
1758
1759 Problem reported by Hin-Tak Leung.
1760
Werner Lemberg894c0222016-07-15 10:23:11 +020017612016-07-15 Werner Lemberg <wl@gnu.org>
1762
Werner Lemberg1831e6f2016-07-15 10:35:32 +02001763 [autofit] Update and improve segment and edge tracing.
1764
1765 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
1766 `delta' also.
1767 Don't show first point of segment as a replacement for `pos'; this
1768 is (a) misleading, since the difference to `pos' can be almost
1769 arbitrarily large in corner cases, and (b) it is better to have all
1770 segment data in font units instead of a single value given in output
1771 space coordinates.
1772 Improve layout.
1773 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
1774 values for convenience.
1775 Improve layout.
1776
17772016-07-15 Werner Lemberg <wl@gnu.org>
1778
Werner Lemberg894c0222016-07-15 10:23:11 +02001779 [autofit] For edges, reject segments wider than 1px (#41334).
1780
1781 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
1782
1783 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
1784 `delta'.
1785 (af_latin_hints_compute_edges): Reject segments with a delta larger
1786 than 0.5px.
1787
Werner Lemberg631e2182016-07-14 06:25:05 +020017882016-07-14 Werner Lemberg <wl@gnu.org>
1789
Werner Lembergff655432016-07-14 15:01:55 +02001790 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
1791
17922016-07-14 Werner Lemberg <wl@gnu.org>
1793
Werner Lembergee3f36f2016-07-14 10:25:20 +02001794 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
1795
1796 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
1797
17982016-07-14 Werner Lemberg <wl@gnu.org>
1799
Werner Lemberg631e2182016-07-14 06:25:05 +02001800 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
1801
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020018022016-07-14 Behdad Esfahbod <behdad@behdad.org>
1803
1804 [truetype] Fix gxvar delta interpolation.
1805
1806 The coordinates of the base font should be used for interpolation
1807 purposes, NOT the current points (i.e., the result of accumulation
1808 of previous deltas).
1809
1810 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
1811 `points_org' before looping over all tuples.
1812
Werner Lembergf6aa0892013-05-10 07:58:47 +02001813
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001814----------------------------------------------------------------------------
1815
Werner Lemberg8160b202016-09-08 08:42:10 +02001816Copyright 2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001817David Turner, Robert Wilhelm, and Werner Lemberg.
1818
1819This file is part of the FreeType project, and may only be used, modified,
1820and distributed under the terms of the FreeType project license,
1821LICENSE.TXT. By continuing to use, modify, or distribute this file you
1822indicate that you have read the license and understand and accept it
1823fully.
1824
1825
1826Local Variables:
1827version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00001828coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001829End: