blob: 70268d26ebadca170f734e38f83bb38e589d5e90 [file] [log] [blame]
Dave Arnoldbcae6572016-12-05 22:08:15 +010012016-12-06 Dave Arnold <darnold@adobe.com>
2
3 Add `FT_Get_Var_Design_Coordinates' function.
4
5 Note that the low-level functions aren't implemented yet.
6
7 * include/freetype/ftmm.h: Declare.
8
9 * include/freetype/internal/services/svmm.h
10 (FT_Get_Var_Design_Func): New typedef.
11 (MultiMasters): New MM service function `get_var_design'.
12 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
13 Update all callers.
14
15 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
16
17 * src/truetype/ttdriver.c: Updated.
18
19 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
20 handle `get_var_design' service.
21 * src/truetype/ttgxvar.h: Updated.
22
23 * src/type1/t1driver.c: Updated.
24
25 * src/type1/t1load.c (T1_Get_Var_Design): New dummp function to
26 handle `get_var_design' service.
27 * src/type1/t1load.h: Updated.
28
Werner Lembergc0fae7d2016-12-06 11:13:19 +0100292016-12-06 Werner Lemberg <wl@gnu.org>
30
31 * src/type1/t1load.c (parse_subrs): Fix memory leak.
32
33 The `subrs' keyword might erroneously occur multiple times.
34
35 Reported as
36
37 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
38
Werner Lemberg602be7c2016-12-01 11:36:37 +0100392016-12-01 Werner Lemberg <wl@gnu.org>
40
41 [gzip] Improve building with external zlib (#49673).
42
43 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
44 the following error.
45
46 ftgzip.c
47 zlib-1.2.8\zlib.h(86): error C2061:
48 syntax error: identifier 'z_const'
49 zlib-1.2.8\zlib.h(94): error C2054:
50 expected '(' to follow 'z_const'
51 zlib-1.2.8\zlib.h(94): error C2085:
52 'msg': not in formal parameter list
53 ...
54 zlib-1.2.8\zlib.h(877): fatal error C1003:
55 error count exceeds 100; stopping compilation
56
57 The error happens because FreeType keeps an own copy of zlib-1.1.4
58 under `src/gzip'. When building `src/gzip/ftgzip.c' with
59 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
60
61 #include <zlib.h>
62
63 which correctly finds an external `zlib.h', but `zlib.h' itself has
64 a line
65
66 #include "zconf.h"
67
68 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
69 compiling the files in `src/gzip'.
70
71 * src/gzip/zconf.h: Rename to...
72 * src/gzip/ftzconf.h: ... this.
73 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
74
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +0100752016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
76
77 [autofit] Fix Emscripten crash (patch #9180).
78
79 Function calls through pointers must use a matching signature to
80 work on Emscripten, since such calls are dispatched through lookup
81 tables grouped by signature.
82
83 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
84 typedef.
85
Werner Lembergd949a3d2016-11-29 12:09:56 +0100862016-11-29 Werner Lemberg <wl@gnu.org>
87
Werner Lemberg1d28f692016-11-29 18:45:22 +010088 [smooth] Revert previous commit. Already fixed with 6ca54c64.
89
902016-11-29 Werner Lemberg <wl@gnu.org>
91
Werner Lembergd949a3d2016-11-29 12:09:56 +010092 [smooth] Avoid conditional jump on uninitialized value (#49711).
93
94 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
95
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +0100962016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
97
98 [autofit] Code shuffling.
99
100 Also improve some comments and remove unused code.
101
102 No functional change.
103
104 * src/autofit/afloader.c (af_loader_load_g): Merged with...
105 (af_loader_load_glyph): ...this function.
106 Split off emboldening code into...
107 (af_loader_embolden_glyph_in_slot): ... this function.
108
Werner Lemberg78150502016-11-17 12:00:20 +01001092016-11-17 Werner Lemberg <wl@gnu.org>
110
111 Better support of LLP64 systems with gcc (and clang).
112
113 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
114
115 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
116 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
117
Werner Lembergdd26e3d2016-11-10 12:03:32 +01001182016-11-10 Werner Lemberg <wl@gnu.org>
119
120 Fix `lcd_weights' array size.
121
122 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
123
124 Reported by Nikolaus.
125
Werner Lemberg565db952016-11-06 12:33:51 +01001262016-11-06 Werner Lemberg <wl@gnu.org>
127
Werner Lemberge1ee5472016-11-06 12:39:05 +0100128 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
129
1302016-11-06 Werner Lemberg <wl@gnu.org>
131
Werner Lemberg1c6fd992016-11-06 12:37:55 +0100132 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
133
134 It's unavoidable to call the PNG engine, but to get the metrics it
135 is sufficient to read the PNG image's header only.
136
137 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
138 allocation of the glyph slot.
139 * src/sfnt/pngshim.h: Updated.
140 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
141 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
142
1432016-11-06 Werner Lemberg <wl@gnu.org>
144
Werner Lemberg565db952016-11-06 12:33:51 +0100145 [sfnt] Speed up `sbix' lookup.
146
147 This also fixes a bug introduced in 2016-10-01 which prevents
148 display of embedded bitmap fonts that use the `sbix' format.
149
150 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
151 offset also in `ebdt_size' and `ebdt_start', respectively. This
152 makes the test for an embedded bitmap data table succeed for this
153 format.
154
155 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
156 `ebdt_size' and `ebdt_start'
157 (tt_face_load_sbix_image): Ditto.
158
Werner Lemberg37e193e2016-11-06 12:32:51 +01001592016-11-06 Seigo Nonaka <nona@google.com>
160 Werner Lemberg <wl@gnu.org>
161
162 Introduce a way of quickly retrieving (embedded) bitmap metrics.
163
164 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
165 until the user calls `FT_Render_Glyph'. However, it always
166 allocates memory for bitmaps and copies or decodes the contents of a
167 bitmap glyph, which can be quite slow for PNG data.
168
169 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
170 macro.
171
172 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
173 FT_LOAD_BITMAP_METRICS_ONLY is used.
174
175 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
176 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
177 the glyph slot.
178 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
179 tt_face_load_sbit_image): Updated.
180
181 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
182 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
183
184 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
185 argument to control allocation of the glyph slot.
186 * src/pfr/pfrobjs (pfr_slot_load): Updated.
187
188 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
189
190 * docs/CHANGES: Updated.
191
1922016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +0100193
194 Synchronize with gnulib (#49448).
195
196 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
197 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
198 current version of `intprops.h'.
199 Other minor synchronization to reduce code differences between the
200 three files.
201
Behdad Esfahbodb72858c2016-11-03 06:41:00 +01002022016-11-03 Behdad Esfahbod <behdad@behdad.org>
203
204 [truetype] Clamp variation requests to valid range.
205
206 This is required by OpenType 1.8; it also avoids rounding surprises.
207
208 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
209 outside of the allowed range to always stay within the range instead
210 of producing an error.
211
Werner Lemberg328d6842016-10-29 00:18:56 +02002122016-10-29 Werner Lemberg <wl@gnu.org>
213
214 [truetype] Remove clang warnings.
215
216 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
217 loop counter handling.
218
219 * src/truetype/ttinterp.c: Updated.
220 (Ins_SCANTYPE): Use signed constant.
221 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
222
Werner Lembergddf38722016-10-27 07:27:27 +02002232016-10-27 Werner Lemberg <wl@gnu.org>
224
225 [truetype] Fix commit from 2014-11-24.
226
227 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
228
229 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
230 logic.
231
Werner Lemberg56140902016-10-26 08:10:59 +02002322016-10-26 Werner Lemberg <wl@gnu.org>
233
Werner Lemberg9c45ac32016-10-26 16:00:00 +0200234 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
235
236 * include/freetype/ftmm.h: Declare.
237
238 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
239 New typedef.
240 (MultiMasters): New MM service function `get_mm_blend'.
241 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
242 Update all callers.
243
244 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
245 FT_Get_Var_Blend_Coordinates): Implement.
246
247 * src/truetype/ttdriver.c: Updated.
248
249 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
250 `get_mm_blend' service.
251 * src/truetype/ttgxvar.h: Updated.
252
253 * src/type1/t1driver.c: Updated.
254
255 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
256 `get_mm_blend' service.
257 * src/type1/t1load.h: Updated.
258
259 * docs/CHANGES: Document.
260
2612016-10-26 Werner Lemberg <wl@gnu.org>
262
Werner Lemberg56140902016-10-26 08:10:59 +0200263 * src/type1/t1load.c (parse_subrs): Fix limit check.
264
265 Reported as
266
267 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
268
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -04002692016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
270
271 [cff] Correct cmap format reporting (#24819).
272
273 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
274 charmap instead of guessing its format and language.
275
Werner Lemberg57741402016-10-22 18:34:48 +02002762016-10-22 Werner Lemberg <wl@gnu.org>
277
Werner Lemberg50816742016-10-22 19:16:08 +0200278 [truetype] Fix SCANTYPE instruction (#49394).
279
280 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
281
2822016-10-22 Werner Lemberg <wl@gnu.org>
283
Werner Lemberg57741402016-10-22 18:34:48 +0200284 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
285
286 * src/sfnt/ttpost.c (load_format_25): We need at least a single
287 table entry.
288
Werner Lemberg7eeaf982016-10-14 08:58:17 +02002892016-10-14 Werner Lemberg <wl@gnu.org>
290
291 [truetype] Fix handling of `cvar' table data.
292
293 Reported as
294
295 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
296
297 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
298 indices.
299
Werner Lemberg92281222016-10-11 07:12:12 +02003002016-10-11 Werner Lemberg <wl@gnu.org>
301
Werner Lemberg9c54d122016-10-11 08:57:55 +0200302 [psaux] Fix handling of invalid flex subrs.
303
304 Problem reported as
305
306 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
307
308 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
309 <op_callothersubr>: Set `flex_state' after error checking.
310
3112016-10-11 Werner Lemberg <wl@gnu.org>
312
Werner Lemberg92281222016-10-11 07:12:12 +0200313 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
314
Werner Lembergd61b0422016-10-08 19:20:33 +02003152016-10-08 Werner Lemberg <wl@gnu.org>
316
Werner Lemberg6b354932016-10-08 20:26:59 +0200317 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
318
3192016-10-08 Werner Lemberg <wl@gnu.org>
320
Werner Lembergd61b0422016-10-08 19:20:33 +0200321 [cid] Fix parsing of subr offsets.
322
323 Bug introduced 2016-05-16.
324
325 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
326
Werner Lembergfcc0ee82016-10-01 20:12:25 +02003272016-10-01 Werner Lemberg <wl@gnu.org>
328
329 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
330
331 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
332 a bitmap data table.
333
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -04003342016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
335
336 [smooth] Remove impossibility.
337
338 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
339 (gray_convert_glyph): Remove impossible condition and clean up.
340
Werner Lembergbf902392016-09-29 13:04:46 +02003412016-09-29 Werner Lemberg <wl@gnu.org>
342
Werner Lemberg35764872016-09-30 08:11:52 +0200343 [pcf] Enrich family name with foundry name and glyph width info.
344
345 This is a very old patch from openSuSE (from 2006, submitted to
346 FreeType in 2011) that I forgot to apply.
347
348 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
349
350 Prepend the foundry name plus a space to the family name. There are
351 many fonts just called `Fixed' which look completely different, and
352 which have nothing to do with each other. When selecting `Fixed' in
353 KDE or Gnome one gets results that appear rather random, the style
354 changes often if one changes the size and one cannot select some
355 fonts at all.
356
357 We also check whether we have `wide' characters; all put together,
358 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
359
360 * src/pcf/pcfread.c (pcf_load_font): Implement it.
361
362 * docs/CHANGES: Document it.
363
3642016-09-29 Werner Lemberg <wl@gnu.org>
365
Werner Lemberg71b617d2016-09-29 19:53:39 +0200366 [ftfuzzer] Speed up.
367
368 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
369 check for embedded bitmaps if we have a non-default instance.
370
3712016-09-29 Werner Lemberg <wl@gnu.org>
372
Werner Lemberg2067c692016-09-29 19:49:07 +0200373 [truetype] Disallow bitmap strokes for non-default instances.
374
375 Also speed up access of default instances if GX variations are
376 active.
377
378 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
379 `is_default_instance' member.
380
381 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
382 `is_default_instance'.
383
384 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
385 load_truetype_glyph): Add test for default instance.
386 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
387
388 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
389 `is_default_instance'.
390
3912016-09-29 Werner Lemberg <wl@gnu.org>
392
Werner Lembergbf902392016-09-29 13:04:46 +0200393 [truetype] Clean up `TT_Face' structure.
394
395 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
396 fields `horz_metrics' and `vert_metrics'.
397 Update documentation.
398
399 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
400
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02004012016-09-28 Werner Lemberg <wl@gnu.org>
402
Werner Lemberg45cad2e2016-09-28 19:10:52 +0200403 More FT_ZERO usage.
404
405 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
406 s/ft_memset/FT_MEM_ZERO/.
407
408 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
409 s/ft_memset/FT_ARRAY_ZERO/.
410
411 * src/raster/ftraster.c (FT_ZERO): Define.
412 (ft_black_new): Use it.
413 * src/raster/ftrend1.c (ft_raster1_get_cbox):
414 s/FT_MEM_ZERO/FT_ZERO/.
415
416 * src/smooth/ftgrays.c (FT_ZERO): Define.
417 (gray_raster_new): Use it.
418 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
419 s/FT_MEM_ZERO/FT_ZERO/.
420
4212016-09-28 Werner Lemberg <wl@gnu.org>
422
Werner Lemberg2ecf89b2016-09-28 19:06:21 +0200423 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
424
Werner Lemberg0d945922016-09-27 08:44:31 +02004252016-09-27 Werner Lemberg <wl@gnu.org>
426
Werner Lemberga3e2c832016-09-27 21:42:02 +0200427 [truetype] Trace number of executed opcodes.
428
429 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
430
4312016-09-27 Werner Lemberg <wl@gnu.org>
432
Werner Lemberge27b8a52016-09-27 21:21:01 +0200433 [truetype] Speed up `TT_Load_Glyph'.
434
435 This avoids additional calls to `tt_face_lookup_table' for the
436 `glyf' table, which can be expensive.
437
438 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
439 `glyf_offset' field to ...
440 (TT_FaceRec): ... this structure.
441 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
442 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +0200443 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +0200444
4452016-09-27 Werner Lemberg <wl@gnu.org>
446
Werner Lemberg0d945922016-09-27 08:44:31 +0200447 [truetype] Introduce dynamic limits for some bytecode opcodes.
448
449 This speeds up FreeType's handling of malformed fonts.
450
451 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
452 of twilight points, the total number of negative jumps, and the
453 total number of loops in LOOPCALL opcodes. The values are based on
454 the number of points and entries in the CVT table.
455 (Ins_JMPR): Test negative jump counter.
456 (Ins_LOOPCALL): Test loopcall counter.
457
458 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
459
460 * docs/CHANGES: Updated.
461
Werner Lembergd11e8b62016-09-25 15:32:04 +02004622016-09-25 Werner Lemberg <wl@gnu.org>
463
Werner Lemberga7649632016-09-25 16:29:05 +0200464 [truetype] Sanitize only last entry of `loca' table.
465
466 Without this patch, a loca sequence like `0 100000 0 100000 ...',
467 where value 100000 is larger than the `glyf' table size, makes
468 FreeType handle the whole `glyf' table as a single glyph again and
469 again, which is certainly invalid (and can be very slow, too).
470
471 * src/truetype/ttpload.c (tt_face_get_location): Implement.
472 Improve tracing messages.
473
4742016-09-25 Werner Lemberg <wl@gnu.org>
475
Werner Lembergd11e8b62016-09-25 15:32:04 +0200476 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
477
Werner Lemberg2f2e73c2016-09-24 22:42:58 +02004782016-09-24 Werner Lemberg <wl@gnu.org>
479
480 [autofit] Tracing fixes.
481
482 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
483 functions only if we actually do tracing.
484
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -04004852016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
486
487 [smooth] Reduce divisions in the line renderer.
488
489 We don't need some divisions if a line segments stays within a single
490 row or a single column of pixels.
491
492 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
493 conditional.
494
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -04004952016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
496
497 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
498
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -04004992016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
500
501 [smooth] Another tiny speed-up.
502
503 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
504 (gray_record_cell): ... this function.
505
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04005062016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
507
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -0400508 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
509
5102016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
511
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -0400512 [smooth] Fix valgrind warning and reoptimize.
513
514 The algorithm calls `gray_set_cell' at the start of each new contour
515 or when the contours cross the cell boundaries. Double-checking for
516 that is wasteful.
517
518 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
519 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
520
Werner Lemberge421a0b2016-09-10 08:02:30 +02005212016-09-10 Werner Lemberg <wl@gnu.org>
522
523 [sfnt] Fix previous commit.
524
525 Problems reported as
526
527 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
528
529 We now map the strike index right before accessing the physical
530 data, not earlier.
531
532 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
533 after creating the map so that...
534
535 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
536 can be used before and after setting up `sbit_strike_map'.
537 (tt_face_set_sbit_strike): Revert change.
538 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
539
540 * src/truetype/ttdriver.c (tt_size_select): Revert change.
541
Werner Lembergd609b7c2016-09-09 22:11:07 +02005422016-09-09 Werner Lemberg <wl@gnu.org>
543
Werner Lembergdeb26152016-09-09 22:13:33 +0200544 [ftfuzzer] Minor improvements.
545
546 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
547 invalid strikes.
548 Use better values for call to `FT_Set_Char_Size'.
549
5502016-09-09 Werner Lemberg <wl@gnu.org>
551
Werner Lembergd609b7c2016-09-09 22:11:07 +0200552 [sfnt] Don't provide (completely) broken strike data.
553
554 FreeType tries to sanitize strike header data; we now reject
555 completely broken ones.
556
557 * include/freetype/internal/tttypes.h (TT_FaceRec): New
558 `sbit_strike_map' array pointer.
559
560 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
561 width or height would be zero.
562 Add tracing message in case of error.
563
564 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
565 only using (more or less) valid strike header data for
566 FT_Face's `available_sizes' array.
567 (sfnt_done_face): Updated.
568
569 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
570 `sbit_strike_map'.
571 (tt_face_load_strike_metrics): Improve tracing.
572
573 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
574
Werner Lemberg9749f262016-09-08 07:51:03 +02005752016-09-08 Werner Lemberg <wl@gnu.org>
576
Werner Lembergd2d59682016-09-08 09:04:32 +0200577 * Version 2.7 released.
578 =======================
579
580
581 Tag sources with `VER-2-7'.
582
583 * docs/VERSION.TXT: Add entry for version 2.7.
584
585 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
586 builds/windows/vc2005/index.html,
587 builds/windows/vc2008/freetype.vcproj,
588 builds/windows/vc2008/index.html,
589 builds/windows/vc2010/freetype.vcxproj,
590 builds/windows/vc2010/index.html,
591 builds/windows/visualc/freetype.dsp,
592 builds/windows/visualc/freetype.vcproj,
593 builds/windows/visualc/index.html,
594 builds/windows/visualce/freetype.dsp,
595 builds/windows/visualce/freetype.vcproj,
596 builds/windows/visualce/index.html,
597 builds/wince/vc2005-ce/freetype.vcproj,
598 builds/wince/vc2005-ce/index.html,
599 builds/wince/vc2008-ce/freetype.vcproj,
600 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
601
602 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
603 (FREETYPE_PATCH): Set to 0.
604
605 * builds/unix/configure.raw (version_info): Set to 18:6:12.
606 * CMakeLists.txt (VERSION_MINOR): Set to 7.
607 (VERSION_PATCH): Set to 0.
608
609 * docs/CHANGES: Updated.
610
6112016-09-08 Werner Lemberg <wl@gnu.org>
612
Werner Lembergb1e7b682016-09-08 08:56:34 +0200613 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
614
615 This fixes the `multi' build.
616
6172016-09-08 Werner Lemberg <wl@gnu.org>
618
Werner Lemberg9749f262016-09-08 07:51:03 +0200619 [autofit] Another improvement to Armenian support.
620
621 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
622
623 * src/autofit/afscript.h: Use better suited characters to derive
624 default stem widths.
625
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04006262016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
627
628 * src/smooth/ftgrays.c (gray_hline): Microptimize.
629
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04006302016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
631
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -0400632 [smooth] Operate in absolute bitmap coordinates.
633
634 Simpler bitmap addressing improves performance by 1.5%.
635
636 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
637 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
638 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
639
6402016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
641
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -0400642 [smooth] Improve contour start (take 2).
643
644 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
645 instead of...
646 (gray_start_cell): ... this function, which is removed.
647 (gray_convert_glyph): Make initial y-coordinate invalid.
648
Werner Lembergebbb8b22016-09-06 16:28:57 +02006492016-09-06 Werner Lemberg <wl@gnu.org>
650
651 [type1] MM fonts support exactly zero named instances (#48748).
652
653 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
654
Jonathan Kewa15133e2016-09-06 06:33:36 +02006552016-09-06 Jonathan Kew <jfkthame@gmail.com>
656
657 [cff] Fix uninitialized memory.
658
659 Problem reported as
660
661 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
662
663 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
664 array to handle a `get' opcode without a previous `put'.
665
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04006662016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
667
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -0400668 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
669
6702016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
671
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -0400672 [smooth] Improve contour start.
673
674 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
675 instead of...
676 (gray_start_cell): ... this function, which is removed.
677
Werner Lembergc9adf1a2016-09-05 07:32:37 +02006782016-09-05 Werner Lemberg <wl@gnu.org>
679
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +0200680 [cff] Fix memory initialization.
681
682 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
683 variants of FreeType's memory allocation macros don't do zeroing.
684
6852016-09-05 Werner Lemberg <wl@gnu.org>
686
Werner Lemberg1c8bb632016-09-05 08:13:42 +0200687 [ftrandom] Minor improvements.
688
689 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
690 500.
691
692 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
693 directories to ...
694 (INCLUDES): ... this new variable.
695 (LDFLAGS): New variable.
696 (ftrandom.o, ftrandom): Updated.
697
6982016-09-05 Werner Lemberg <wl@gnu.org>
699
Werner Lembergc9adf1a2016-09-05 07:32:37 +0200700 [autofit] Improve Armenian support.
701
702 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
703
704 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
705 selection of characters.
706
707 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
708
Werner Lemberg4b28f6a2016-09-04 19:05:45 +02007092016-09-04 Werner Lemberg <wl@gnu.org>
710
711 [ftrandom] Improve Makefile.
712
713 It now supports both a normal build (`./configure && make') and a
714 development build (`make devel').
715
716 * src/tools/ftrandom/Makefile (VPATH): Set it so that
717 `libfreetype.a' gets searched in both `objs' (for the development
718 build) and `objs/.libs' (for a normal build which uses libtool).
719 (LIBS): Add missing libraries.
720 (ftrandom.o): New rule.
721 (ftrandom): Use automatic variables.
722
Werner Lembergf0fa7a62016-09-03 06:33:36 +02007232016-09-03 Werner Lemberg <wl@gnu.org>
724
Werner Lemberg4e659d72016-09-03 18:14:00 +0200725 [truetype] More fixes for handling of GX deltas.
726
727 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
728
729 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
730 sanity test for glyph variation array header size.
731 Always set stream position before reading packed x and y deltas.
732 Fix thinko w.r.t. `localpoints' array.
733
7342016-09-03 Werner Lemberg <wl@gnu.org>
735
Werner Lembergca8e98d2016-09-03 13:06:16 +0200736 [ftrandom] Various fixes.
737
738 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
739 default.
740 (error_fraction): Make it of type `double' to work as advertized –
741 this was completely broken.
742 Update all related code.
743 (error_count, fcnt): Make it unsigned to fix compiler warnings.
744 Update all related code.
745 (fontlist): Change `len' member to `long' to fix compiler warnings.
746 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
747 unused variables.
748 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
749 (ExecuteTest): Ditto.
750 Call `FT_Done_FreeType'.
751 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
752 int'.
753 (usage): Improve output.
754 (main): Fix compiler warnings.
755
756 * src/tools/ftrandom/README: Updated.
757
7582016-09-03 Werner Lemberg <wl@gnu.org>
759
Werner Lembergb98dfda2016-09-03 08:20:31 +0200760 [base] Avoid negative bitmap stroke dimensions (#48985).
761
762 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
763 actually successful. For example, this can fail for value
764 -32768 if the type is `signed short'. If there are problems,
765 disable the stroke.
766
7672016-09-03 Werner Lemberg <wl@gnu.org>
768
Werner Lembergf0fa7a62016-09-03 06:33:36 +0200769 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
770
771 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
772
Werner Lembergd8ef7262016-09-02 23:27:50 +02007732016-09-02 Werner Lemberg <wl@gnu.org>
774
Werner Lembergd87bb912016-09-02 23:56:27 +0200775 [unix] Enable 64bit support in file system access (#48962).
776
777 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
778
7792016-09-02 Werner Lemberg <wl@gnu.org>
780
Werner Lembergd8ef7262016-09-02 23:27:50 +0200781 [sfnt] Avoid left shift of negative value (#48980).
782
783 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
784 constant.
785
7862016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +0200787
788 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
789
Werner Lemberg7a13dc02016-09-02 08:24:01 +02007902016-09-02 Werner Lemberg <wl@gnu.org>
791
792 Some preparations for the next release.
793
794 * include/freetype/config/ftoption.h
795 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
796
797 * docs/CHANGES: Updated.
798
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04007992016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
800
801 [smooth] Simplify span rendering more.
802
803 It turns out that there is significant cost associated with `FT_Span'
804 creation and calls to `gray_render_span' because it happerns so
805 frequently. This removes these steps from our internal use but leaves
806 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
807 is about 5%.
808
809 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
810 migrated to...
811 (gray_hline): ... here.
812
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04008132016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
814
815 [smooth] Streamline pixmap drawing a bit more.
816
817 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -0400818 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -0400819
820 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
821
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -04008222016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
823
824 [smooth] Streamline pixmap drawing.
825
826 This gives 2% speed improvement in rendering simple glyphs.
827
828 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
829 pointer to its bottom-left and pitch to be used in...
830 (gray_TWorker): ... here.
831 (gray_render_span): Move pixmap flow check from here...
832 (gray_raster_render): .. to here.
833
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -04008342016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
835
836 [smooth] Reduce stack of band boundaries.
837
838 * src/smooth/ftgrays.c (gray_TBand): Removed.
839 (gray_convert_glyph): Updated to stack band boundaries concisely.
840
Werner Lembergf3e71ba2016-08-26 10:31:30 +02008412016-08-26 Werner Lemberg <wl@gnu.org>
842
Werner Lemberg57aa8392016-08-26 11:59:50 +0200843 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
844
8452016-08-26 Werner Lemberg <wl@gnu.org>
846
Werner Lemberg3c61a2f2016-08-26 11:50:09 +0200847 [cid] Fix commit from 2016-05-16.
848
849 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
850
8512016-08-26 Werner Lemberg <wl@gnu.org>
852
Werner Lembergf3e71ba2016-08-26 10:31:30 +0200853 [sfnt] Cache offset and size to bitmap data table.
854
855 This commit avoids `EBDT' and friends being looked up again and
856 again while loading a single embedded bitmap.
857
858 * include/freetype/internal/tttypes.h (TT_FaceRec)
859 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
860 `ebdt_size'.
861
862 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
863 (tt_face_load_sbit): ... this function; also store the table size
864 and offset.
865
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04008662016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
867
868 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
869
Werner Lemberga660e3d2016-08-26 00:23:27 +02008702016-08-26 Werner Lemberg <wl@gnu.org>
871
872 [type1] Fix heap buffer overflow.
873
874 Reported as
875
876 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
877
878 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
879 contain glyph names.
880
Werner Lemberg327f2e32016-08-25 12:46:08 +02008812016-08-25 Werner Lemberg <wl@gnu.org>
882
Werner Lemberg69ce9732016-08-25 19:49:52 +0200883 [sfnt] Fix previous commit (#48901).
884
885 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
886
8872016-08-25 Werner Lemberg <wl@gnu.org>
888
Werner Lembergacd18792016-08-25 17:12:46 +0200889 [sfnt] Speed up handling of invalid format 4 cmaps.
890
891 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
892 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
893
8942016-08-25 Werner Lemberg <wl@gnu.org>
895
Werner Lemberg327f2e32016-08-25 12:46:08 +0200896 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
897
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04008982016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
899
900 [smooth] Simplify span rendering.
901
902 This removes unnecessary complexity of span merging and buffering.
903 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -0400904 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -0400905
906 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
907 (gray_TWorker): Remove span buffer and related fields.
908 (gray_sweep, gray_hline): Updated.
909
910 * include/freetype/ftimage.h: Remove documentation note about
911 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
912
Werner Lembergcf4224a2016-08-16 06:44:23 +02009132016-08-16 Werner Lemberg <wl@gnu.org>
914
Werner Lemberga4c2a312016-08-22 19:32:34 +0200915 [truetype] Fix `MPS' instruction.
916
917 According to Greg Hitchcock, MPS in DWrite really returns the point
918 size.
919
920 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
921
922 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
923
924 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
925 member.
926
927 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
928 (Ins_MPS): Fix instruction.
929
9302016-08-16 Werner Lemberg <wl@gnu.org>
931
Werner Lemberg8521ad92016-08-16 13:44:38 +0200932 [lzw] Optimize last commit.
933
934 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
935 conditional clause.
936
9372016-08-16 Werner Lemberg <wl@gnu.org>
938
Werner Lemberg548f68d2016-08-16 09:46:40 +0200939 [lzw] Avoid invalid left shift.
940
Werner Lemberg6df68332016-08-16 09:50:07 +0200941 Reported as
942
943 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
944
Werner Lemberg548f68d2016-08-16 09:46:40 +0200945 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
946
9472016-08-16 Werner Lemberg <wl@gnu.org>
948
Werner Lemberg8d7b9192016-08-16 08:07:58 +0200949 [lzw] Avoid buffer overrun.
950
951 Reported as
952
953 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
954
955 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
956 underflow.
957
9582016-08-16 Werner Lemberg <wl@gnu.org>
959
Werner Lembergcf4224a2016-08-16 06:44:23 +0200960 [truetype] Fix compiler warning.
961
962 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
963
Werner Lemberg248f5622016-08-13 06:53:53 +02009642016-08-13 Werner Lemberg <wl@gnu.org>
965
966 [winfonts] Avoid zero bitmap width and height.
967
968 Reported as
969
970 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
971
972 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
973 (FNT_Load_Glyph): Check for zero pitch.
974
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02009752016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
976
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -0400977 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
978
9792016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
980
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -0400981 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
982
9832016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
984
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +0200985 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
986
Peter Klotz3b37bfc2016-08-10 22:38:08 -04009872016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
988
989 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
990
Werner Lemberg5224aae2016-08-10 19:47:29 +02009912016-08-10 Werner Lemberg <wl@gnu.org>
992
993 [sfnt] Use correct type for `italicAngle' field (#48732).
994
995 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
996
Werner Lemberg53059f92016-08-07 09:01:33 +02009972016-08-06 Jon Spencer <jon@jonspencer.ca>
998
999 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
1000
1001 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
1002 advance value from the font table and then scales it by the
1003 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
1004 set that value for bitmap fonts and the advance gets scaled to zero.
1005
1006 Taken from
1007
1008 https://github.com/behdad/harfbuzz/issues/252
1009
1010 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
1011 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
1012
10132016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02001014
1015 [truetype] Fix GX variation handling of composites.
1016
1017 * src/truetype/ttgload.c (load_truetype_glyph)
1018 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
1019
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040010202016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1021
1022 [smooth] Minor refactoring.
1023
1024 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
1025 Updated.
1026
Werner Lembergfae4ec02016-07-29 06:43:32 +020010272016-07-29 Werner Lemberg <wl@gnu.org>
1028
1029 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
1030
1031 Since 2016-05-16 we detect infinite recursion directly.
1032
1033 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
1034 `maxComponentDepth'.
1035 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
1036 `maxComponentDepth' is not valid. Instead, simply adjust its value
1037 and emit a tracing message.
1038
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020010392016-07-26 Werner Lemberg <wl@gnu.org>
1040
1041 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
1042
1043 No functional change.
1044
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020010452016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
1046
1047 [truetype] Record the end of IDEFs.
1048
1049 To match the logic in FDEF. The value of the end is only used for
1050 bound-checking in `Ins_JMPR', so it may not have been obvious that
1051 it was not recorded. Tested (as part of Font Validator 2.0) all the
1052 fonts on Fedora and did not see any change.
1053
1054 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
1055
Werner Lemberge69f34b2016-07-19 07:06:19 +020010562016-07-19 Werner Lemberg <wl@gnu.org>
1057
Werner Lemberg7f631052016-07-19 21:35:58 +02001058 [truetype] Sanitizer fix, second try.
1059
1060 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1061 tests and use only one slot more.
1062
10632016-07-19 Werner Lemberg <wl@gnu.org>
1064
Werner Lemberge69f34b2016-07-19 07:06:19 +02001065 [truetype] Sanitizer fix.
1066
1067 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
1068 to fix nested loops.
1069
Werner Lemberga3b70d72016-07-18 06:23:36 +020010702016-07-18 Werner Lemberg <wl@gnu.org>
1071
1072 [truetype] Make GETDATA work only for GX fonts.
1073
1074 * src/truetype/ttinterp.c (opcode_name): Updated.
1075 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
1076 (TT_RunIns): Updated.
1077
10782016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02001079
Werner Lemberg8c930132016-07-17 22:40:31 +02001080 [truetype] Add support for Apple's
1081
1082 GETDATA[], opcode 0x92
1083
1084 bytecode instruction. It always returns 17, and we have absolutely
1085 no idea what it is good for...
1086
1087 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
1088 (Ins_GETDATA): New function.
1089 (TT_RunIns): Add it.
1090
10912016-07-16 Werner Lemberg <wl@gnu.org>
1092
Werner Lemberge0843602016-07-16 18:46:28 +02001093 [truetype] Add bytecode support for GX variation fonts.
1094
1095 This commit implements undocumented (but confirmed) stuff from
1096 Apple's old bytecode engine.
1097
1098 GETVARIATION[], opcode 0x91
1099 This opcode pushes normalized variation coordinates for all axes
1100 onto the stack (in 2.14 format). Coordinate of first axis gets
1101 pushed first.
1102
1103 GETINFO[], selector bit 3
1104 If GX variation support is enabled, bit 10 of the result is set
1105 to 1.
1106
1107 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
1108 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
1109 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
1110 bit 3, checking support for variation glyph hinting.
1111 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
1112 to implement opcode 0x91.
1113 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
1114
11152016-07-16 Werner Lemberg <wl@gnu.org>
1116
Werner Lemberg32a32062016-07-16 16:39:26 +02001117 [truetype] Fix GETINFO bytecode instruction.
1118
1119 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
1120 stretching information.
1121
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020011222016-07-16 Behdad Esfahbod <behdad@behdad.org>
1123
1124 [truetype] Make all glyphs in `Zycon' GX font work.
1125
1126 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1127 tests.
1128
Werner Lemberga3b61252016-07-16 08:16:16 +020011292016-07-16 Werner Lemberg <wl@gnu.org>
1130
1131 [truetype] Fix GX delta tracing.
1132
1133 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
1134 relative point movements.
1135
11362016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02001137
1138 [truetype] More fixes for GX.
1139
1140 This finally fixes the rendering of the cyclist and the lizard in
1141 the `Zycon' font.
1142
1143 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
1144 index is always cumulative.
1145
1146 (tt_handle_deltas): Rename to...
1147 (tt_interpolate_deltas): ... This.
1148 Add new parameter for output point array.
1149 Update caller.
1150
1151 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
1152 the intermediate results of `tt_interpolate_deltas' that are to be
1153 added to `outline->points'.
1154
Werner Lembergaafff572016-07-16 06:41:39 +020011552016-07-15 Werner Lemberg <wl@gnu.org>
1156
1157 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
1158
1159 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
1160
1161 Reported by Alexei.
1162
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020011632016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
1164
1165 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
1166
1167 Problem reported by Hin-Tak Leung.
1168
Werner Lemberg894c0222016-07-15 10:23:11 +020011692016-07-15 Werner Lemberg <wl@gnu.org>
1170
Werner Lemberg1831e6f2016-07-15 10:35:32 +02001171 [autofit] Update and improve segment and edge tracing.
1172
1173 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
1174 `delta' also.
1175 Don't show first point of segment as a replacement for `pos'; this
1176 is (a) misleading, since the difference to `pos' can be almost
1177 arbitrarily large in corner cases, and (b) it is better to have all
1178 segment data in font units instead of a single value given in output
1179 space coordinates.
1180 Improve layout.
1181 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
1182 values for convenience.
1183 Improve layout.
1184
11852016-07-15 Werner Lemberg <wl@gnu.org>
1186
Werner Lemberg894c0222016-07-15 10:23:11 +02001187 [autofit] For edges, reject segments wider than 1px (#41334).
1188
1189 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
1190
1191 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
1192 `delta'.
1193 (af_latin_hints_compute_edges): Reject segments with a delta larger
1194 than 0.5px.
1195
Werner Lemberg631e2182016-07-14 06:25:05 +020011962016-07-14 Werner Lemberg <wl@gnu.org>
1197
Werner Lembergff655432016-07-14 15:01:55 +02001198 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
1199
12002016-07-14 Werner Lemberg <wl@gnu.org>
1201
Werner Lembergee3f36f2016-07-14 10:25:20 +02001202 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
1203
1204 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
1205
12062016-07-14 Werner Lemberg <wl@gnu.org>
1207
Werner Lemberg631e2182016-07-14 06:25:05 +02001208 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
1209
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020012102016-07-14 Behdad Esfahbod <behdad@behdad.org>
1211
1212 [truetype] Fix gxvar delta interpolation.
1213
1214 The coordinates of the base font should be used for interpolation
1215 purposes, NOT the current points (i.e., the result of accumulation
1216 of previous deltas).
1217
1218 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
1219 `points_org' before looping over all tuples.
1220
Werner Lembergf6aa0892013-05-10 07:58:47 +02001221
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001222----------------------------------------------------------------------------
1223
Werner Lemberg8160b202016-09-08 08:42:10 +02001224Copyright 2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001225David Turner, Robert Wilhelm, and Werner Lemberg.
1226
1227This file is part of the FreeType project, and may only be used, modified,
1228and distributed under the terms of the FreeType project license,
1229LICENSE.TXT. By continuing to use, modify, or distribute this file you
1230indicate that you have read the license and understand and accept it
1231fully.
1232
1233
1234Local Variables:
1235version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00001236coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001237End: