blob: 012fabde22e5f5924e17acaab178113aca44eeff [file] [log] [blame]
Werner Lemberg29aa9572016-12-08 08:59:34 +010012016-12-08 Werner Lemberg <wl@gnu.org>
2
3 [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
4
5 CFF2 fonts will need access to those two functions.
6
7 * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
8 (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
9 (FT_DEFINE_SFNT_INTERFACE): Updated.
10
11 * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
12 Fix signatures to exactly correspond to the glyph dict service
13 function typedefs.
14 (sfnt_interface): Updated.
15
Dave Arnoldbcae6572016-12-05 22:08:15 +0100162016-12-06 Dave Arnold <darnold@adobe.com>
17
18 Add `FT_Get_Var_Design_Coordinates' function.
19
20 Note that the low-level functions aren't implemented yet.
21
22 * include/freetype/ftmm.h: Declare.
23
24 * include/freetype/internal/services/svmm.h
25 (FT_Get_Var_Design_Func): New typedef.
26 (MultiMasters): New MM service function `get_var_design'.
27 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
28 Update all callers.
29
30 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
31
32 * src/truetype/ttdriver.c: Updated.
33
34 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
35 handle `get_var_design' service.
36 * src/truetype/ttgxvar.h: Updated.
37
38 * src/type1/t1driver.c: Updated.
39
40 * src/type1/t1load.c (T1_Get_Var_Design): New dummp function to
41 handle `get_var_design' service.
42 * src/type1/t1load.h: Updated.
43
Werner Lembergc0fae7d2016-12-06 11:13:19 +0100442016-12-06 Werner Lemberg <wl@gnu.org>
45
46 * src/type1/t1load.c (parse_subrs): Fix memory leak.
47
48 The `subrs' keyword might erroneously occur multiple times.
49
50 Reported as
51
52 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
53
Werner Lemberg602be7c2016-12-01 11:36:37 +0100542016-12-01 Werner Lemberg <wl@gnu.org>
55
56 [gzip] Improve building with external zlib (#49673).
57
58 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
59 the following error.
60
61 ftgzip.c
62 zlib-1.2.8\zlib.h(86): error C2061:
63 syntax error: identifier 'z_const'
64 zlib-1.2.8\zlib.h(94): error C2054:
65 expected '(' to follow 'z_const'
66 zlib-1.2.8\zlib.h(94): error C2085:
67 'msg': not in formal parameter list
68 ...
69 zlib-1.2.8\zlib.h(877): fatal error C1003:
70 error count exceeds 100; stopping compilation
71
72 The error happens because FreeType keeps an own copy of zlib-1.1.4
73 under `src/gzip'. When building `src/gzip/ftgzip.c' with
74 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
75
76 #include <zlib.h>
77
78 which correctly finds an external `zlib.h', but `zlib.h' itself has
79 a line
80
81 #include "zconf.h"
82
83 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
84 compiling the files in `src/gzip'.
85
86 * src/gzip/zconf.h: Rename to...
87 * src/gzip/ftzconf.h: ... this.
88 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
89
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +0100902016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
91
92 [autofit] Fix Emscripten crash (patch #9180).
93
94 Function calls through pointers must use a matching signature to
95 work on Emscripten, since such calls are dispatched through lookup
96 tables grouped by signature.
97
98 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
99 typedef.
100
Werner Lembergd949a3d2016-11-29 12:09:56 +01001012016-11-29 Werner Lemberg <wl@gnu.org>
102
Werner Lemberg1d28f692016-11-29 18:45:22 +0100103 [smooth] Revert previous commit. Already fixed with 6ca54c64.
104
1052016-11-29 Werner Lemberg <wl@gnu.org>
106
Werner Lembergd949a3d2016-11-29 12:09:56 +0100107 [smooth] Avoid conditional jump on uninitialized value (#49711).
108
109 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
110
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +01001112016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
112
113 [autofit] Code shuffling.
114
115 Also improve some comments and remove unused code.
116
117 No functional change.
118
119 * src/autofit/afloader.c (af_loader_load_g): Merged with...
120 (af_loader_load_glyph): ...this function.
121 Split off emboldening code into...
122 (af_loader_embolden_glyph_in_slot): ... this function.
123
Werner Lemberg78150502016-11-17 12:00:20 +01001242016-11-17 Werner Lemberg <wl@gnu.org>
125
126 Better support of LLP64 systems with gcc (and clang).
127
128 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
129
130 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
131 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
132
Werner Lembergdd26e3d2016-11-10 12:03:32 +01001332016-11-10 Werner Lemberg <wl@gnu.org>
134
135 Fix `lcd_weights' array size.
136
137 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
138
139 Reported by Nikolaus.
140
Werner Lemberg565db952016-11-06 12:33:51 +01001412016-11-06 Werner Lemberg <wl@gnu.org>
142
Werner Lemberge1ee5472016-11-06 12:39:05 +0100143 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
144
1452016-11-06 Werner Lemberg <wl@gnu.org>
146
Werner Lemberg1c6fd992016-11-06 12:37:55 +0100147 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
148
149 It's unavoidable to call the PNG engine, but to get the metrics it
150 is sufficient to read the PNG image's header only.
151
152 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
153 allocation of the glyph slot.
154 * src/sfnt/pngshim.h: Updated.
155 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
156 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
157
1582016-11-06 Werner Lemberg <wl@gnu.org>
159
Werner Lemberg565db952016-11-06 12:33:51 +0100160 [sfnt] Speed up `sbix' lookup.
161
162 This also fixes a bug introduced in 2016-10-01 which prevents
163 display of embedded bitmap fonts that use the `sbix' format.
164
165 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
166 offset also in `ebdt_size' and `ebdt_start', respectively. This
167 makes the test for an embedded bitmap data table succeed for this
168 format.
169
170 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
171 `ebdt_size' and `ebdt_start'
172 (tt_face_load_sbix_image): Ditto.
173
Werner Lemberg37e193e2016-11-06 12:32:51 +01001742016-11-06 Seigo Nonaka <nona@google.com>
175 Werner Lemberg <wl@gnu.org>
176
177 Introduce a way of quickly retrieving (embedded) bitmap metrics.
178
179 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
180 until the user calls `FT_Render_Glyph'. However, it always
181 allocates memory for bitmaps and copies or decodes the contents of a
182 bitmap glyph, which can be quite slow for PNG data.
183
184 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
185 macro.
186
187 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
188 FT_LOAD_BITMAP_METRICS_ONLY is used.
189
190 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
191 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
192 the glyph slot.
193 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
194 tt_face_load_sbit_image): Updated.
195
196 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
197 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
198
199 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
200 argument to control allocation of the glyph slot.
201 * src/pfr/pfrobjs (pfr_slot_load): Updated.
202
203 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
204
205 * docs/CHANGES: Updated.
206
2072016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +0100208
209 Synchronize with gnulib (#49448).
210
211 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
212 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
213 current version of `intprops.h'.
214 Other minor synchronization to reduce code differences between the
215 three files.
216
Behdad Esfahbodb72858c2016-11-03 06:41:00 +01002172016-11-03 Behdad Esfahbod <behdad@behdad.org>
218
219 [truetype] Clamp variation requests to valid range.
220
221 This is required by OpenType 1.8; it also avoids rounding surprises.
222
223 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
224 outside of the allowed range to always stay within the range instead
225 of producing an error.
226
Werner Lemberg328d6842016-10-29 00:18:56 +02002272016-10-29 Werner Lemberg <wl@gnu.org>
228
229 [truetype] Remove clang warnings.
230
231 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
232 loop counter handling.
233
234 * src/truetype/ttinterp.c: Updated.
235 (Ins_SCANTYPE): Use signed constant.
236 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
237
Werner Lembergddf38722016-10-27 07:27:27 +02002382016-10-27 Werner Lemberg <wl@gnu.org>
239
240 [truetype] Fix commit from 2014-11-24.
241
242 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
243
244 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
245 logic.
246
Werner Lemberg56140902016-10-26 08:10:59 +02002472016-10-26 Werner Lemberg <wl@gnu.org>
248
Werner Lemberg9c45ac32016-10-26 16:00:00 +0200249 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
250
251 * include/freetype/ftmm.h: Declare.
252
253 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
254 New typedef.
255 (MultiMasters): New MM service function `get_mm_blend'.
256 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
257 Update all callers.
258
259 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
260 FT_Get_Var_Blend_Coordinates): Implement.
261
262 * src/truetype/ttdriver.c: Updated.
263
264 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
265 `get_mm_blend' service.
266 * src/truetype/ttgxvar.h: Updated.
267
268 * src/type1/t1driver.c: Updated.
269
270 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
271 `get_mm_blend' service.
272 * src/type1/t1load.h: Updated.
273
274 * docs/CHANGES: Document.
275
2762016-10-26 Werner Lemberg <wl@gnu.org>
277
Werner Lemberg56140902016-10-26 08:10:59 +0200278 * src/type1/t1load.c (parse_subrs): Fix limit check.
279
280 Reported as
281
282 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
283
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -04002842016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
285
286 [cff] Correct cmap format reporting (#24819).
287
288 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
289 charmap instead of guessing its format and language.
290
Werner Lemberg57741402016-10-22 18:34:48 +02002912016-10-22 Werner Lemberg <wl@gnu.org>
292
Werner Lemberg50816742016-10-22 19:16:08 +0200293 [truetype] Fix SCANTYPE instruction (#49394).
294
295 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
296
2972016-10-22 Werner Lemberg <wl@gnu.org>
298
Werner Lemberg57741402016-10-22 18:34:48 +0200299 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
300
301 * src/sfnt/ttpost.c (load_format_25): We need at least a single
302 table entry.
303
Werner Lemberg7eeaf982016-10-14 08:58:17 +02003042016-10-14 Werner Lemberg <wl@gnu.org>
305
306 [truetype] Fix handling of `cvar' table data.
307
308 Reported as
309
310 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
311
312 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
313 indices.
314
Werner Lemberg92281222016-10-11 07:12:12 +02003152016-10-11 Werner Lemberg <wl@gnu.org>
316
Werner Lemberg9c54d122016-10-11 08:57:55 +0200317 [psaux] Fix handling of invalid flex subrs.
318
319 Problem reported as
320
321 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
322
323 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
324 <op_callothersubr>: Set `flex_state' after error checking.
325
3262016-10-11 Werner Lemberg <wl@gnu.org>
327
Werner Lemberg92281222016-10-11 07:12:12 +0200328 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
329
Werner Lembergd61b0422016-10-08 19:20:33 +02003302016-10-08 Werner Lemberg <wl@gnu.org>
331
Werner Lemberg6b354932016-10-08 20:26:59 +0200332 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
333
3342016-10-08 Werner Lemberg <wl@gnu.org>
335
Werner Lembergd61b0422016-10-08 19:20:33 +0200336 [cid] Fix parsing of subr offsets.
337
338 Bug introduced 2016-05-16.
339
340 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
341
Werner Lembergfcc0ee82016-10-01 20:12:25 +02003422016-10-01 Werner Lemberg <wl@gnu.org>
343
344 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
345
346 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
347 a bitmap data table.
348
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -04003492016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
350
351 [smooth] Remove impossibility.
352
353 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
354 (gray_convert_glyph): Remove impossible condition and clean up.
355
Werner Lembergbf902392016-09-29 13:04:46 +02003562016-09-29 Werner Lemberg <wl@gnu.org>
357
Werner Lemberg35764872016-09-30 08:11:52 +0200358 [pcf] Enrich family name with foundry name and glyph width info.
359
360 This is a very old patch from openSuSE (from 2006, submitted to
361 FreeType in 2011) that I forgot to apply.
362
363 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
364
365 Prepend the foundry name plus a space to the family name. There are
366 many fonts just called `Fixed' which look completely different, and
367 which have nothing to do with each other. When selecting `Fixed' in
368 KDE or Gnome one gets results that appear rather random, the style
369 changes often if one changes the size and one cannot select some
370 fonts at all.
371
372 We also check whether we have `wide' characters; all put together,
373 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
374
375 * src/pcf/pcfread.c (pcf_load_font): Implement it.
376
377 * docs/CHANGES: Document it.
378
3792016-09-29 Werner Lemberg <wl@gnu.org>
380
Werner Lemberg71b617d2016-09-29 19:53:39 +0200381 [ftfuzzer] Speed up.
382
383 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
384 check for embedded bitmaps if we have a non-default instance.
385
3862016-09-29 Werner Lemberg <wl@gnu.org>
387
Werner Lemberg2067c692016-09-29 19:49:07 +0200388 [truetype] Disallow bitmap strokes for non-default instances.
389
390 Also speed up access of default instances if GX variations are
391 active.
392
393 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
394 `is_default_instance' member.
395
396 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
397 `is_default_instance'.
398
399 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
400 load_truetype_glyph): Add test for default instance.
401 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
402
403 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
404 `is_default_instance'.
405
4062016-09-29 Werner Lemberg <wl@gnu.org>
407
Werner Lembergbf902392016-09-29 13:04:46 +0200408 [truetype] Clean up `TT_Face' structure.
409
410 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
411 fields `horz_metrics' and `vert_metrics'.
412 Update documentation.
413
414 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
415
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02004162016-09-28 Werner Lemberg <wl@gnu.org>
417
Werner Lemberg45cad2e2016-09-28 19:10:52 +0200418 More FT_ZERO usage.
419
420 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
421 s/ft_memset/FT_MEM_ZERO/.
422
423 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
424 s/ft_memset/FT_ARRAY_ZERO/.
425
426 * src/raster/ftraster.c (FT_ZERO): Define.
427 (ft_black_new): Use it.
428 * src/raster/ftrend1.c (ft_raster1_get_cbox):
429 s/FT_MEM_ZERO/FT_ZERO/.
430
431 * src/smooth/ftgrays.c (FT_ZERO): Define.
432 (gray_raster_new): Use it.
433 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
434 s/FT_MEM_ZERO/FT_ZERO/.
435
4362016-09-28 Werner Lemberg <wl@gnu.org>
437
Werner Lemberg2ecf89b2016-09-28 19:06:21 +0200438 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
439
Werner Lemberg0d945922016-09-27 08:44:31 +02004402016-09-27 Werner Lemberg <wl@gnu.org>
441
Werner Lemberga3e2c832016-09-27 21:42:02 +0200442 [truetype] Trace number of executed opcodes.
443
444 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
445
4462016-09-27 Werner Lemberg <wl@gnu.org>
447
Werner Lemberge27b8a52016-09-27 21:21:01 +0200448 [truetype] Speed up `TT_Load_Glyph'.
449
450 This avoids additional calls to `tt_face_lookup_table' for the
451 `glyf' table, which can be expensive.
452
453 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
454 `glyf_offset' field to ...
455 (TT_FaceRec): ... this structure.
456 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
457 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +0200458 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +0200459
4602016-09-27 Werner Lemberg <wl@gnu.org>
461
Werner Lemberg0d945922016-09-27 08:44:31 +0200462 [truetype] Introduce dynamic limits for some bytecode opcodes.
463
464 This speeds up FreeType's handling of malformed fonts.
465
466 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
467 of twilight points, the total number of negative jumps, and the
468 total number of loops in LOOPCALL opcodes. The values are based on
469 the number of points and entries in the CVT table.
470 (Ins_JMPR): Test negative jump counter.
471 (Ins_LOOPCALL): Test loopcall counter.
472
473 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
474
475 * docs/CHANGES: Updated.
476
Werner Lembergd11e8b62016-09-25 15:32:04 +02004772016-09-25 Werner Lemberg <wl@gnu.org>
478
Werner Lemberga7649632016-09-25 16:29:05 +0200479 [truetype] Sanitize only last entry of `loca' table.
480
481 Without this patch, a loca sequence like `0 100000 0 100000 ...',
482 where value 100000 is larger than the `glyf' table size, makes
483 FreeType handle the whole `glyf' table as a single glyph again and
484 again, which is certainly invalid (and can be very slow, too).
485
486 * src/truetype/ttpload.c (tt_face_get_location): Implement.
487 Improve tracing messages.
488
4892016-09-25 Werner Lemberg <wl@gnu.org>
490
Werner Lembergd11e8b62016-09-25 15:32:04 +0200491 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
492
Werner Lemberg2f2e73c2016-09-24 22:42:58 +02004932016-09-24 Werner Lemberg <wl@gnu.org>
494
495 [autofit] Tracing fixes.
496
497 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
498 functions only if we actually do tracing.
499
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -04005002016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
501
502 [smooth] Reduce divisions in the line renderer.
503
504 We don't need some divisions if a line segments stays within a single
505 row or a single column of pixels.
506
507 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
508 conditional.
509
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -04005102016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
511
512 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
513
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -04005142016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
515
516 [smooth] Another tiny speed-up.
517
518 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
519 (gray_record_cell): ... this function.
520
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04005212016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
522
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -0400523 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
524
5252016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
526
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -0400527 [smooth] Fix valgrind warning and reoptimize.
528
529 The algorithm calls `gray_set_cell' at the start of each new contour
530 or when the contours cross the cell boundaries. Double-checking for
531 that is wasteful.
532
533 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
534 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
535
Werner Lemberge421a0b2016-09-10 08:02:30 +02005362016-09-10 Werner Lemberg <wl@gnu.org>
537
538 [sfnt] Fix previous commit.
539
540 Problems reported as
541
542 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
543
544 We now map the strike index right before accessing the physical
545 data, not earlier.
546
547 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
548 after creating the map so that...
549
550 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
551 can be used before and after setting up `sbit_strike_map'.
552 (tt_face_set_sbit_strike): Revert change.
553 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
554
555 * src/truetype/ttdriver.c (tt_size_select): Revert change.
556
Werner Lembergd609b7c2016-09-09 22:11:07 +02005572016-09-09 Werner Lemberg <wl@gnu.org>
558
Werner Lembergdeb26152016-09-09 22:13:33 +0200559 [ftfuzzer] Minor improvements.
560
561 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
562 invalid strikes.
563 Use better values for call to `FT_Set_Char_Size'.
564
5652016-09-09 Werner Lemberg <wl@gnu.org>
566
Werner Lembergd609b7c2016-09-09 22:11:07 +0200567 [sfnt] Don't provide (completely) broken strike data.
568
569 FreeType tries to sanitize strike header data; we now reject
570 completely broken ones.
571
572 * include/freetype/internal/tttypes.h (TT_FaceRec): New
573 `sbit_strike_map' array pointer.
574
575 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
576 width or height would be zero.
577 Add tracing message in case of error.
578
579 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
580 only using (more or less) valid strike header data for
581 FT_Face's `available_sizes' array.
582 (sfnt_done_face): Updated.
583
584 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
585 `sbit_strike_map'.
586 (tt_face_load_strike_metrics): Improve tracing.
587
588 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
589
Werner Lemberg9749f262016-09-08 07:51:03 +02005902016-09-08 Werner Lemberg <wl@gnu.org>
591
Werner Lembergd2d59682016-09-08 09:04:32 +0200592 * Version 2.7 released.
593 =======================
594
595
596 Tag sources with `VER-2-7'.
597
598 * docs/VERSION.TXT: Add entry for version 2.7.
599
600 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
601 builds/windows/vc2005/index.html,
602 builds/windows/vc2008/freetype.vcproj,
603 builds/windows/vc2008/index.html,
604 builds/windows/vc2010/freetype.vcxproj,
605 builds/windows/vc2010/index.html,
606 builds/windows/visualc/freetype.dsp,
607 builds/windows/visualc/freetype.vcproj,
608 builds/windows/visualc/index.html,
609 builds/windows/visualce/freetype.dsp,
610 builds/windows/visualce/freetype.vcproj,
611 builds/windows/visualce/index.html,
612 builds/wince/vc2005-ce/freetype.vcproj,
613 builds/wince/vc2005-ce/index.html,
614 builds/wince/vc2008-ce/freetype.vcproj,
615 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
616
617 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
618 (FREETYPE_PATCH): Set to 0.
619
620 * builds/unix/configure.raw (version_info): Set to 18:6:12.
621 * CMakeLists.txt (VERSION_MINOR): Set to 7.
622 (VERSION_PATCH): Set to 0.
623
624 * docs/CHANGES: Updated.
625
6262016-09-08 Werner Lemberg <wl@gnu.org>
627
Werner Lembergb1e7b682016-09-08 08:56:34 +0200628 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
629
630 This fixes the `multi' build.
631
6322016-09-08 Werner Lemberg <wl@gnu.org>
633
Werner Lemberg9749f262016-09-08 07:51:03 +0200634 [autofit] Another improvement to Armenian support.
635
636 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
637
638 * src/autofit/afscript.h: Use better suited characters to derive
639 default stem widths.
640
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04006412016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
642
643 * src/smooth/ftgrays.c (gray_hline): Microptimize.
644
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04006452016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
646
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -0400647 [smooth] Operate in absolute bitmap coordinates.
648
649 Simpler bitmap addressing improves performance by 1.5%.
650
651 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
652 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
653 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
654
6552016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
656
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -0400657 [smooth] Improve contour start (take 2).
658
659 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
660 instead of...
661 (gray_start_cell): ... this function, which is removed.
662 (gray_convert_glyph): Make initial y-coordinate invalid.
663
Werner Lembergebbb8b22016-09-06 16:28:57 +02006642016-09-06 Werner Lemberg <wl@gnu.org>
665
666 [type1] MM fonts support exactly zero named instances (#48748).
667
668 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
669
Jonathan Kewa15133e2016-09-06 06:33:36 +02006702016-09-06 Jonathan Kew <jfkthame@gmail.com>
671
672 [cff] Fix uninitialized memory.
673
674 Problem reported as
675
676 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
677
678 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
679 array to handle a `get' opcode without a previous `put'.
680
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04006812016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
682
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -0400683 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
684
6852016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
686
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -0400687 [smooth] Improve contour start.
688
689 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
690 instead of...
691 (gray_start_cell): ... this function, which is removed.
692
Werner Lembergc9adf1a2016-09-05 07:32:37 +02006932016-09-05 Werner Lemberg <wl@gnu.org>
694
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +0200695 [cff] Fix memory initialization.
696
697 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
698 variants of FreeType's memory allocation macros don't do zeroing.
699
7002016-09-05 Werner Lemberg <wl@gnu.org>
701
Werner Lemberg1c8bb632016-09-05 08:13:42 +0200702 [ftrandom] Minor improvements.
703
704 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
705 500.
706
707 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
708 directories to ...
709 (INCLUDES): ... this new variable.
710 (LDFLAGS): New variable.
711 (ftrandom.o, ftrandom): Updated.
712
7132016-09-05 Werner Lemberg <wl@gnu.org>
714
Werner Lembergc9adf1a2016-09-05 07:32:37 +0200715 [autofit] Improve Armenian support.
716
717 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
718
719 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
720 selection of characters.
721
722 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
723
Werner Lemberg4b28f6a2016-09-04 19:05:45 +02007242016-09-04 Werner Lemberg <wl@gnu.org>
725
726 [ftrandom] Improve Makefile.
727
728 It now supports both a normal build (`./configure && make') and a
729 development build (`make devel').
730
731 * src/tools/ftrandom/Makefile (VPATH): Set it so that
732 `libfreetype.a' gets searched in both `objs' (for the development
733 build) and `objs/.libs' (for a normal build which uses libtool).
734 (LIBS): Add missing libraries.
735 (ftrandom.o): New rule.
736 (ftrandom): Use automatic variables.
737
Werner Lembergf0fa7a62016-09-03 06:33:36 +02007382016-09-03 Werner Lemberg <wl@gnu.org>
739
Werner Lemberg4e659d72016-09-03 18:14:00 +0200740 [truetype] More fixes for handling of GX deltas.
741
742 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
743
744 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
745 sanity test for glyph variation array header size.
746 Always set stream position before reading packed x and y deltas.
747 Fix thinko w.r.t. `localpoints' array.
748
7492016-09-03 Werner Lemberg <wl@gnu.org>
750
Werner Lembergca8e98d2016-09-03 13:06:16 +0200751 [ftrandom] Various fixes.
752
753 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
754 default.
755 (error_fraction): Make it of type `double' to work as advertized –
756 this was completely broken.
757 Update all related code.
758 (error_count, fcnt): Make it unsigned to fix compiler warnings.
759 Update all related code.
760 (fontlist): Change `len' member to `long' to fix compiler warnings.
761 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
762 unused variables.
763 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
764 (ExecuteTest): Ditto.
765 Call `FT_Done_FreeType'.
766 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
767 int'.
768 (usage): Improve output.
769 (main): Fix compiler warnings.
770
771 * src/tools/ftrandom/README: Updated.
772
7732016-09-03 Werner Lemberg <wl@gnu.org>
774
Werner Lembergb98dfda2016-09-03 08:20:31 +0200775 [base] Avoid negative bitmap stroke dimensions (#48985).
776
777 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
778 actually successful. For example, this can fail for value
779 -32768 if the type is `signed short'. If there are problems,
780 disable the stroke.
781
7822016-09-03 Werner Lemberg <wl@gnu.org>
783
Werner Lembergf0fa7a62016-09-03 06:33:36 +0200784 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
785
786 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
787
Werner Lembergd8ef7262016-09-02 23:27:50 +02007882016-09-02 Werner Lemberg <wl@gnu.org>
789
Werner Lembergd87bb912016-09-02 23:56:27 +0200790 [unix] Enable 64bit support in file system access (#48962).
791
792 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
793
7942016-09-02 Werner Lemberg <wl@gnu.org>
795
Werner Lembergd8ef7262016-09-02 23:27:50 +0200796 [sfnt] Avoid left shift of negative value (#48980).
797
798 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
799 constant.
800
8012016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +0200802
803 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
804
Werner Lemberg7a13dc02016-09-02 08:24:01 +02008052016-09-02 Werner Lemberg <wl@gnu.org>
806
807 Some preparations for the next release.
808
809 * include/freetype/config/ftoption.h
810 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
811
812 * docs/CHANGES: Updated.
813
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04008142016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
815
816 [smooth] Simplify span rendering more.
817
818 It turns out that there is significant cost associated with `FT_Span'
819 creation and calls to `gray_render_span' because it happerns so
820 frequently. This removes these steps from our internal use but leaves
821 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
822 is about 5%.
823
824 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
825 migrated to...
826 (gray_hline): ... here.
827
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04008282016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
829
830 [smooth] Streamline pixmap drawing a bit more.
831
832 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -0400833 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -0400834
835 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
836
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -04008372016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
838
839 [smooth] Streamline pixmap drawing.
840
841 This gives 2% speed improvement in rendering simple glyphs.
842
843 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
844 pointer to its bottom-left and pitch to be used in...
845 (gray_TWorker): ... here.
846 (gray_render_span): Move pixmap flow check from here...
847 (gray_raster_render): .. to here.
848
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -04008492016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
850
851 [smooth] Reduce stack of band boundaries.
852
853 * src/smooth/ftgrays.c (gray_TBand): Removed.
854 (gray_convert_glyph): Updated to stack band boundaries concisely.
855
Werner Lembergf3e71ba2016-08-26 10:31:30 +02008562016-08-26 Werner Lemberg <wl@gnu.org>
857
Werner Lemberg57aa8392016-08-26 11:59:50 +0200858 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
859
8602016-08-26 Werner Lemberg <wl@gnu.org>
861
Werner Lemberg3c61a2f2016-08-26 11:50:09 +0200862 [cid] Fix commit from 2016-05-16.
863
864 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
865
8662016-08-26 Werner Lemberg <wl@gnu.org>
867
Werner Lembergf3e71ba2016-08-26 10:31:30 +0200868 [sfnt] Cache offset and size to bitmap data table.
869
870 This commit avoids `EBDT' and friends being looked up again and
871 again while loading a single embedded bitmap.
872
873 * include/freetype/internal/tttypes.h (TT_FaceRec)
874 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
875 `ebdt_size'.
876
877 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
878 (tt_face_load_sbit): ... this function; also store the table size
879 and offset.
880
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04008812016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
882
883 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
884
Werner Lemberga660e3d2016-08-26 00:23:27 +02008852016-08-26 Werner Lemberg <wl@gnu.org>
886
887 [type1] Fix heap buffer overflow.
888
889 Reported as
890
891 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
892
893 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
894 contain glyph names.
895
Werner Lemberg327f2e32016-08-25 12:46:08 +02008962016-08-25 Werner Lemberg <wl@gnu.org>
897
Werner Lemberg69ce9732016-08-25 19:49:52 +0200898 [sfnt] Fix previous commit (#48901).
899
900 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
901
9022016-08-25 Werner Lemberg <wl@gnu.org>
903
Werner Lembergacd18792016-08-25 17:12:46 +0200904 [sfnt] Speed up handling of invalid format 4 cmaps.
905
906 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
907 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
908
9092016-08-25 Werner Lemberg <wl@gnu.org>
910
Werner Lemberg327f2e32016-08-25 12:46:08 +0200911 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
912
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04009132016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
914
915 [smooth] Simplify span rendering.
916
917 This removes unnecessary complexity of span merging and buffering.
918 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -0400919 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -0400920
921 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
922 (gray_TWorker): Remove span buffer and related fields.
923 (gray_sweep, gray_hline): Updated.
924
925 * include/freetype/ftimage.h: Remove documentation note about
926 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
927
Werner Lembergcf4224a2016-08-16 06:44:23 +02009282016-08-16 Werner Lemberg <wl@gnu.org>
929
Werner Lemberga4c2a312016-08-22 19:32:34 +0200930 [truetype] Fix `MPS' instruction.
931
932 According to Greg Hitchcock, MPS in DWrite really returns the point
933 size.
934
935 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
936
937 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
938
939 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
940 member.
941
942 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
943 (Ins_MPS): Fix instruction.
944
9452016-08-16 Werner Lemberg <wl@gnu.org>
946
Werner Lemberg8521ad92016-08-16 13:44:38 +0200947 [lzw] Optimize last commit.
948
949 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
950 conditional clause.
951
9522016-08-16 Werner Lemberg <wl@gnu.org>
953
Werner Lemberg548f68d2016-08-16 09:46:40 +0200954 [lzw] Avoid invalid left shift.
955
Werner Lemberg6df68332016-08-16 09:50:07 +0200956 Reported as
957
958 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
959
Werner Lemberg548f68d2016-08-16 09:46:40 +0200960 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
961
9622016-08-16 Werner Lemberg <wl@gnu.org>
963
Werner Lemberg8d7b9192016-08-16 08:07:58 +0200964 [lzw] Avoid buffer overrun.
965
966 Reported as
967
968 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
969
970 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
971 underflow.
972
9732016-08-16 Werner Lemberg <wl@gnu.org>
974
Werner Lembergcf4224a2016-08-16 06:44:23 +0200975 [truetype] Fix compiler warning.
976
977 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
978
Werner Lemberg248f5622016-08-13 06:53:53 +02009792016-08-13 Werner Lemberg <wl@gnu.org>
980
981 [winfonts] Avoid zero bitmap width and height.
982
983 Reported as
984
985 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
986
987 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
988 (FNT_Load_Glyph): Check for zero pitch.
989
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02009902016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
991
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -0400992 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
993
9942016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
995
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -0400996 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
997
9982016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
999
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02001000 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
1001
Peter Klotz3b37bfc2016-08-10 22:38:08 -040010022016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
1003
1004 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
1005
Werner Lemberg5224aae2016-08-10 19:47:29 +020010062016-08-10 Werner Lemberg <wl@gnu.org>
1007
1008 [sfnt] Use correct type for `italicAngle' field (#48732).
1009
1010 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
1011
Werner Lemberg53059f92016-08-07 09:01:33 +020010122016-08-06 Jon Spencer <jon@jonspencer.ca>
1013
1014 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
1015
1016 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
1017 advance value from the font table and then scales it by the
1018 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
1019 set that value for bitmap fonts and the advance gets scaled to zero.
1020
1021 Taken from
1022
1023 https://github.com/behdad/harfbuzz/issues/252
1024
1025 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
1026 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
1027
10282016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02001029
1030 [truetype] Fix GX variation handling of composites.
1031
1032 * src/truetype/ttgload.c (load_truetype_glyph)
1033 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
1034
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040010352016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1036
1037 [smooth] Minor refactoring.
1038
1039 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
1040 Updated.
1041
Werner Lembergfae4ec02016-07-29 06:43:32 +020010422016-07-29 Werner Lemberg <wl@gnu.org>
1043
1044 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
1045
1046 Since 2016-05-16 we detect infinite recursion directly.
1047
1048 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
1049 `maxComponentDepth'.
1050 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
1051 `maxComponentDepth' is not valid. Instead, simply adjust its value
1052 and emit a tracing message.
1053
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020010542016-07-26 Werner Lemberg <wl@gnu.org>
1055
1056 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
1057
1058 No functional change.
1059
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020010602016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
1061
1062 [truetype] Record the end of IDEFs.
1063
1064 To match the logic in FDEF. The value of the end is only used for
1065 bound-checking in `Ins_JMPR', so it may not have been obvious that
1066 it was not recorded. Tested (as part of Font Validator 2.0) all the
1067 fonts on Fedora and did not see any change.
1068
1069 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
1070
Werner Lemberge69f34b2016-07-19 07:06:19 +020010712016-07-19 Werner Lemberg <wl@gnu.org>
1072
Werner Lemberg7f631052016-07-19 21:35:58 +02001073 [truetype] Sanitizer fix, second try.
1074
1075 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1076 tests and use only one slot more.
1077
10782016-07-19 Werner Lemberg <wl@gnu.org>
1079
Werner Lemberge69f34b2016-07-19 07:06:19 +02001080 [truetype] Sanitizer fix.
1081
1082 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
1083 to fix nested loops.
1084
Werner Lemberga3b70d72016-07-18 06:23:36 +020010852016-07-18 Werner Lemberg <wl@gnu.org>
1086
1087 [truetype] Make GETDATA work only for GX fonts.
1088
1089 * src/truetype/ttinterp.c (opcode_name): Updated.
1090 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
1091 (TT_RunIns): Updated.
1092
10932016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02001094
Werner Lemberg8c930132016-07-17 22:40:31 +02001095 [truetype] Add support for Apple's
1096
1097 GETDATA[], opcode 0x92
1098
1099 bytecode instruction. It always returns 17, and we have absolutely
1100 no idea what it is good for...
1101
1102 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
1103 (Ins_GETDATA): New function.
1104 (TT_RunIns): Add it.
1105
11062016-07-16 Werner Lemberg <wl@gnu.org>
1107
Werner Lemberge0843602016-07-16 18:46:28 +02001108 [truetype] Add bytecode support for GX variation fonts.
1109
1110 This commit implements undocumented (but confirmed) stuff from
1111 Apple's old bytecode engine.
1112
1113 GETVARIATION[], opcode 0x91
1114 This opcode pushes normalized variation coordinates for all axes
1115 onto the stack (in 2.14 format). Coordinate of first axis gets
1116 pushed first.
1117
1118 GETINFO[], selector bit 3
1119 If GX variation support is enabled, bit 10 of the result is set
1120 to 1.
1121
1122 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
1123 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
1124 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
1125 bit 3, checking support for variation glyph hinting.
1126 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
1127 to implement opcode 0x91.
1128 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
1129
11302016-07-16 Werner Lemberg <wl@gnu.org>
1131
Werner Lemberg32a32062016-07-16 16:39:26 +02001132 [truetype] Fix GETINFO bytecode instruction.
1133
1134 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
1135 stretching information.
1136
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020011372016-07-16 Behdad Esfahbod <behdad@behdad.org>
1138
1139 [truetype] Make all glyphs in `Zycon' GX font work.
1140
1141 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1142 tests.
1143
Werner Lemberga3b61252016-07-16 08:16:16 +020011442016-07-16 Werner Lemberg <wl@gnu.org>
1145
1146 [truetype] Fix GX delta tracing.
1147
1148 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
1149 relative point movements.
1150
11512016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02001152
1153 [truetype] More fixes for GX.
1154
1155 This finally fixes the rendering of the cyclist and the lizard in
1156 the `Zycon' font.
1157
1158 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
1159 index is always cumulative.
1160
1161 (tt_handle_deltas): Rename to...
1162 (tt_interpolate_deltas): ... This.
1163 Add new parameter for output point array.
1164 Update caller.
1165
1166 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
1167 the intermediate results of `tt_interpolate_deltas' that are to be
1168 added to `outline->points'.
1169
Werner Lembergaafff572016-07-16 06:41:39 +020011702016-07-15 Werner Lemberg <wl@gnu.org>
1171
1172 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
1173
1174 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
1175
1176 Reported by Alexei.
1177
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020011782016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
1179
1180 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
1181
1182 Problem reported by Hin-Tak Leung.
1183
Werner Lemberg894c0222016-07-15 10:23:11 +020011842016-07-15 Werner Lemberg <wl@gnu.org>
1185
Werner Lemberg1831e6f2016-07-15 10:35:32 +02001186 [autofit] Update and improve segment and edge tracing.
1187
1188 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
1189 `delta' also.
1190 Don't show first point of segment as a replacement for `pos'; this
1191 is (a) misleading, since the difference to `pos' can be almost
1192 arbitrarily large in corner cases, and (b) it is better to have all
1193 segment data in font units instead of a single value given in output
1194 space coordinates.
1195 Improve layout.
1196 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
1197 values for convenience.
1198 Improve layout.
1199
12002016-07-15 Werner Lemberg <wl@gnu.org>
1201
Werner Lemberg894c0222016-07-15 10:23:11 +02001202 [autofit] For edges, reject segments wider than 1px (#41334).
1203
1204 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
1205
1206 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
1207 `delta'.
1208 (af_latin_hints_compute_edges): Reject segments with a delta larger
1209 than 0.5px.
1210
Werner Lemberg631e2182016-07-14 06:25:05 +020012112016-07-14 Werner Lemberg <wl@gnu.org>
1212
Werner Lembergff655432016-07-14 15:01:55 +02001213 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
1214
12152016-07-14 Werner Lemberg <wl@gnu.org>
1216
Werner Lembergee3f36f2016-07-14 10:25:20 +02001217 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
1218
1219 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
1220
12212016-07-14 Werner Lemberg <wl@gnu.org>
1222
Werner Lemberg631e2182016-07-14 06:25:05 +02001223 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
1224
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020012252016-07-14 Behdad Esfahbod <behdad@behdad.org>
1226
1227 [truetype] Fix gxvar delta interpolation.
1228
1229 The coordinates of the base font should be used for interpolation
1230 purposes, NOT the current points (i.e., the result of accumulation
1231 of previous deltas).
1232
1233 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
1234 `points_org' before looping over all tuples.
1235
Werner Lembergf6aa0892013-05-10 07:58:47 +02001236
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001237----------------------------------------------------------------------------
1238
Werner Lemberg8160b202016-09-08 08:42:10 +02001239Copyright 2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001240David Turner, Robert Wilhelm, and Werner Lemberg.
1241
1242This file is part of the FreeType project, and may only be used, modified,
1243and distributed under the terms of the FreeType project license,
1244LICENSE.TXT. By continuing to use, modify, or distribute this file you
1245indicate that you have read the license and understand and accept it
1246fully.
1247
1248
1249Local Variables:
1250version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00001251coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001252End: