blob: 033dee272fbc917716c5c244b5964f7fa4e02060 [file] [log] [blame]
Werner Lembergd949a3d2016-11-29 12:09:56 +010012016-11-29 Werner Lemberg <wl@gnu.org>
2
3 [smooth] Avoid conditional jump on uninitialized value (#49711).
4
5 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
6
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +010072016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
8
9 [autofit] Code shuffling.
10
11 Also improve some comments and remove unused code.
12
13 No functional change.
14
15 * src/autofit/afloader.c (af_loader_load_g): Merged with...
16 (af_loader_load_glyph): ...this function.
17 Split off emboldening code into...
18 (af_loader_embolden_glyph_in_slot): ... this function.
19
Werner Lemberg78150502016-11-17 12:00:20 +0100202016-11-17 Werner Lemberg <wl@gnu.org>
21
22 Better support of LLP64 systems with gcc (and clang).
23
24 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
25
26 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
27 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
28
Werner Lembergdd26e3d2016-11-10 12:03:32 +0100292016-11-10 Werner Lemberg <wl@gnu.org>
30
31 Fix `lcd_weights' array size.
32
33 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
34
35 Reported by Nikolaus.
36
Werner Lemberg565db952016-11-06 12:33:51 +0100372016-11-06 Werner Lemberg <wl@gnu.org>
38
Werner Lemberge1ee5472016-11-06 12:39:05 +010039 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
40
412016-11-06 Werner Lemberg <wl@gnu.org>
42
Werner Lemberg1c6fd992016-11-06 12:37:55 +010043 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
44
45 It's unavoidable to call the PNG engine, but to get the metrics it
46 is sufficient to read the PNG image's header only.
47
48 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
49 allocation of the glyph slot.
50 * src/sfnt/pngshim.h: Updated.
51 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
52 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
53
542016-11-06 Werner Lemberg <wl@gnu.org>
55
Werner Lemberg565db952016-11-06 12:33:51 +010056 [sfnt] Speed up `sbix' lookup.
57
58 This also fixes a bug introduced in 2016-10-01 which prevents
59 display of embedded bitmap fonts that use the `sbix' format.
60
61 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
62 offset also in `ebdt_size' and `ebdt_start', respectively. This
63 makes the test for an embedded bitmap data table succeed for this
64 format.
65
66 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
67 `ebdt_size' and `ebdt_start'
68 (tt_face_load_sbix_image): Ditto.
69
Werner Lemberg37e193e2016-11-06 12:32:51 +0100702016-11-06 Seigo Nonaka <nona@google.com>
71 Werner Lemberg <wl@gnu.org>
72
73 Introduce a way of quickly retrieving (embedded) bitmap metrics.
74
75 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
76 until the user calls `FT_Render_Glyph'. However, it always
77 allocates memory for bitmaps and copies or decodes the contents of a
78 bitmap glyph, which can be quite slow for PNG data.
79
80 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
81 macro.
82
83 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
84 FT_LOAD_BITMAP_METRICS_ONLY is used.
85
86 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
87 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
88 the glyph slot.
89 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
90 tt_face_load_sbit_image): Updated.
91
92 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
93 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
94
95 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
96 argument to control allocation of the glyph slot.
97 * src/pfr/pfrobjs (pfr_slot_load): Updated.
98
99 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
100
101 * docs/CHANGES: Updated.
102
1032016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +0100104
105 Synchronize with gnulib (#49448).
106
107 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
108 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
109 current version of `intprops.h'.
110 Other minor synchronization to reduce code differences between the
111 three files.
112
Behdad Esfahbodb72858c2016-11-03 06:41:00 +01001132016-11-03 Behdad Esfahbod <behdad@behdad.org>
114
115 [truetype] Clamp variation requests to valid range.
116
117 This is required by OpenType 1.8; it also avoids rounding surprises.
118
119 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
120 outside of the allowed range to always stay within the range instead
121 of producing an error.
122
Werner Lemberg328d6842016-10-29 00:18:56 +02001232016-10-29 Werner Lemberg <wl@gnu.org>
124
125 [truetype] Remove clang warnings.
126
127 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
128 loop counter handling.
129
130 * src/truetype/ttinterp.c: Updated.
131 (Ins_SCANTYPE): Use signed constant.
132 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
133
Werner Lembergddf38722016-10-27 07:27:27 +02001342016-10-27 Werner Lemberg <wl@gnu.org>
135
136 [truetype] Fix commit from 2014-11-24.
137
138 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
139
140 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
141 logic.
142
Werner Lemberg56140902016-10-26 08:10:59 +02001432016-10-26 Werner Lemberg <wl@gnu.org>
144
Werner Lemberg9c45ac32016-10-26 16:00:00 +0200145 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
146
147 * include/freetype/ftmm.h: Declare.
148
149 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
150 New typedef.
151 (MultiMasters): New MM service function `get_mm_blend'.
152 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
153 Update all callers.
154
155 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
156 FT_Get_Var_Blend_Coordinates): Implement.
157
158 * src/truetype/ttdriver.c: Updated.
159
160 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
161 `get_mm_blend' service.
162 * src/truetype/ttgxvar.h: Updated.
163
164 * src/type1/t1driver.c: Updated.
165
166 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
167 `get_mm_blend' service.
168 * src/type1/t1load.h: Updated.
169
170 * docs/CHANGES: Document.
171
1722016-10-26 Werner Lemberg <wl@gnu.org>
173
Werner Lemberg56140902016-10-26 08:10:59 +0200174 * src/type1/t1load.c (parse_subrs): Fix limit check.
175
176 Reported as
177
178 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
179
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -04001802016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
181
182 [cff] Correct cmap format reporting (#24819).
183
184 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
185 charmap instead of guessing its format and language.
186
Werner Lemberg57741402016-10-22 18:34:48 +02001872016-10-22 Werner Lemberg <wl@gnu.org>
188
Werner Lemberg50816742016-10-22 19:16:08 +0200189 [truetype] Fix SCANTYPE instruction (#49394).
190
191 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
192
1932016-10-22 Werner Lemberg <wl@gnu.org>
194
Werner Lemberg57741402016-10-22 18:34:48 +0200195 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
196
197 * src/sfnt/ttpost.c (load_format_25): We need at least a single
198 table entry.
199
Werner Lemberg7eeaf982016-10-14 08:58:17 +02002002016-10-14 Werner Lemberg <wl@gnu.org>
201
202 [truetype] Fix handling of `cvar' table data.
203
204 Reported as
205
206 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
207
208 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
209 indices.
210
Werner Lemberg92281222016-10-11 07:12:12 +02002112016-10-11 Werner Lemberg <wl@gnu.org>
212
Werner Lemberg9c54d122016-10-11 08:57:55 +0200213 [psaux] Fix handling of invalid flex subrs.
214
215 Problem reported as
216
217 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
218
219 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
220 <op_callothersubr>: Set `flex_state' after error checking.
221
2222016-10-11 Werner Lemberg <wl@gnu.org>
223
Werner Lemberg92281222016-10-11 07:12:12 +0200224 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
225
Werner Lembergd61b0422016-10-08 19:20:33 +02002262016-10-08 Werner Lemberg <wl@gnu.org>
227
Werner Lemberg6b354932016-10-08 20:26:59 +0200228 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
229
2302016-10-08 Werner Lemberg <wl@gnu.org>
231
Werner Lembergd61b0422016-10-08 19:20:33 +0200232 [cid] Fix parsing of subr offsets.
233
234 Bug introduced 2016-05-16.
235
236 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
237
Werner Lembergfcc0ee82016-10-01 20:12:25 +02002382016-10-01 Werner Lemberg <wl@gnu.org>
239
240 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
241
242 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
243 a bitmap data table.
244
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -04002452016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
246
247 [smooth] Remove impossibility.
248
249 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
250 (gray_convert_glyph): Remove impossible condition and clean up.
251
Werner Lembergbf902392016-09-29 13:04:46 +02002522016-09-29 Werner Lemberg <wl@gnu.org>
253
Werner Lemberg35764872016-09-30 08:11:52 +0200254 [pcf] Enrich family name with foundry name and glyph width info.
255
256 This is a very old patch from openSuSE (from 2006, submitted to
257 FreeType in 2011) that I forgot to apply.
258
259 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
260
261 Prepend the foundry name plus a space to the family name. There are
262 many fonts just called `Fixed' which look completely different, and
263 which have nothing to do with each other. When selecting `Fixed' in
264 KDE or Gnome one gets results that appear rather random, the style
265 changes often if one changes the size and one cannot select some
266 fonts at all.
267
268 We also check whether we have `wide' characters; all put together,
269 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
270
271 * src/pcf/pcfread.c (pcf_load_font): Implement it.
272
273 * docs/CHANGES: Document it.
274
2752016-09-29 Werner Lemberg <wl@gnu.org>
276
Werner Lemberg71b617d2016-09-29 19:53:39 +0200277 [ftfuzzer] Speed up.
278
279 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
280 check for embedded bitmaps if we have a non-default instance.
281
2822016-09-29 Werner Lemberg <wl@gnu.org>
283
Werner Lemberg2067c692016-09-29 19:49:07 +0200284 [truetype] Disallow bitmap strokes for non-default instances.
285
286 Also speed up access of default instances if GX variations are
287 active.
288
289 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
290 `is_default_instance' member.
291
292 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
293 `is_default_instance'.
294
295 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
296 load_truetype_glyph): Add test for default instance.
297 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
298
299 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
300 `is_default_instance'.
301
3022016-09-29 Werner Lemberg <wl@gnu.org>
303
Werner Lembergbf902392016-09-29 13:04:46 +0200304 [truetype] Clean up `TT_Face' structure.
305
306 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
307 fields `horz_metrics' and `vert_metrics'.
308 Update documentation.
309
310 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
311
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02003122016-09-28 Werner Lemberg <wl@gnu.org>
313
Werner Lemberg45cad2e2016-09-28 19:10:52 +0200314 More FT_ZERO usage.
315
316 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
317 s/ft_memset/FT_MEM_ZERO/.
318
319 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
320 s/ft_memset/FT_ARRAY_ZERO/.
321
322 * src/raster/ftraster.c (FT_ZERO): Define.
323 (ft_black_new): Use it.
324 * src/raster/ftrend1.c (ft_raster1_get_cbox):
325 s/FT_MEM_ZERO/FT_ZERO/.
326
327 * src/smooth/ftgrays.c (FT_ZERO): Define.
328 (gray_raster_new): Use it.
329 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
330 s/FT_MEM_ZERO/FT_ZERO/.
331
3322016-09-28 Werner Lemberg <wl@gnu.org>
333
Werner Lemberg2ecf89b2016-09-28 19:06:21 +0200334 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
335
Werner Lemberg0d945922016-09-27 08:44:31 +02003362016-09-27 Werner Lemberg <wl@gnu.org>
337
Werner Lemberga3e2c832016-09-27 21:42:02 +0200338 [truetype] Trace number of executed opcodes.
339
340 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
341
3422016-09-27 Werner Lemberg <wl@gnu.org>
343
Werner Lemberge27b8a52016-09-27 21:21:01 +0200344 [truetype] Speed up `TT_Load_Glyph'.
345
346 This avoids additional calls to `tt_face_lookup_table' for the
347 `glyf' table, which can be expensive.
348
349 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
350 `glyf_offset' field to ...
351 (TT_FaceRec): ... this structure.
352 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
353 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +0200354 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +0200355
3562016-09-27 Werner Lemberg <wl@gnu.org>
357
Werner Lemberg0d945922016-09-27 08:44:31 +0200358 [truetype] Introduce dynamic limits for some bytecode opcodes.
359
360 This speeds up FreeType's handling of malformed fonts.
361
362 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
363 of twilight points, the total number of negative jumps, and the
364 total number of loops in LOOPCALL opcodes. The values are based on
365 the number of points and entries in the CVT table.
366 (Ins_JMPR): Test negative jump counter.
367 (Ins_LOOPCALL): Test loopcall counter.
368
369 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
370
371 * docs/CHANGES: Updated.
372
Werner Lembergd11e8b62016-09-25 15:32:04 +02003732016-09-25 Werner Lemberg <wl@gnu.org>
374
Werner Lemberga7649632016-09-25 16:29:05 +0200375 [truetype] Sanitize only last entry of `loca' table.
376
377 Without this patch, a loca sequence like `0 100000 0 100000 ...',
378 where value 100000 is larger than the `glyf' table size, makes
379 FreeType handle the whole `glyf' table as a single glyph again and
380 again, which is certainly invalid (and can be very slow, too).
381
382 * src/truetype/ttpload.c (tt_face_get_location): Implement.
383 Improve tracing messages.
384
3852016-09-25 Werner Lemberg <wl@gnu.org>
386
Werner Lembergd11e8b62016-09-25 15:32:04 +0200387 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
388
Werner Lemberg2f2e73c2016-09-24 22:42:58 +02003892016-09-24 Werner Lemberg <wl@gnu.org>
390
391 [autofit] Tracing fixes.
392
393 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
394 functions only if we actually do tracing.
395
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -04003962016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
397
398 [smooth] Reduce divisions in the line renderer.
399
400 We don't need some divisions if a line segments stays within a single
401 row or a single column of pixels.
402
403 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
404 conditional.
405
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -04004062016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
407
408 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
409
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -04004102016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
411
412 [smooth] Another tiny speed-up.
413
414 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
415 (gray_record_cell): ... this function.
416
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04004172016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
418
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -0400419 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
420
4212016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
422
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -0400423 [smooth] Fix valgrind warning and reoptimize.
424
425 The algorithm calls `gray_set_cell' at the start of each new contour
426 or when the contours cross the cell boundaries. Double-checking for
427 that is wasteful.
428
429 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
430 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
431
Werner Lemberge421a0b2016-09-10 08:02:30 +02004322016-09-10 Werner Lemberg <wl@gnu.org>
433
434 [sfnt] Fix previous commit.
435
436 Problems reported as
437
438 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
439
440 We now map the strike index right before accessing the physical
441 data, not earlier.
442
443 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
444 after creating the map so that...
445
446 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
447 can be used before and after setting up `sbit_strike_map'.
448 (tt_face_set_sbit_strike): Revert change.
449 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
450
451 * src/truetype/ttdriver.c (tt_size_select): Revert change.
452
Werner Lembergd609b7c2016-09-09 22:11:07 +02004532016-09-09 Werner Lemberg <wl@gnu.org>
454
Werner Lembergdeb26152016-09-09 22:13:33 +0200455 [ftfuzzer] Minor improvements.
456
457 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
458 invalid strikes.
459 Use better values for call to `FT_Set_Char_Size'.
460
4612016-09-09 Werner Lemberg <wl@gnu.org>
462
Werner Lembergd609b7c2016-09-09 22:11:07 +0200463 [sfnt] Don't provide (completely) broken strike data.
464
465 FreeType tries to sanitize strike header data; we now reject
466 completely broken ones.
467
468 * include/freetype/internal/tttypes.h (TT_FaceRec): New
469 `sbit_strike_map' array pointer.
470
471 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
472 width or height would be zero.
473 Add tracing message in case of error.
474
475 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
476 only using (more or less) valid strike header data for
477 FT_Face's `available_sizes' array.
478 (sfnt_done_face): Updated.
479
480 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
481 `sbit_strike_map'.
482 (tt_face_load_strike_metrics): Improve tracing.
483
484 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
485
Werner Lemberg9749f262016-09-08 07:51:03 +02004862016-09-08 Werner Lemberg <wl@gnu.org>
487
Werner Lembergd2d59682016-09-08 09:04:32 +0200488 * Version 2.7 released.
489 =======================
490
491
492 Tag sources with `VER-2-7'.
493
494 * docs/VERSION.TXT: Add entry for version 2.7.
495
496 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
497 builds/windows/vc2005/index.html,
498 builds/windows/vc2008/freetype.vcproj,
499 builds/windows/vc2008/index.html,
500 builds/windows/vc2010/freetype.vcxproj,
501 builds/windows/vc2010/index.html,
502 builds/windows/visualc/freetype.dsp,
503 builds/windows/visualc/freetype.vcproj,
504 builds/windows/visualc/index.html,
505 builds/windows/visualce/freetype.dsp,
506 builds/windows/visualce/freetype.vcproj,
507 builds/windows/visualce/index.html,
508 builds/wince/vc2005-ce/freetype.vcproj,
509 builds/wince/vc2005-ce/index.html,
510 builds/wince/vc2008-ce/freetype.vcproj,
511 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
512
513 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
514 (FREETYPE_PATCH): Set to 0.
515
516 * builds/unix/configure.raw (version_info): Set to 18:6:12.
517 * CMakeLists.txt (VERSION_MINOR): Set to 7.
518 (VERSION_PATCH): Set to 0.
519
520 * docs/CHANGES: Updated.
521
5222016-09-08 Werner Lemberg <wl@gnu.org>
523
Werner Lembergb1e7b682016-09-08 08:56:34 +0200524 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
525
526 This fixes the `multi' build.
527
5282016-09-08 Werner Lemberg <wl@gnu.org>
529
Werner Lemberg9749f262016-09-08 07:51:03 +0200530 [autofit] Another improvement to Armenian support.
531
532 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
533
534 * src/autofit/afscript.h: Use better suited characters to derive
535 default stem widths.
536
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04005372016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
538
539 * src/smooth/ftgrays.c (gray_hline): Microptimize.
540
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04005412016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
542
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -0400543 [smooth] Operate in absolute bitmap coordinates.
544
545 Simpler bitmap addressing improves performance by 1.5%.
546
547 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
548 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
549 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
550
5512016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
552
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -0400553 [smooth] Improve contour start (take 2).
554
555 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
556 instead of...
557 (gray_start_cell): ... this function, which is removed.
558 (gray_convert_glyph): Make initial y-coordinate invalid.
559
Werner Lembergebbb8b22016-09-06 16:28:57 +02005602016-09-06 Werner Lemberg <wl@gnu.org>
561
562 [type1] MM fonts support exactly zero named instances (#48748).
563
564 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
565
Jonathan Kewa15133e2016-09-06 06:33:36 +02005662016-09-06 Jonathan Kew <jfkthame@gmail.com>
567
568 [cff] Fix uninitialized memory.
569
570 Problem reported as
571
572 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
573
574 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
575 array to handle a `get' opcode without a previous `put'.
576
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04005772016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
578
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -0400579 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
580
5812016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
582
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -0400583 [smooth] Improve contour start.
584
585 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
586 instead of...
587 (gray_start_cell): ... this function, which is removed.
588
Werner Lembergc9adf1a2016-09-05 07:32:37 +02005892016-09-05 Werner Lemberg <wl@gnu.org>
590
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +0200591 [cff] Fix memory initialization.
592
593 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
594 variants of FreeType's memory allocation macros don't do zeroing.
595
5962016-09-05 Werner Lemberg <wl@gnu.org>
597
Werner Lemberg1c8bb632016-09-05 08:13:42 +0200598 [ftrandom] Minor improvements.
599
600 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
601 500.
602
603 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
604 directories to ...
605 (INCLUDES): ... this new variable.
606 (LDFLAGS): New variable.
607 (ftrandom.o, ftrandom): Updated.
608
6092016-09-05 Werner Lemberg <wl@gnu.org>
610
Werner Lembergc9adf1a2016-09-05 07:32:37 +0200611 [autofit] Improve Armenian support.
612
613 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
614
615 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
616 selection of characters.
617
618 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
619
Werner Lemberg4b28f6a2016-09-04 19:05:45 +02006202016-09-04 Werner Lemberg <wl@gnu.org>
621
622 [ftrandom] Improve Makefile.
623
624 It now supports both a normal build (`./configure && make') and a
625 development build (`make devel').
626
627 * src/tools/ftrandom/Makefile (VPATH): Set it so that
628 `libfreetype.a' gets searched in both `objs' (for the development
629 build) and `objs/.libs' (for a normal build which uses libtool).
630 (LIBS): Add missing libraries.
631 (ftrandom.o): New rule.
632 (ftrandom): Use automatic variables.
633
Werner Lembergf0fa7a62016-09-03 06:33:36 +02006342016-09-03 Werner Lemberg <wl@gnu.org>
635
Werner Lemberg4e659d72016-09-03 18:14:00 +0200636 [truetype] More fixes for handling of GX deltas.
637
638 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
639
640 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
641 sanity test for glyph variation array header size.
642 Always set stream position before reading packed x and y deltas.
643 Fix thinko w.r.t. `localpoints' array.
644
6452016-09-03 Werner Lemberg <wl@gnu.org>
646
Werner Lembergca8e98d2016-09-03 13:06:16 +0200647 [ftrandom] Various fixes.
648
649 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
650 default.
651 (error_fraction): Make it of type `double' to work as advertized –
652 this was completely broken.
653 Update all related code.
654 (error_count, fcnt): Make it unsigned to fix compiler warnings.
655 Update all related code.
656 (fontlist): Change `len' member to `long' to fix compiler warnings.
657 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
658 unused variables.
659 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
660 (ExecuteTest): Ditto.
661 Call `FT_Done_FreeType'.
662 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
663 int'.
664 (usage): Improve output.
665 (main): Fix compiler warnings.
666
667 * src/tools/ftrandom/README: Updated.
668
6692016-09-03 Werner Lemberg <wl@gnu.org>
670
Werner Lembergb98dfda2016-09-03 08:20:31 +0200671 [base] Avoid negative bitmap stroke dimensions (#48985).
672
673 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
674 actually successful. For example, this can fail for value
675 -32768 if the type is `signed short'. If there are problems,
676 disable the stroke.
677
6782016-09-03 Werner Lemberg <wl@gnu.org>
679
Werner Lembergf0fa7a62016-09-03 06:33:36 +0200680 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
681
682 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
683
Werner Lembergd8ef7262016-09-02 23:27:50 +02006842016-09-02 Werner Lemberg <wl@gnu.org>
685
Werner Lembergd87bb912016-09-02 23:56:27 +0200686 [unix] Enable 64bit support in file system access (#48962).
687
688 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
689
6902016-09-02 Werner Lemberg <wl@gnu.org>
691
Werner Lembergd8ef7262016-09-02 23:27:50 +0200692 [sfnt] Avoid left shift of negative value (#48980).
693
694 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
695 constant.
696
6972016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +0200698
699 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
700
Werner Lemberg7a13dc02016-09-02 08:24:01 +02007012016-09-02 Werner Lemberg <wl@gnu.org>
702
703 Some preparations for the next release.
704
705 * include/freetype/config/ftoption.h
706 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
707
708 * docs/CHANGES: Updated.
709
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04007102016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
711
712 [smooth] Simplify span rendering more.
713
714 It turns out that there is significant cost associated with `FT_Span'
715 creation and calls to `gray_render_span' because it happerns so
716 frequently. This removes these steps from our internal use but leaves
717 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
718 is about 5%.
719
720 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
721 migrated to...
722 (gray_hline): ... here.
723
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04007242016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
725
726 [smooth] Streamline pixmap drawing a bit more.
727
728 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -0400729 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -0400730
731 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
732
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -04007332016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
734
735 [smooth] Streamline pixmap drawing.
736
737 This gives 2% speed improvement in rendering simple glyphs.
738
739 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
740 pointer to its bottom-left and pitch to be used in...
741 (gray_TWorker): ... here.
742 (gray_render_span): Move pixmap flow check from here...
743 (gray_raster_render): .. to here.
744
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -04007452016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
746
747 [smooth] Reduce stack of band boundaries.
748
749 * src/smooth/ftgrays.c (gray_TBand): Removed.
750 (gray_convert_glyph): Updated to stack band boundaries concisely.
751
Werner Lembergf3e71ba2016-08-26 10:31:30 +02007522016-08-26 Werner Lemberg <wl@gnu.org>
753
Werner Lemberg57aa8392016-08-26 11:59:50 +0200754 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
755
7562016-08-26 Werner Lemberg <wl@gnu.org>
757
Werner Lemberg3c61a2f2016-08-26 11:50:09 +0200758 [cid] Fix commit from 2016-05-16.
759
760 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
761
7622016-08-26 Werner Lemberg <wl@gnu.org>
763
Werner Lembergf3e71ba2016-08-26 10:31:30 +0200764 [sfnt] Cache offset and size to bitmap data table.
765
766 This commit avoids `EBDT' and friends being looked up again and
767 again while loading a single embedded bitmap.
768
769 * include/freetype/internal/tttypes.h (TT_FaceRec)
770 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
771 `ebdt_size'.
772
773 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
774 (tt_face_load_sbit): ... this function; also store the table size
775 and offset.
776
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04007772016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
778
779 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
780
Werner Lemberga660e3d2016-08-26 00:23:27 +02007812016-08-26 Werner Lemberg <wl@gnu.org>
782
783 [type1] Fix heap buffer overflow.
784
785 Reported as
786
787 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
788
789 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
790 contain glyph names.
791
Werner Lemberg327f2e32016-08-25 12:46:08 +02007922016-08-25 Werner Lemberg <wl@gnu.org>
793
Werner Lemberg69ce9732016-08-25 19:49:52 +0200794 [sfnt] Fix previous commit (#48901).
795
796 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
797
7982016-08-25 Werner Lemberg <wl@gnu.org>
799
Werner Lembergacd18792016-08-25 17:12:46 +0200800 [sfnt] Speed up handling of invalid format 4 cmaps.
801
802 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
803 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
804
8052016-08-25 Werner Lemberg <wl@gnu.org>
806
Werner Lemberg327f2e32016-08-25 12:46:08 +0200807 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
808
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04008092016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
810
811 [smooth] Simplify span rendering.
812
813 This removes unnecessary complexity of span merging and buffering.
814 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -0400815 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -0400816
817 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
818 (gray_TWorker): Remove span buffer and related fields.
819 (gray_sweep, gray_hline): Updated.
820
821 * include/freetype/ftimage.h: Remove documentation note about
822 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
823
Werner Lembergcf4224a2016-08-16 06:44:23 +02008242016-08-16 Werner Lemberg <wl@gnu.org>
825
Werner Lemberga4c2a312016-08-22 19:32:34 +0200826 [truetype] Fix `MPS' instruction.
827
828 According to Greg Hitchcock, MPS in DWrite really returns the point
829 size.
830
831 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
832
833 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
834
835 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
836 member.
837
838 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
839 (Ins_MPS): Fix instruction.
840
8412016-08-16 Werner Lemberg <wl@gnu.org>
842
Werner Lemberg8521ad92016-08-16 13:44:38 +0200843 [lzw] Optimize last commit.
844
845 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
846 conditional clause.
847
8482016-08-16 Werner Lemberg <wl@gnu.org>
849
Werner Lemberg548f68d2016-08-16 09:46:40 +0200850 [lzw] Avoid invalid left shift.
851
Werner Lemberg6df68332016-08-16 09:50:07 +0200852 Reported as
853
854 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
855
Werner Lemberg548f68d2016-08-16 09:46:40 +0200856 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
857
8582016-08-16 Werner Lemberg <wl@gnu.org>
859
Werner Lemberg8d7b9192016-08-16 08:07:58 +0200860 [lzw] Avoid buffer overrun.
861
862 Reported as
863
864 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
865
866 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
867 underflow.
868
8692016-08-16 Werner Lemberg <wl@gnu.org>
870
Werner Lembergcf4224a2016-08-16 06:44:23 +0200871 [truetype] Fix compiler warning.
872
873 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
874
Werner Lemberg248f5622016-08-13 06:53:53 +02008752016-08-13 Werner Lemberg <wl@gnu.org>
876
877 [winfonts] Avoid zero bitmap width and height.
878
879 Reported as
880
881 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
882
883 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
884 (FNT_Load_Glyph): Check for zero pitch.
885
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02008862016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
887
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -0400888 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
889
8902016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
891
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -0400892 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
893
8942016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
895
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +0200896 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
897
Peter Klotz3b37bfc2016-08-10 22:38:08 -04008982016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
899
900 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
901
Werner Lemberg5224aae2016-08-10 19:47:29 +02009022016-08-10 Werner Lemberg <wl@gnu.org>
903
904 [sfnt] Use correct type for `italicAngle' field (#48732).
905
906 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
907
Werner Lemberg53059f92016-08-07 09:01:33 +02009082016-08-06 Jon Spencer <jon@jonspencer.ca>
909
910 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
911
912 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
913 advance value from the font table and then scales it by the
914 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
915 set that value for bitmap fonts and the advance gets scaled to zero.
916
917 Taken from
918
919 https://github.com/behdad/harfbuzz/issues/252
920
921 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
922 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
923
9242016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +0200925
926 [truetype] Fix GX variation handling of composites.
927
928 * src/truetype/ttgload.c (load_truetype_glyph)
929 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
930
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -04009312016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
932
933 [smooth] Minor refactoring.
934
935 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
936 Updated.
937
Werner Lembergfae4ec02016-07-29 06:43:32 +02009382016-07-29 Werner Lemberg <wl@gnu.org>
939
940 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
941
942 Since 2016-05-16 we detect infinite recursion directly.
943
944 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
945 `maxComponentDepth'.
946 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
947 `maxComponentDepth' is not valid. Instead, simply adjust its value
948 and emit a tracing message.
949
Werner Lembergd9c7f5a2016-07-26 20:20:27 +02009502016-07-26 Werner Lemberg <wl@gnu.org>
951
952 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
953
954 No functional change.
955
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +02009562016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
957
958 [truetype] Record the end of IDEFs.
959
960 To match the logic in FDEF. The value of the end is only used for
961 bound-checking in `Ins_JMPR', so it may not have been obvious that
962 it was not recorded. Tested (as part of Font Validator 2.0) all the
963 fonts on Fedora and did not see any change.
964
965 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
966
Werner Lemberge69f34b2016-07-19 07:06:19 +02009672016-07-19 Werner Lemberg <wl@gnu.org>
968
Werner Lemberg7f631052016-07-19 21:35:58 +0200969 [truetype] Sanitizer fix, second try.
970
971 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
972 tests and use only one slot more.
973
9742016-07-19 Werner Lemberg <wl@gnu.org>
975
Werner Lemberge69f34b2016-07-19 07:06:19 +0200976 [truetype] Sanitizer fix.
977
978 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
979 to fix nested loops.
980
Werner Lemberga3b70d72016-07-18 06:23:36 +02009812016-07-18 Werner Lemberg <wl@gnu.org>
982
983 [truetype] Make GETDATA work only for GX fonts.
984
985 * src/truetype/ttinterp.c (opcode_name): Updated.
986 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
987 (TT_RunIns): Updated.
988
9892016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +0200990
Werner Lemberg8c930132016-07-17 22:40:31 +0200991 [truetype] Add support for Apple's
992
993 GETDATA[], opcode 0x92
994
995 bytecode instruction. It always returns 17, and we have absolutely
996 no idea what it is good for...
997
998 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
999 (Ins_GETDATA): New function.
1000 (TT_RunIns): Add it.
1001
10022016-07-16 Werner Lemberg <wl@gnu.org>
1003
Werner Lemberge0843602016-07-16 18:46:28 +02001004 [truetype] Add bytecode support for GX variation fonts.
1005
1006 This commit implements undocumented (but confirmed) stuff from
1007 Apple's old bytecode engine.
1008
1009 GETVARIATION[], opcode 0x91
1010 This opcode pushes normalized variation coordinates for all axes
1011 onto the stack (in 2.14 format). Coordinate of first axis gets
1012 pushed first.
1013
1014 GETINFO[], selector bit 3
1015 If GX variation support is enabled, bit 10 of the result is set
1016 to 1.
1017
1018 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
1019 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
1020 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
1021 bit 3, checking support for variation glyph hinting.
1022 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
1023 to implement opcode 0x91.
1024 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
1025
10262016-07-16 Werner Lemberg <wl@gnu.org>
1027
Werner Lemberg32a32062016-07-16 16:39:26 +02001028 [truetype] Fix GETINFO bytecode instruction.
1029
1030 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
1031 stretching information.
1032
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020010332016-07-16 Behdad Esfahbod <behdad@behdad.org>
1034
1035 [truetype] Make all glyphs in `Zycon' GX font work.
1036
1037 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
1038 tests.
1039
Werner Lemberga3b61252016-07-16 08:16:16 +020010402016-07-16 Werner Lemberg <wl@gnu.org>
1041
1042 [truetype] Fix GX delta tracing.
1043
1044 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
1045 relative point movements.
1046
10472016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02001048
1049 [truetype] More fixes for GX.
1050
1051 This finally fixes the rendering of the cyclist and the lizard in
1052 the `Zycon' font.
1053
1054 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
1055 index is always cumulative.
1056
1057 (tt_handle_deltas): Rename to...
1058 (tt_interpolate_deltas): ... This.
1059 Add new parameter for output point array.
1060 Update caller.
1061
1062 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
1063 the intermediate results of `tt_interpolate_deltas' that are to be
1064 added to `outline->points'.
1065
Werner Lembergaafff572016-07-16 06:41:39 +020010662016-07-15 Werner Lemberg <wl@gnu.org>
1067
1068 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
1069
1070 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
1071
1072 Reported by Alexei.
1073
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020010742016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
1075
1076 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
1077
1078 Problem reported by Hin-Tak Leung.
1079
Werner Lemberg894c0222016-07-15 10:23:11 +020010802016-07-15 Werner Lemberg <wl@gnu.org>
1081
Werner Lemberg1831e6f2016-07-15 10:35:32 +02001082 [autofit] Update and improve segment and edge tracing.
1083
1084 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
1085 `delta' also.
1086 Don't show first point of segment as a replacement for `pos'; this
1087 is (a) misleading, since the difference to `pos' can be almost
1088 arbitrarily large in corner cases, and (b) it is better to have all
1089 segment data in font units instead of a single value given in output
1090 space coordinates.
1091 Improve layout.
1092 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
1093 values for convenience.
1094 Improve layout.
1095
10962016-07-15 Werner Lemberg <wl@gnu.org>
1097
Werner Lemberg894c0222016-07-15 10:23:11 +02001098 [autofit] For edges, reject segments wider than 1px (#41334).
1099
1100 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
1101
1102 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
1103 `delta'.
1104 (af_latin_hints_compute_edges): Reject segments with a delta larger
1105 than 0.5px.
1106
Werner Lemberg631e2182016-07-14 06:25:05 +020011072016-07-14 Werner Lemberg <wl@gnu.org>
1108
Werner Lembergff655432016-07-14 15:01:55 +02001109 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
1110
11112016-07-14 Werner Lemberg <wl@gnu.org>
1112
Werner Lembergee3f36f2016-07-14 10:25:20 +02001113 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
1114
1115 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
1116
11172016-07-14 Werner Lemberg <wl@gnu.org>
1118
Werner Lemberg631e2182016-07-14 06:25:05 +02001119 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
1120
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020011212016-07-14 Behdad Esfahbod <behdad@behdad.org>
1122
1123 [truetype] Fix gxvar delta interpolation.
1124
1125 The coordinates of the base font should be used for interpolation
1126 purposes, NOT the current points (i.e., the result of accumulation
1127 of previous deltas).
1128
1129 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
1130 `points_org' before looping over all tuples.
1131
Werner Lembergf6aa0892013-05-10 07:58:47 +02001132
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001133----------------------------------------------------------------------------
1134
Werner Lemberg8160b202016-09-08 08:42:10 +02001135Copyright 2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001136David Turner, Robert Wilhelm, and Werner Lemberg.
1137
1138This file is part of the FreeType project, and may only be used, modified,
1139and distributed under the terms of the FreeType project license,
1140LICENSE.TXT. By continuing to use, modify, or distribute this file you
1141indicate that you have read the license and understand and accept it
1142fully.
1143
1144
1145Local Variables:
1146version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00001147coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00001148End: