blob: d585d365d612d9a91bd4dbcab93bb5ef849d7cb4 [file] [log] [blame]
Dave Arnold41533b92016-12-15 00:00:45 +010012016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold010e0612016-12-15 11:22:15 +01002
Dave Arnoldabd58582016-12-15 12:17:22 +01003 [cff] Extend number parsing.
4
5 The forthcoming CFF2 support needs a dynamic parsing limit.
6
7 * src/cff/cffparse.c (cff_parse_num, do_fixed, cff_parse_fixed,
8 cff_parse_fixed_scaled, cff_parse_fixed_dynamic): Add argument for
9 parser.
10 (cff_parse_font_matrix, cff_parse_font_bbox, cff_parse_private_dict,
11 cff_parse_multiple_master, cff_parse_cid_ros, cff_parser_run): Updated.
12
13 * src/cff/cffparse.h (cff_parse_num): Export locally.
14
152016-12-15 Dave Arnold <darnold@adobe.com>
16
Dave Arnold010e0612016-12-15 11:22:15 +010017 [cff] Implement dynamic stack size for Adobe engine.
18
19 This also adds `cf2_stack_setReal' and `cf2_stack_pop', needed for
20 the forthcoming CFF2 support.
21
22 * src/cff/cf2stack.c (cf2_stack_init): Add argument for stack size.
23 (cf2_stack_free): Deallocate stack.
24 (cf2_stack_count, cf2_stack_pushInt, cf2_stack_pushFixed,
25 cf2_stack_popInt, cf2_stack_popFixed, cf2_stack_getReal,
26 cf2_stack_clear): Updated.
27 (cf2_stack_setReal, cf2_stack_pop): New functions.
28
29 * src/cff/cf2stack.h (CF2_Stack): Add `stackSize' member.
30 Update function declarations.
31
32 * src/cff/cf2intrp.c (cf2_interpT2CharString): Updated.
33
34 * src/cff/cffparse.c (cff_parser_init): Add parameter for stack
35 size; return error code.
36 (cff_parser_done): New function.
37 (cff_parser_run): Updated.
38
39 * src/cff/cffparse.h (CFF_Parser): Add `stackSize' member and make
40 `stack' a pointer.
41 Update function declarations.
42
43 * src/cff/cffload.c (cff_load_private_dict, cff_subfont_load):
44 Updated.
45
462016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold41533b92016-12-15 00:00:45 +010047 Werner Lemberg <wl@gnu.org>
48
49 [cff] Code shuffling.
50
51 * src/cff/cfftypes.h (CFF_Font): Add `library' and `base_offset'
52 fields.
53
54 * src/cff/cffload.c (cff_subfont_load): Change last argument to
55 `CFF_Font'
56 Split off parsing of private dictionary into...
57 (cff_load_private_dict): ...this new function.
58 (cff_font_load): Updated.
59
Werner Lembergab22b432016-12-14 18:34:55 +0100602016-12-14 Werner Lemberg <wl@gnu.org>
61
Werner Lemberg09183252016-12-14 20:44:11 +010062 [sfnt, truetype] Add framework for Metrics Variations service.
63
64 No effect yet; service functions will be implemented later on.
65
66 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
67
68 * include/freetype/internal/services/svmetric.h: New file.
69
70 * include/freetype/internal/ftserv.h
71 (FT_SERVICE_METRICS_VARIATIONS_H): New macro.
72
73 * include/freetype/internal/tttypes.h (TT_Face): New field `var'.
74
75 * src/sfnt/sfobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
76 (sfnt_init_face): Initialize `face->var'.
77
78 * src/truetype/ttdriver.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
79 (tt_service_metrics_variations): New service.
80 (tt_services): Updated.
81
82 * src/truetype/ttpic.h: Updated.
83
842016-12-14 Werner Lemberg <wl@gnu.org>
85
Werner Lembergc628a7d2016-12-14 19:31:42 +010086 [cff] Add Multiple Masters service.
87
88 The code simply uses the MM functions from the `truetype' module.
89
90 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
91
92 * include/freetype/internal/tttypes.h (TT_Face): New field `mm'.
93
94 * src/cff/cffdrivr.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
95 (cff_set_mm_blend, cff_get_mm_blend, cff_get_mm_var,
96 cff_set_var_design, cff_get_var_design): New functions.
97 (cff_service_multi_masters): New service.
98 (cff_services): Updated.
99
100 * src/cff/cffload.c (cff_get_var_blend, cff_done_blend): New
101 functions.
102 * src/cff/cffload.h: Updated.
103
104 * src/cff/cffpic.h (CFF_SERVICE_MULTI_MASTERS_GET): New macro.
105
106 * src/sfnt/sfobjs.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
107 (sfnt_init_face): Initialize `face->mm'.
108
1092016-12-14 Werner Lemberg <wl@gnu.org>
110
Werner Lemberga7dc0c32016-12-14 18:54:21 +0100111 Extend functionality of `ft_module_get_service'.
112
113 It can now differentiate between local and global searches.
114
115 * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
116 (FT_Get_TrueType_Engine_Type): Updated.
117
118 * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
119
120 * include/freetype/internal/ftobjs.h: Updated.
121 * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
122 Updated.
123
1242016-12-14 Werner Lemberg <wl@gnu.org>
125
Werner Lembergab22b432016-12-14 18:34:55 +0100126 * src/truetype/ttgxvar.c (tt_get_var_blend): Fix compiler warning.
127
Werner Lemberg4e075162016-12-14 18:25:44 +01001282016-12-14 Dave Arnold <darnold@adobe.com>
129 Werner Lemberg <wl@gnu.org>
130
131 [sfnt, cff] Minor preparations.
132
133 * include/freetype/tttags.h (TTAG_CFF2, TTAG_HVAR, TTAG_MVAR,
134 TTAG_VVAR): New SFNT table tags.
135
136 * src/cff/cf2fixed.h (CF2_FIXED_ONE, CF2_FIXED_EPSILON): Add cast.
137
Werner Lemberg27bdb362016-12-10 09:56:03 +01001382016-12-10 Werner Lemberg <wl@gnu.org>
139
Werner Lemberg8b174b42016-12-11 09:16:52 +0100140 [truetype, type1] Add `get_var_blend' to MM service.
141
142 For internal use; we want to share code between the forthcoming CFF2
143 support and TrueType.
144
145 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
146 New typedef.
147 (MultiMasters): Add `get_var_blend'.
148 (FT_Service_MultiMasters): Updated.
149
150 * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
151 * src/truetype/ttgxvar.h: Updated.
152
153 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
154 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
155
1562016-12-10 Werner Lemberg <wl@gnu.org>
157
Werner Lemberg27bdb362016-12-10 09:56:03 +0100158 [truetype, type1] Add `done_blend' to MM service.
159
160 For internal use; we want to share code between the forthcoming CFF2
161 support and TrueType.
162
163 * include/freetype/internal/services/svmm.h (FT_Done_Blend_Func):
164 New typedef.
165 (MultiMasters): Add `done_blend'.
166 (FT_Service_MultiMasters): Updated.
167
168 * src/truetype/ttgxvar.c (tt_done_blend): Use `TT_Face' as argument.
169 * src/truetype/ttgxvar.h: Updated.
170
171 * src/truetype/ttobjs.c (TT_Face_Done): Updated.
172
173 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
174 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
175
Werner Lemberg3205a442016-12-09 06:55:34 +01001762016-12-09 Werner Lemberg <wl@gnu.org>
177
178 [sfnt] Revert change from 2016-12-08.
179
180 I missed the functionality of `ft_module_get_service', which makes
181 the change unnecessary.
182
Werner Lemberg29aa9572016-12-08 08:59:34 +01001832016-12-08 Werner Lemberg <wl@gnu.org>
184
Werner Lemberg4191b772016-12-08 22:33:46 +0100185 Add framework to support services with 8 functions.
186
187 We will need this for CFF variation font support.
188
189 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC8):
190 New macro.
191
1922016-12-08 Werner Lemberg <wl@gnu.org>
193
Werner Lemberg29aa9572016-12-08 08:59:34 +0100194 [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
195
196 CFF2 fonts will need access to those two functions.
197
198 * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
199 (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
200 (FT_DEFINE_SFNT_INTERFACE): Updated.
201
202 * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
203 Fix signatures to exactly correspond to the glyph dict service
204 function typedefs.
205 (sfnt_interface): Updated.
206
Dave Arnoldbcae6572016-12-05 22:08:15 +01002072016-12-06 Dave Arnold <darnold@adobe.com>
208
209 Add `FT_Get_Var_Design_Coordinates' function.
210
211 Note that the low-level functions aren't implemented yet.
212
213 * include/freetype/ftmm.h: Declare.
214
215 * include/freetype/internal/services/svmm.h
216 (FT_Get_Var_Design_Func): New typedef.
217 (MultiMasters): New MM service function `get_var_design'.
218 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
219 Update all callers.
220
221 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
222
223 * src/truetype/ttdriver.c: Updated.
224
225 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
226 handle `get_var_design' service.
227 * src/truetype/ttgxvar.h: Updated.
228
229 * src/type1/t1driver.c: Updated.
230
231 * src/type1/t1load.c (T1_Get_Var_Design): New dummp function to
232 handle `get_var_design' service.
233 * src/type1/t1load.h: Updated.
234
Werner Lembergc0fae7d2016-12-06 11:13:19 +01002352016-12-06 Werner Lemberg <wl@gnu.org>
236
237 * src/type1/t1load.c (parse_subrs): Fix memory leak.
238
239 The `subrs' keyword might erroneously occur multiple times.
240
241 Reported as
242
243 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
244
Werner Lemberg602be7c2016-12-01 11:36:37 +01002452016-12-01 Werner Lemberg <wl@gnu.org>
246
247 [gzip] Improve building with external zlib (#49673).
248
249 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
250 the following error.
251
252 ftgzip.c
253 zlib-1.2.8\zlib.h(86): error C2061:
254 syntax error: identifier 'z_const'
255 zlib-1.2.8\zlib.h(94): error C2054:
256 expected '(' to follow 'z_const'
257 zlib-1.2.8\zlib.h(94): error C2085:
258 'msg': not in formal parameter list
259 ...
260 zlib-1.2.8\zlib.h(877): fatal error C1003:
261 error count exceeds 100; stopping compilation
262
263 The error happens because FreeType keeps an own copy of zlib-1.1.4
264 under `src/gzip'. When building `src/gzip/ftgzip.c' with
265 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
266
267 #include <zlib.h>
268
269 which correctly finds an external `zlib.h', but `zlib.h' itself has
270 a line
271
272 #include "zconf.h"
273
274 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
275 compiling the files in `src/gzip'.
276
277 * src/gzip/zconf.h: Rename to...
278 * src/gzip/ftzconf.h: ... this.
279 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
280
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +01002812016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
282
283 [autofit] Fix Emscripten crash (patch #9180).
284
285 Function calls through pointers must use a matching signature to
286 work on Emscripten, since such calls are dispatched through lookup
287 tables grouped by signature.
288
289 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
290 typedef.
291
Werner Lembergd949a3d2016-11-29 12:09:56 +01002922016-11-29 Werner Lemberg <wl@gnu.org>
293
Werner Lemberg1d28f692016-11-29 18:45:22 +0100294 [smooth] Revert previous commit. Already fixed with 6ca54c64.
295
2962016-11-29 Werner Lemberg <wl@gnu.org>
297
Werner Lembergd949a3d2016-11-29 12:09:56 +0100298 [smooth] Avoid conditional jump on uninitialized value (#49711).
299
300 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
301
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +01003022016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
303
304 [autofit] Code shuffling.
305
306 Also improve some comments and remove unused code.
307
308 No functional change.
309
310 * src/autofit/afloader.c (af_loader_load_g): Merged with...
311 (af_loader_load_glyph): ...this function.
312 Split off emboldening code into...
313 (af_loader_embolden_glyph_in_slot): ... this function.
314
Werner Lemberg78150502016-11-17 12:00:20 +01003152016-11-17 Werner Lemberg <wl@gnu.org>
316
317 Better support of LLP64 systems with gcc (and clang).
318
319 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
320
321 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
322 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
323
Werner Lembergdd26e3d2016-11-10 12:03:32 +01003242016-11-10 Werner Lemberg <wl@gnu.org>
325
326 Fix `lcd_weights' array size.
327
328 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
329
330 Reported by Nikolaus.
331
Werner Lemberg565db952016-11-06 12:33:51 +01003322016-11-06 Werner Lemberg <wl@gnu.org>
333
Werner Lemberge1ee5472016-11-06 12:39:05 +0100334 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
335
3362016-11-06 Werner Lemberg <wl@gnu.org>
337
Werner Lemberg1c6fd992016-11-06 12:37:55 +0100338 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
339
340 It's unavoidable to call the PNG engine, but to get the metrics it
341 is sufficient to read the PNG image's header only.
342
343 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
344 allocation of the glyph slot.
345 * src/sfnt/pngshim.h: Updated.
346 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
347 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
348
3492016-11-06 Werner Lemberg <wl@gnu.org>
350
Werner Lemberg565db952016-11-06 12:33:51 +0100351 [sfnt] Speed up `sbix' lookup.
352
353 This also fixes a bug introduced in 2016-10-01 which prevents
354 display of embedded bitmap fonts that use the `sbix' format.
355
356 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
357 offset also in `ebdt_size' and `ebdt_start', respectively. This
358 makes the test for an embedded bitmap data table succeed for this
359 format.
360
361 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
362 `ebdt_size' and `ebdt_start'
363 (tt_face_load_sbix_image): Ditto.
364
Werner Lemberg37e193e2016-11-06 12:32:51 +01003652016-11-06 Seigo Nonaka <nona@google.com>
366 Werner Lemberg <wl@gnu.org>
367
368 Introduce a way of quickly retrieving (embedded) bitmap metrics.
369
370 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
371 until the user calls `FT_Render_Glyph'. However, it always
372 allocates memory for bitmaps and copies or decodes the contents of a
373 bitmap glyph, which can be quite slow for PNG data.
374
375 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
376 macro.
377
378 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
379 FT_LOAD_BITMAP_METRICS_ONLY is used.
380
381 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
382 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
383 the glyph slot.
384 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
385 tt_face_load_sbit_image): Updated.
386
387 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
388 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
389
390 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
391 argument to control allocation of the glyph slot.
392 * src/pfr/pfrobjs (pfr_slot_load): Updated.
393
394 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
395
396 * docs/CHANGES: Updated.
397
3982016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +0100399
400 Synchronize with gnulib (#49448).
401
402 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
403 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
404 current version of `intprops.h'.
405 Other minor synchronization to reduce code differences between the
406 three files.
407
Behdad Esfahbodb72858c2016-11-03 06:41:00 +01004082016-11-03 Behdad Esfahbod <behdad@behdad.org>
409
410 [truetype] Clamp variation requests to valid range.
411
412 This is required by OpenType 1.8; it also avoids rounding surprises.
413
414 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
415 outside of the allowed range to always stay within the range instead
416 of producing an error.
417
Werner Lemberg328d6842016-10-29 00:18:56 +02004182016-10-29 Werner Lemberg <wl@gnu.org>
419
420 [truetype] Remove clang warnings.
421
422 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
423 loop counter handling.
424
425 * src/truetype/ttinterp.c: Updated.
426 (Ins_SCANTYPE): Use signed constant.
427 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
428
Werner Lembergddf38722016-10-27 07:27:27 +02004292016-10-27 Werner Lemberg <wl@gnu.org>
430
431 [truetype] Fix commit from 2014-11-24.
432
433 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
434
435 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
436 logic.
437
Werner Lemberg56140902016-10-26 08:10:59 +02004382016-10-26 Werner Lemberg <wl@gnu.org>
439
Werner Lemberg9c45ac32016-10-26 16:00:00 +0200440 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
441
442 * include/freetype/ftmm.h: Declare.
443
444 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
445 New typedef.
446 (MultiMasters): New MM service function `get_mm_blend'.
447 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
448 Update all callers.
449
450 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
451 FT_Get_Var_Blend_Coordinates): Implement.
452
453 * src/truetype/ttdriver.c: Updated.
454
455 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
456 `get_mm_blend' service.
457 * src/truetype/ttgxvar.h: Updated.
458
459 * src/type1/t1driver.c: Updated.
460
461 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
462 `get_mm_blend' service.
463 * src/type1/t1load.h: Updated.
464
465 * docs/CHANGES: Document.
466
4672016-10-26 Werner Lemberg <wl@gnu.org>
468
Werner Lemberg56140902016-10-26 08:10:59 +0200469 * src/type1/t1load.c (parse_subrs): Fix limit check.
470
471 Reported as
472
473 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
474
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -04004752016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
476
477 [cff] Correct cmap format reporting (#24819).
478
479 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
480 charmap instead of guessing its format and language.
481
Werner Lemberg57741402016-10-22 18:34:48 +02004822016-10-22 Werner Lemberg <wl@gnu.org>
483
Werner Lemberg50816742016-10-22 19:16:08 +0200484 [truetype] Fix SCANTYPE instruction (#49394).
485
486 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
487
4882016-10-22 Werner Lemberg <wl@gnu.org>
489
Werner Lemberg57741402016-10-22 18:34:48 +0200490 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
491
492 * src/sfnt/ttpost.c (load_format_25): We need at least a single
493 table entry.
494
Werner Lemberg7eeaf982016-10-14 08:58:17 +02004952016-10-14 Werner Lemberg <wl@gnu.org>
496
497 [truetype] Fix handling of `cvar' table data.
498
499 Reported as
500
501 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
502
503 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
504 indices.
505
Werner Lemberg92281222016-10-11 07:12:12 +02005062016-10-11 Werner Lemberg <wl@gnu.org>
507
Werner Lemberg9c54d122016-10-11 08:57:55 +0200508 [psaux] Fix handling of invalid flex subrs.
509
510 Problem reported as
511
512 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
513
514 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
515 <op_callothersubr>: Set `flex_state' after error checking.
516
5172016-10-11 Werner Lemberg <wl@gnu.org>
518
Werner Lemberg92281222016-10-11 07:12:12 +0200519 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
520
Werner Lembergd61b0422016-10-08 19:20:33 +02005212016-10-08 Werner Lemberg <wl@gnu.org>
522
Werner Lemberg6b354932016-10-08 20:26:59 +0200523 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
524
5252016-10-08 Werner Lemberg <wl@gnu.org>
526
Werner Lembergd61b0422016-10-08 19:20:33 +0200527 [cid] Fix parsing of subr offsets.
528
529 Bug introduced 2016-05-16.
530
531 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
532
Werner Lembergfcc0ee82016-10-01 20:12:25 +02005332016-10-01 Werner Lemberg <wl@gnu.org>
534
535 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
536
537 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
538 a bitmap data table.
539
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -04005402016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
541
542 [smooth] Remove impossibility.
543
544 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
545 (gray_convert_glyph): Remove impossible condition and clean up.
546
Werner Lembergbf902392016-09-29 13:04:46 +02005472016-09-29 Werner Lemberg <wl@gnu.org>
548
Werner Lemberg35764872016-09-30 08:11:52 +0200549 [pcf] Enrich family name with foundry name and glyph width info.
550
551 This is a very old patch from openSuSE (from 2006, submitted to
552 FreeType in 2011) that I forgot to apply.
553
554 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
555
556 Prepend the foundry name plus a space to the family name. There are
557 many fonts just called `Fixed' which look completely different, and
558 which have nothing to do with each other. When selecting `Fixed' in
559 KDE or Gnome one gets results that appear rather random, the style
560 changes often if one changes the size and one cannot select some
561 fonts at all.
562
563 We also check whether we have `wide' characters; all put together,
564 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
565
566 * src/pcf/pcfread.c (pcf_load_font): Implement it.
567
568 * docs/CHANGES: Document it.
569
5702016-09-29 Werner Lemberg <wl@gnu.org>
571
Werner Lemberg71b617d2016-09-29 19:53:39 +0200572 [ftfuzzer] Speed up.
573
574 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
575 check for embedded bitmaps if we have a non-default instance.
576
5772016-09-29 Werner Lemberg <wl@gnu.org>
578
Werner Lemberg2067c692016-09-29 19:49:07 +0200579 [truetype] Disallow bitmap strokes for non-default instances.
580
581 Also speed up access of default instances if GX variations are
582 active.
583
584 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
585 `is_default_instance' member.
586
587 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
588 `is_default_instance'.
589
590 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
591 load_truetype_glyph): Add test for default instance.
592 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
593
594 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
595 `is_default_instance'.
596
5972016-09-29 Werner Lemberg <wl@gnu.org>
598
Werner Lembergbf902392016-09-29 13:04:46 +0200599 [truetype] Clean up `TT_Face' structure.
600
601 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
602 fields `horz_metrics' and `vert_metrics'.
603 Update documentation.
604
605 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
606
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02006072016-09-28 Werner Lemberg <wl@gnu.org>
608
Werner Lemberg45cad2e2016-09-28 19:10:52 +0200609 More FT_ZERO usage.
610
611 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
612 s/ft_memset/FT_MEM_ZERO/.
613
614 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
615 s/ft_memset/FT_ARRAY_ZERO/.
616
617 * src/raster/ftraster.c (FT_ZERO): Define.
618 (ft_black_new): Use it.
619 * src/raster/ftrend1.c (ft_raster1_get_cbox):
620 s/FT_MEM_ZERO/FT_ZERO/.
621
622 * src/smooth/ftgrays.c (FT_ZERO): Define.
623 (gray_raster_new): Use it.
624 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
625 s/FT_MEM_ZERO/FT_ZERO/.
626
6272016-09-28 Werner Lemberg <wl@gnu.org>
628
Werner Lemberg2ecf89b2016-09-28 19:06:21 +0200629 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
630
Werner Lemberg0d945922016-09-27 08:44:31 +02006312016-09-27 Werner Lemberg <wl@gnu.org>
632
Werner Lemberga3e2c832016-09-27 21:42:02 +0200633 [truetype] Trace number of executed opcodes.
634
635 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
636
6372016-09-27 Werner Lemberg <wl@gnu.org>
638
Werner Lemberge27b8a52016-09-27 21:21:01 +0200639 [truetype] Speed up `TT_Load_Glyph'.
640
641 This avoids additional calls to `tt_face_lookup_table' for the
642 `glyf' table, which can be expensive.
643
644 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
645 `glyf_offset' field to ...
646 (TT_FaceRec): ... this structure.
647 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
648 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +0200649 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +0200650
6512016-09-27 Werner Lemberg <wl@gnu.org>
652
Werner Lemberg0d945922016-09-27 08:44:31 +0200653 [truetype] Introduce dynamic limits for some bytecode opcodes.
654
655 This speeds up FreeType's handling of malformed fonts.
656
657 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
658 of twilight points, the total number of negative jumps, and the
659 total number of loops in LOOPCALL opcodes. The values are based on
660 the number of points and entries in the CVT table.
661 (Ins_JMPR): Test negative jump counter.
662 (Ins_LOOPCALL): Test loopcall counter.
663
664 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
665
666 * docs/CHANGES: Updated.
667
Werner Lembergd11e8b62016-09-25 15:32:04 +02006682016-09-25 Werner Lemberg <wl@gnu.org>
669
Werner Lemberga7649632016-09-25 16:29:05 +0200670 [truetype] Sanitize only last entry of `loca' table.
671
672 Without this patch, a loca sequence like `0 100000 0 100000 ...',
673 where value 100000 is larger than the `glyf' table size, makes
674 FreeType handle the whole `glyf' table as a single glyph again and
675 again, which is certainly invalid (and can be very slow, too).
676
677 * src/truetype/ttpload.c (tt_face_get_location): Implement.
678 Improve tracing messages.
679
6802016-09-25 Werner Lemberg <wl@gnu.org>
681
Werner Lembergd11e8b62016-09-25 15:32:04 +0200682 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
683
Werner Lemberg2f2e73c2016-09-24 22:42:58 +02006842016-09-24 Werner Lemberg <wl@gnu.org>
685
686 [autofit] Tracing fixes.
687
688 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
689 functions only if we actually do tracing.
690
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -04006912016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
692
693 [smooth] Reduce divisions in the line renderer.
694
695 We don't need some divisions if a line segments stays within a single
696 row or a single column of pixels.
697
698 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
699 conditional.
700
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -04007012016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
702
703 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
704
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -04007052016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
706
707 [smooth] Another tiny speed-up.
708
709 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
710 (gray_record_cell): ... this function.
711
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04007122016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
713
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -0400714 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
715
7162016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
717
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -0400718 [smooth] Fix valgrind warning and reoptimize.
719
720 The algorithm calls `gray_set_cell' at the start of each new contour
721 or when the contours cross the cell boundaries. Double-checking for
722 that is wasteful.
723
724 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
725 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
726
Werner Lemberge421a0b2016-09-10 08:02:30 +02007272016-09-10 Werner Lemberg <wl@gnu.org>
728
729 [sfnt] Fix previous commit.
730
731 Problems reported as
732
733 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
734
735 We now map the strike index right before accessing the physical
736 data, not earlier.
737
738 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
739 after creating the map so that...
740
741 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
742 can be used before and after setting up `sbit_strike_map'.
743 (tt_face_set_sbit_strike): Revert change.
744 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
745
746 * src/truetype/ttdriver.c (tt_size_select): Revert change.
747
Werner Lembergd609b7c2016-09-09 22:11:07 +02007482016-09-09 Werner Lemberg <wl@gnu.org>
749
Werner Lembergdeb26152016-09-09 22:13:33 +0200750 [ftfuzzer] Minor improvements.
751
752 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
753 invalid strikes.
754 Use better values for call to `FT_Set_Char_Size'.
755
7562016-09-09 Werner Lemberg <wl@gnu.org>
757
Werner Lembergd609b7c2016-09-09 22:11:07 +0200758 [sfnt] Don't provide (completely) broken strike data.
759
760 FreeType tries to sanitize strike header data; we now reject
761 completely broken ones.
762
763 * include/freetype/internal/tttypes.h (TT_FaceRec): New
764 `sbit_strike_map' array pointer.
765
766 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
767 width or height would be zero.
768 Add tracing message in case of error.
769
770 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
771 only using (more or less) valid strike header data for
772 FT_Face's `available_sizes' array.
773 (sfnt_done_face): Updated.
774
775 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
776 `sbit_strike_map'.
777 (tt_face_load_strike_metrics): Improve tracing.
778
779 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
780
Werner Lemberg9749f262016-09-08 07:51:03 +02007812016-09-08 Werner Lemberg <wl@gnu.org>
782
Werner Lembergd2d59682016-09-08 09:04:32 +0200783 * Version 2.7 released.
784 =======================
785
786
787 Tag sources with `VER-2-7'.
788
789 * docs/VERSION.TXT: Add entry for version 2.7.
790
791 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
792 builds/windows/vc2005/index.html,
793 builds/windows/vc2008/freetype.vcproj,
794 builds/windows/vc2008/index.html,
795 builds/windows/vc2010/freetype.vcxproj,
796 builds/windows/vc2010/index.html,
797 builds/windows/visualc/freetype.dsp,
798 builds/windows/visualc/freetype.vcproj,
799 builds/windows/visualc/index.html,
800 builds/windows/visualce/freetype.dsp,
801 builds/windows/visualce/freetype.vcproj,
802 builds/windows/visualce/index.html,
803 builds/wince/vc2005-ce/freetype.vcproj,
804 builds/wince/vc2005-ce/index.html,
805 builds/wince/vc2008-ce/freetype.vcproj,
806 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
807
808 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
809 (FREETYPE_PATCH): Set to 0.
810
811 * builds/unix/configure.raw (version_info): Set to 18:6:12.
812 * CMakeLists.txt (VERSION_MINOR): Set to 7.
813 (VERSION_PATCH): Set to 0.
814
815 * docs/CHANGES: Updated.
816
8172016-09-08 Werner Lemberg <wl@gnu.org>
818
Werner Lembergb1e7b682016-09-08 08:56:34 +0200819 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
820
821 This fixes the `multi' build.
822
8232016-09-08 Werner Lemberg <wl@gnu.org>
824
Werner Lemberg9749f262016-09-08 07:51:03 +0200825 [autofit] Another improvement to Armenian support.
826
827 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
828
829 * src/autofit/afscript.h: Use better suited characters to derive
830 default stem widths.
831
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04008322016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
833
834 * src/smooth/ftgrays.c (gray_hline): Microptimize.
835
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04008362016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
837
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -0400838 [smooth] Operate in absolute bitmap coordinates.
839
840 Simpler bitmap addressing improves performance by 1.5%.
841
842 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
843 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
844 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
845
8462016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
847
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -0400848 [smooth] Improve contour start (take 2).
849
850 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
851 instead of...
852 (gray_start_cell): ... this function, which is removed.
853 (gray_convert_glyph): Make initial y-coordinate invalid.
854
Werner Lembergebbb8b22016-09-06 16:28:57 +02008552016-09-06 Werner Lemberg <wl@gnu.org>
856
857 [type1] MM fonts support exactly zero named instances (#48748).
858
859 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
860
Jonathan Kewa15133e2016-09-06 06:33:36 +02008612016-09-06 Jonathan Kew <jfkthame@gmail.com>
862
863 [cff] Fix uninitialized memory.
864
865 Problem reported as
866
867 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
868
869 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
870 array to handle a `get' opcode without a previous `put'.
871
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04008722016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
873
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -0400874 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
875
8762016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
877
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -0400878 [smooth] Improve contour start.
879
880 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
881 instead of...
882 (gray_start_cell): ... this function, which is removed.
883
Werner Lembergc9adf1a2016-09-05 07:32:37 +02008842016-09-05 Werner Lemberg <wl@gnu.org>
885
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +0200886 [cff] Fix memory initialization.
887
888 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
889 variants of FreeType's memory allocation macros don't do zeroing.
890
8912016-09-05 Werner Lemberg <wl@gnu.org>
892
Werner Lemberg1c8bb632016-09-05 08:13:42 +0200893 [ftrandom] Minor improvements.
894
895 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
896 500.
897
898 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
899 directories to ...
900 (INCLUDES): ... this new variable.
901 (LDFLAGS): New variable.
902 (ftrandom.o, ftrandom): Updated.
903
9042016-09-05 Werner Lemberg <wl@gnu.org>
905
Werner Lembergc9adf1a2016-09-05 07:32:37 +0200906 [autofit] Improve Armenian support.
907
908 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
909
910 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
911 selection of characters.
912
913 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
914
Werner Lemberg4b28f6a2016-09-04 19:05:45 +02009152016-09-04 Werner Lemberg <wl@gnu.org>
916
917 [ftrandom] Improve Makefile.
918
919 It now supports both a normal build (`./configure && make') and a
920 development build (`make devel').
921
922 * src/tools/ftrandom/Makefile (VPATH): Set it so that
923 `libfreetype.a' gets searched in both `objs' (for the development
924 build) and `objs/.libs' (for a normal build which uses libtool).
925 (LIBS): Add missing libraries.
926 (ftrandom.o): New rule.
927 (ftrandom): Use automatic variables.
928
Werner Lembergf0fa7a62016-09-03 06:33:36 +02009292016-09-03 Werner Lemberg <wl@gnu.org>
930
Werner Lemberg4e659d72016-09-03 18:14:00 +0200931 [truetype] More fixes for handling of GX deltas.
932
933 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
934
935 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
936 sanity test for glyph variation array header size.
937 Always set stream position before reading packed x and y deltas.
938 Fix thinko w.r.t. `localpoints' array.
939
9402016-09-03 Werner Lemberg <wl@gnu.org>
941
Werner Lembergca8e98d2016-09-03 13:06:16 +0200942 [ftrandom] Various fixes.
943
944 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
945 default.
946 (error_fraction): Make it of type `double' to work as advertized –
947 this was completely broken.
948 Update all related code.
949 (error_count, fcnt): Make it unsigned to fix compiler warnings.
950 Update all related code.
951 (fontlist): Change `len' member to `long' to fix compiler warnings.
952 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
953 unused variables.
954 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
955 (ExecuteTest): Ditto.
956 Call `FT_Done_FreeType'.
957 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
958 int'.
959 (usage): Improve output.
960 (main): Fix compiler warnings.
961
962 * src/tools/ftrandom/README: Updated.
963
9642016-09-03 Werner Lemberg <wl@gnu.org>
965
Werner Lembergb98dfda2016-09-03 08:20:31 +0200966 [base] Avoid negative bitmap stroke dimensions (#48985).
967
968 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
969 actually successful. For example, this can fail for value
970 -32768 if the type is `signed short'. If there are problems,
971 disable the stroke.
972
9732016-09-03 Werner Lemberg <wl@gnu.org>
974
Werner Lembergf0fa7a62016-09-03 06:33:36 +0200975 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
976
977 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
978
Werner Lembergd8ef7262016-09-02 23:27:50 +02009792016-09-02 Werner Lemberg <wl@gnu.org>
980
Werner Lembergd87bb912016-09-02 23:56:27 +0200981 [unix] Enable 64bit support in file system access (#48962).
982
983 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
984
9852016-09-02 Werner Lemberg <wl@gnu.org>
986
Werner Lembergd8ef7262016-09-02 23:27:50 +0200987 [sfnt] Avoid left shift of negative value (#48980).
988
989 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
990 constant.
991
9922016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +0200993
994 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
995
Werner Lemberg7a13dc02016-09-02 08:24:01 +02009962016-09-02 Werner Lemberg <wl@gnu.org>
997
998 Some preparations for the next release.
999
1000 * include/freetype/config/ftoption.h
1001 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
1002
1003 * docs/CHANGES: Updated.
1004
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -040010052016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
1006
1007 [smooth] Simplify span rendering more.
1008
1009 It turns out that there is significant cost associated with `FT_Span'
1010 creation and calls to `gray_render_span' because it happerns so
1011 frequently. This removes these steps from our internal use but leaves
1012 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
1013 is about 5%.
1014
1015 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
1016 migrated to...
1017 (gray_hline): ... here.
1018
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -040010192016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
1020
1021 [smooth] Streamline pixmap drawing a bit more.
1022
1023 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04001024 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04001025
1026 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
1027
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -040010282016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
1029
1030 [smooth] Streamline pixmap drawing.
1031
1032 This gives 2% speed improvement in rendering simple glyphs.
1033
1034 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
1035 pointer to its bottom-left and pitch to be used in...
1036 (gray_TWorker): ... here.
1037 (gray_render_span): Move pixmap flow check from here...
1038 (gray_raster_render): .. to here.
1039
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -040010402016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
1041
1042 [smooth] Reduce stack of band boundaries.
1043
1044 * src/smooth/ftgrays.c (gray_TBand): Removed.
1045 (gray_convert_glyph): Updated to stack band boundaries concisely.
1046
Werner Lembergf3e71ba2016-08-26 10:31:30 +020010472016-08-26 Werner Lemberg <wl@gnu.org>
1048
Werner Lemberg57aa8392016-08-26 11:59:50 +02001049 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
1050
10512016-08-26 Werner Lemberg <wl@gnu.org>
1052
Werner Lemberg3c61a2f2016-08-26 11:50:09 +02001053 [cid] Fix commit from 2016-05-16.
1054
1055 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
1056
10572016-08-26 Werner Lemberg <wl@gnu.org>
1058
Werner Lembergf3e71ba2016-08-26 10:31:30 +02001059 [sfnt] Cache offset and size to bitmap data table.
1060
1061 This commit avoids `EBDT' and friends being looked up again and
1062 again while loading a single embedded bitmap.
1063
1064 * include/freetype/internal/tttypes.h (TT_FaceRec)
1065 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
1066 `ebdt_size'.
1067
1068 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
1069 (tt_face_load_sbit): ... this function; also store the table size
1070 and offset.
1071
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -040010722016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
1073
1074 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
1075
Werner Lemberga660e3d2016-08-26 00:23:27 +020010762016-08-26 Werner Lemberg <wl@gnu.org>
1077
1078 [type1] Fix heap buffer overflow.
1079
1080 Reported as
1081
1082 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
1083
1084 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
1085 contain glyph names.
1086
Werner Lemberg327f2e32016-08-25 12:46:08 +020010872016-08-25 Werner Lemberg <wl@gnu.org>
1088
Werner Lemberg69ce9732016-08-25 19:49:52 +02001089 [sfnt] Fix previous commit (#48901).
1090
1091 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
1092
10932016-08-25 Werner Lemberg <wl@gnu.org>
1094
Werner Lembergacd18792016-08-25 17:12:46 +02001095 [sfnt] Speed up handling of invalid format 4 cmaps.
1096
1097 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
1098 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
1099
11002016-08-25 Werner Lemberg <wl@gnu.org>
1101
Werner Lemberg327f2e32016-08-25 12:46:08 +02001102 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
1103
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -040011042016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1105
1106 [smooth] Simplify span rendering.
1107
1108 This removes unnecessary complexity of span merging and buffering.
1109 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04001110 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04001111
1112 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
1113 (gray_TWorker): Remove span buffer and related fields.
1114 (gray_sweep, gray_hline): Updated.
1115
1116 * include/freetype/ftimage.h: Remove documentation note about
1117 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
1118
Werner Lembergcf4224a2016-08-16 06:44:23 +020011192016-08-16 Werner Lemberg <wl@gnu.org>
1120
Werner Lemberga4c2a312016-08-22 19:32:34 +02001121 [truetype] Fix `MPS' instruction.
1122
1123 According to Greg Hitchcock, MPS in DWrite really returns the point
1124 size.
1125
1126 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
1127
1128 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
1129
1130 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
1131 member.
1132
1133 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
1134 (Ins_MPS): Fix instruction.
1135
11362016-08-16 Werner Lemberg <wl@gnu.org>
1137
Werner Lemberg8521ad92016-08-16 13:44:38 +02001138 [lzw] Optimize last commit.
1139
1140 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
1141 conditional clause.
1142
11432016-08-16 Werner Lemberg <wl@gnu.org>
1144
Werner Lemberg548f68d2016-08-16 09:46:40 +02001145 [lzw] Avoid invalid left shift.
1146
Werner Lemberg6df68332016-08-16 09:50:07 +02001147 Reported as
1148
1149 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
1150
Werner Lemberg548f68d2016-08-16 09:46:40 +02001151 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
1152
11532016-08-16 Werner Lemberg <wl@gnu.org>
1154
Werner Lemberg8d7b9192016-08-16 08:07:58 +02001155 [lzw] Avoid buffer overrun.
1156
1157 Reported as
1158
1159 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
1160
1161 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
1162 underflow.
1163
11642016-08-16 Werner Lemberg <wl@gnu.org>
1165
Werner Lembergcf4224a2016-08-16 06:44:23 +02001166 [truetype] Fix compiler warning.
1167
1168 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
1169
Werner Lemberg248f5622016-08-13 06:53:53 +020011702016-08-13 Werner Lemberg <wl@gnu.org>
1171
1172 [winfonts] Avoid zero bitmap width and height.
1173
1174 Reported as
1175
1176 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
1177
1178 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
1179 (FNT_Load_Glyph): Check for zero pitch.
1180
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +020011812016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1182
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -04001183 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
1184
11852016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1186
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -04001187 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
1188
11892016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1190
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02001191 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
1192
Peter Klotz3b37bfc2016-08-10 22:38:08 -040011932016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
1194
1195 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
1196
Werner Lemberg5224aae2016-08-10 19:47:29 +020011972016-08-10 Werner Lemberg <wl@gnu.org>
1198
1199 [sfnt] Use correct type for `italicAngle' field (#48732).
1200
1201 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
1202
Werner Lemberg53059f92016-08-07 09:01:33 +020012032016-08-06 Jon Spencer <jon@jonspencer.ca>
1204
1205 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
1206
1207 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
1208 advance value from the font table and then scales it by the
1209 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
1210 set that value for bitmap fonts and the advance gets scaled to zero.
1211
1212 Taken from
1213
1214 https://github.com/behdad/harfbuzz/issues/252
1215
1216 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
1217 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
1218
12192016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02001220
1221 [truetype] Fix GX variation handling of composites.
1222
1223 * src/truetype/ttgload.c (load_truetype_glyph)
1224 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
1225
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040012262016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1227
1228 [smooth] Minor refactoring.
1229
1230 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
1231 Updated.
1232
Werner Lembergfae4ec02016-07-29 06:43:32 +020012332016-07-29 Werner Lemberg <wl@gnu.org>
1234
1235 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
1236
1237 Since 2016-05-16 we detect infinite recursion directly.
1238
1239 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
1240 `maxComponentDepth'.
1241 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
1242 `maxComponentDepth' is not valid. Instead, simply adjust its value
1243 and emit a tracing message.
1244
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020012452016-07-26 Werner Lemberg <wl@gnu.org>
1246
1247 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
1248
1249 No functional change.
1250
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020012512016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
1252
1253 [truetype] Record the end of IDEFs.
1254
1255 To match the logic in FDEF. The value of the end is only used for
1256 bound-checking in `Ins_JMPR', so it may not have been obvious that
1257 it was not recorded. Tested (as part of Font Validator 2.0) all the
1258 fonts on Fedora and did not see any change.
1259
1260 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
1261
Werner Lemberge69f34b2016-07-19 07:06:19 +020012622016-07-19 Werner Lemberg <wl@gnu.org>
1263
Werner Lemberg7f631052016-07-19 21:35:58 +02001264 [truetype] Sanitizer fix, second try.
1265
1266 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1267 tests and use only one slot more.
1268
12692016-07-19 Werner Lemberg <wl@gnu.org>
1270
Werner Lemberge69f34b2016-07-19 07:06:19 +02001271 [truetype] Sanitizer fix.
1272
1273 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
1274 to fix nested loops.
1275
Werner Lemberga3b70d72016-07-18 06:23:36 +020012762016-07-18 Werner Lemberg <wl@gnu.org>
1277
1278 [truetype] Make GETDATA work only for GX fonts.
1279
1280 * src/truetype/ttinterp.c (opcode_name): Updated.
1281 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
1282 (TT_RunIns): Updated.
1283
12842016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02001285
Werner Lemberg8c930132016-07-17 22:40:31 +02001286 [truetype] Add support for Apple's
1287
1288 GETDATA[], opcode 0x92
1289
1290 bytecode instruction. It always returns 17, and we have absolutely
1291 no idea what it is good for...
1292
1293 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
1294 (Ins_GETDATA): New function.
1295 (TT_RunIns): Add it.
1296
12972016-07-16 Werner Lemberg <wl@gnu.org>
1298
Werner Lemberge0843602016-07-16 18:46:28 +02001299 [truetype] Add bytecode support for GX variation fonts.
1300
1301 This commit implements undocumented (but confirmed) stuff from
1302 Apple's old bytecode engine.
1303
1304 GETVARIATION[], opcode 0x91
1305 This opcode pushes normalized variation coordinates for all axes
1306 onto the stack (in 2.14 format). Coordinate of first axis gets
1307 pushed first.
1308
1309 GETINFO[], selector bit 3
1310 If GX variation support is enabled, bit 10 of the result is set
1311 to 1.
1312
1313 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
1314 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
1315 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
1316 bit 3, checking support for variation glyph hinting.
1317 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
1318 to implement opcode 0x91.
1319 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
1320
13212016-07-16 Werner Lemberg <wl@gnu.org>
1322
Werner Lemberg32a32062016-07-16 16:39:26 +02001323 [truetype] Fix GETINFO bytecode instruction.
1324
1325 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
1326 stretching information.
1327
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020013282016-07-16 Behdad Esfahbod <behdad@behdad.org>
1329
1330 [truetype] Make all glyphs in `Zycon' GX font work.
1331
1332 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1333 tests.
1334
Werner Lemberga3b61252016-07-16 08:16:16 +020013352016-07-16 Werner Lemberg <wl@gnu.org>
1336
1337 [truetype] Fix GX delta tracing.
1338
1339 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
1340 relative point movements.
1341
13422016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02001343
1344 [truetype] More fixes for GX.
1345
1346 This finally fixes the rendering of the cyclist and the lizard in
1347 the `Zycon' font.
1348
1349 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
1350 index is always cumulative.
1351
1352 (tt_handle_deltas): Rename to...
1353 (tt_interpolate_deltas): ... This.
1354 Add new parameter for output point array.
1355 Update caller.
1356
1357 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
1358 the intermediate results of `tt_interpolate_deltas' that are to be
1359 added to `outline->points'.
1360
Werner Lembergaafff572016-07-16 06:41:39 +020013612016-07-15 Werner Lemberg <wl@gnu.org>
1362
1363 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
1364
1365 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
1366
1367 Reported by Alexei.
1368
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020013692016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
1370
1371 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
1372
1373 Problem reported by Hin-Tak Leung.
1374
Werner Lemberg894c0222016-07-15 10:23:11 +020013752016-07-15 Werner Lemberg <wl@gnu.org>
1376
Werner Lemberg1831e6f2016-07-15 10:35:32 +02001377 [autofit] Update and improve segment and edge tracing.
1378
1379 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
1380 `delta' also.
1381 Don't show first point of segment as a replacement for `pos'; this
1382 is (a) misleading, since the difference to `pos' can be almost
1383 arbitrarily large in corner cases, and (b) it is better to have all
1384 segment data in font units instead of a single value given in output
1385 space coordinates.
1386 Improve layout.
1387 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
1388 values for convenience.
1389 Improve layout.
1390
13912016-07-15 Werner Lemberg <wl@gnu.org>
1392
Werner Lemberg894c0222016-07-15 10:23:11 +02001393 [autofit] For edges, reject segments wider than 1px (#41334).
1394
1395 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
1396
1397 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
1398 `delta'.
1399 (af_latin_hints_compute_edges): Reject segments with a delta larger
1400 than 0.5px.
1401
Werner Lemberg631e2182016-07-14 06:25:05 +020014022016-07-14 Werner Lemberg <wl@gnu.org>
1403
Werner Lembergff655432016-07-14 15:01:55 +02001404 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
1405
14062016-07-14 Werner Lemberg <wl@gnu.org>
1407
Werner Lembergee3f36f2016-07-14 10:25:20 +02001408 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
1409
1410 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
1411
14122016-07-14 Werner Lemberg <wl@gnu.org>
1413
Werner Lemberg631e2182016-07-14 06:25:05 +02001414 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
1415
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020014162016-07-14 Behdad Esfahbod <behdad@behdad.org>
1417
1418 [truetype] Fix gxvar delta interpolation.
1419
1420 The coordinates of the base font should be used for interpolation
1421 purposes, NOT the current points (i.e., the result of accumulation
1422 of previous deltas).
1423
1424 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
1425 `points_org' before looping over all tuples.
1426
Werner Lembergf6aa0892013-05-10 07:58:47 +02001427
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001428----------------------------------------------------------------------------
1429
Werner Lemberg8160b202016-09-08 08:42:10 +02001430Copyright 2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001431David Turner, Robert Wilhelm, and Werner Lemberg.
1432
1433This file is part of the FreeType project, and may only be used, modified,
1434and distributed under the terms of the FreeType project license,
1435LICENSE.TXT. By continuing to use, modify, or distribute this file you
1436indicate that you have read the license and understand and accept it
1437fully.
1438
1439
1440Local Variables:
1441version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00001442coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001443End: