blob: 5dd973ef5ce2ea6de47d8a28678ce4e83ff08ad4 [file] [log] [blame]
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -040012016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
2
3 [cff] Correct cmap format reporting (#24819).
4
5 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
6 charmap instead of guessing its format and language.
7
Werner Lemberg57741402016-10-22 18:34:48 +020082016-10-22 Werner Lemberg <wl@gnu.org>
9
Werner Lemberg50816742016-10-22 19:16:08 +020010 [truetype] Fix SCANTYPE instruction (#49394).
11
12 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
13
142016-10-22 Werner Lemberg <wl@gnu.org>
15
Werner Lemberg57741402016-10-22 18:34:48 +020016 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
17
18 * src/sfnt/ttpost.c (load_format_25): We need at least a single
19 table entry.
20
Werner Lemberg7eeaf982016-10-14 08:58:17 +0200212016-10-14 Werner Lemberg <wl@gnu.org>
22
23 [truetype] Fix handling of `cvar' table data.
24
25 Reported as
26
27 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
28
29 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
30 indices.
31
Werner Lemberg92281222016-10-11 07:12:12 +0200322016-10-11 Werner Lemberg <wl@gnu.org>
33
Werner Lemberg9c54d122016-10-11 08:57:55 +020034 [psaux] Fix handling of invalid flex subrs.
35
36 Problem reported as
37
38 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
39
40 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
41 <op_callothersubr>: Set `flex_state' after error checking.
42
432016-10-11 Werner Lemberg <wl@gnu.org>
44
Werner Lemberg92281222016-10-11 07:12:12 +020045 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
46
Werner Lembergd61b0422016-10-08 19:20:33 +0200472016-10-08 Werner Lemberg <wl@gnu.org>
48
Werner Lemberg6b354932016-10-08 20:26:59 +020049 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
50
512016-10-08 Werner Lemberg <wl@gnu.org>
52
Werner Lembergd61b0422016-10-08 19:20:33 +020053 [cid] Fix parsing of subr offsets.
54
55 Bug introduced 2016-05-16.
56
57 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
58
Werner Lembergfcc0ee82016-10-01 20:12:25 +0200592016-10-01 Werner Lemberg <wl@gnu.org>
60
61 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
62
63 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
64 a bitmap data table.
65
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -0400662016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
67
68 [smooth] Remove impossibility.
69
70 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
71 (gray_convert_glyph): Remove impossible condition and clean up.
72
Werner Lembergbf902392016-09-29 13:04:46 +0200732016-09-29 Werner Lemberg <wl@gnu.org>
74
Werner Lemberg35764872016-09-30 08:11:52 +020075 [pcf] Enrich family name with foundry name and glyph width info.
76
77 This is a very old patch from openSuSE (from 2006, submitted to
78 FreeType in 2011) that I forgot to apply.
79
80 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
81
82 Prepend the foundry name plus a space to the family name. There are
83 many fonts just called `Fixed' which look completely different, and
84 which have nothing to do with each other. When selecting `Fixed' in
85 KDE or Gnome one gets results that appear rather random, the style
86 changes often if one changes the size and one cannot select some
87 fonts at all.
88
89 We also check whether we have `wide' characters; all put together,
90 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
91
92 * src/pcf/pcfread.c (pcf_load_font): Implement it.
93
94 * docs/CHANGES: Document it.
95
962016-09-29 Werner Lemberg <wl@gnu.org>
97
Werner Lemberg71b617d2016-09-29 19:53:39 +020098 [ftfuzzer] Speed up.
99
100 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
101 check for embedded bitmaps if we have a non-default instance.
102
1032016-09-29 Werner Lemberg <wl@gnu.org>
104
Werner Lemberg2067c692016-09-29 19:49:07 +0200105 [truetype] Disallow bitmap strokes for non-default instances.
106
107 Also speed up access of default instances if GX variations are
108 active.
109
110 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
111 `is_default_instance' member.
112
113 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
114 `is_default_instance'.
115
116 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
117 load_truetype_glyph): Add test for default instance.
118 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
119
120 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
121 `is_default_instance'.
122
1232016-09-29 Werner Lemberg <wl@gnu.org>
124
Werner Lembergbf902392016-09-29 13:04:46 +0200125 [truetype] Clean up `TT_Face' structure.
126
127 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
128 fields `horz_metrics' and `vert_metrics'.
129 Update documentation.
130
131 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
132
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02001332016-09-28 Werner Lemberg <wl@gnu.org>
134
Werner Lemberg45cad2e2016-09-28 19:10:52 +0200135 More FT_ZERO usage.
136
137 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
138 s/ft_memset/FT_MEM_ZERO/.
139
140 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
141 s/ft_memset/FT_ARRAY_ZERO/.
142
143 * src/raster/ftraster.c (FT_ZERO): Define.
144 (ft_black_new): Use it.
145 * src/raster/ftrend1.c (ft_raster1_get_cbox):
146 s/FT_MEM_ZERO/FT_ZERO/.
147
148 * src/smooth/ftgrays.c (FT_ZERO): Define.
149 (gray_raster_new): Use it.
150 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
151 s/FT_MEM_ZERO/FT_ZERO/.
152
1532016-09-28 Werner Lemberg <wl@gnu.org>
154
Werner Lemberg2ecf89b2016-09-28 19:06:21 +0200155 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
156
Werner Lemberg0d945922016-09-27 08:44:31 +02001572016-09-27 Werner Lemberg <wl@gnu.org>
158
Werner Lemberga3e2c832016-09-27 21:42:02 +0200159 [truetype] Trace number of executed opcodes.
160
161 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
162
1632016-09-27 Werner Lemberg <wl@gnu.org>
164
Werner Lemberge27b8a52016-09-27 21:21:01 +0200165 [truetype] Speed up `TT_Load_Glyph'.
166
167 This avoids additional calls to `tt_face_lookup_table' for the
168 `glyf' table, which can be expensive.
169
170 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
171 `glyf_offset' field to ...
172 (TT_FaceRec): ... this structure.
173 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
174 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +0200175 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +0200176
1772016-09-27 Werner Lemberg <wl@gnu.org>
178
Werner Lemberg0d945922016-09-27 08:44:31 +0200179 [truetype] Introduce dynamic limits for some bytecode opcodes.
180
181 This speeds up FreeType's handling of malformed fonts.
182
183 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
184 of twilight points, the total number of negative jumps, and the
185 total number of loops in LOOPCALL opcodes. The values are based on
186 the number of points and entries in the CVT table.
187 (Ins_JMPR): Test negative jump counter.
188 (Ins_LOOPCALL): Test loopcall counter.
189
190 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
191
192 * docs/CHANGES: Updated.
193
Werner Lembergd11e8b62016-09-25 15:32:04 +02001942016-09-25 Werner Lemberg <wl@gnu.org>
195
Werner Lemberga7649632016-09-25 16:29:05 +0200196 [truetype] Sanitize only last entry of `loca' table.
197
198 Without this patch, a loca sequence like `0 100000 0 100000 ...',
199 where value 100000 is larger than the `glyf' table size, makes
200 FreeType handle the whole `glyf' table as a single glyph again and
201 again, which is certainly invalid (and can be very slow, too).
202
203 * src/truetype/ttpload.c (tt_face_get_location): Implement.
204 Improve tracing messages.
205
2062016-09-25 Werner Lemberg <wl@gnu.org>
207
Werner Lembergd11e8b62016-09-25 15:32:04 +0200208 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
209
Werner Lemberg2f2e73c2016-09-24 22:42:58 +02002102016-09-24 Werner Lemberg <wl@gnu.org>
211
212 [autofit] Tracing fixes.
213
214 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
215 functions only if we actually do tracing.
216
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -04002172016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
218
219 [smooth] Reduce divisions in the line renderer.
220
221 We don't need some divisions if a line segments stays within a single
222 row or a single column of pixels.
223
224 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
225 conditional.
226
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -04002272016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
228
229 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
230
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -04002312016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
232
233 [smooth] Another tiny speed-up.
234
235 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
236 (gray_record_cell): ... this function.
237
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04002382016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
239
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -0400240 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
241
2422016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
243
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -0400244 [smooth] Fix valgrind warning and reoptimize.
245
246 The algorithm calls `gray_set_cell' at the start of each new contour
247 or when the contours cross the cell boundaries. Double-checking for
248 that is wasteful.
249
250 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
251 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
252
Werner Lemberge421a0b2016-09-10 08:02:30 +02002532016-09-10 Werner Lemberg <wl@gnu.org>
254
255 [sfnt] Fix previous commit.
256
257 Problems reported as
258
259 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
260
261 We now map the strike index right before accessing the physical
262 data, not earlier.
263
264 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
265 after creating the map so that...
266
267 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
268 can be used before and after setting up `sbit_strike_map'.
269 (tt_face_set_sbit_strike): Revert change.
270 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
271
272 * src/truetype/ttdriver.c (tt_size_select): Revert change.
273
Werner Lembergd609b7c2016-09-09 22:11:07 +02002742016-09-09 Werner Lemberg <wl@gnu.org>
275
Werner Lembergdeb26152016-09-09 22:13:33 +0200276 [ftfuzzer] Minor improvements.
277
278 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
279 invalid strikes.
280 Use better values for call to `FT_Set_Char_Size'.
281
2822016-09-09 Werner Lemberg <wl@gnu.org>
283
Werner Lembergd609b7c2016-09-09 22:11:07 +0200284 [sfnt] Don't provide (completely) broken strike data.
285
286 FreeType tries to sanitize strike header data; we now reject
287 completely broken ones.
288
289 * include/freetype/internal/tttypes.h (TT_FaceRec): New
290 `sbit_strike_map' array pointer.
291
292 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
293 width or height would be zero.
294 Add tracing message in case of error.
295
296 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
297 only using (more or less) valid strike header data for
298 FT_Face's `available_sizes' array.
299 (sfnt_done_face): Updated.
300
301 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
302 `sbit_strike_map'.
303 (tt_face_load_strike_metrics): Improve tracing.
304
305 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
306
Werner Lemberg9749f262016-09-08 07:51:03 +02003072016-09-08 Werner Lemberg <wl@gnu.org>
308
Werner Lembergd2d59682016-09-08 09:04:32 +0200309 * Version 2.7 released.
310 =======================
311
312
313 Tag sources with `VER-2-7'.
314
315 * docs/VERSION.TXT: Add entry for version 2.7.
316
317 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
318 builds/windows/vc2005/index.html,
319 builds/windows/vc2008/freetype.vcproj,
320 builds/windows/vc2008/index.html,
321 builds/windows/vc2010/freetype.vcxproj,
322 builds/windows/vc2010/index.html,
323 builds/windows/visualc/freetype.dsp,
324 builds/windows/visualc/freetype.vcproj,
325 builds/windows/visualc/index.html,
326 builds/windows/visualce/freetype.dsp,
327 builds/windows/visualce/freetype.vcproj,
328 builds/windows/visualce/index.html,
329 builds/wince/vc2005-ce/freetype.vcproj,
330 builds/wince/vc2005-ce/index.html,
331 builds/wince/vc2008-ce/freetype.vcproj,
332 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
333
334 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
335 (FREETYPE_PATCH): Set to 0.
336
337 * builds/unix/configure.raw (version_info): Set to 18:6:12.
338 * CMakeLists.txt (VERSION_MINOR): Set to 7.
339 (VERSION_PATCH): Set to 0.
340
341 * docs/CHANGES: Updated.
342
3432016-09-08 Werner Lemberg <wl@gnu.org>
344
Werner Lembergb1e7b682016-09-08 08:56:34 +0200345 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
346
347 This fixes the `multi' build.
348
3492016-09-08 Werner Lemberg <wl@gnu.org>
350
Werner Lemberg9749f262016-09-08 07:51:03 +0200351 [autofit] Another improvement to Armenian support.
352
353 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
354
355 * src/autofit/afscript.h: Use better suited characters to derive
356 default stem widths.
357
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04003582016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
359
360 * src/smooth/ftgrays.c (gray_hline): Microptimize.
361
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04003622016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
363
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -0400364 [smooth] Operate in absolute bitmap coordinates.
365
366 Simpler bitmap addressing improves performance by 1.5%.
367
368 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
369 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
370 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
371
3722016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
373
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -0400374 [smooth] Improve contour start (take 2).
375
376 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
377 instead of...
378 (gray_start_cell): ... this function, which is removed.
379 (gray_convert_glyph): Make initial y-coordinate invalid.
380
Werner Lembergebbb8b22016-09-06 16:28:57 +02003812016-09-06 Werner Lemberg <wl@gnu.org>
382
383 [type1] MM fonts support exactly zero named instances (#48748).
384
385 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
386
Jonathan Kewa15133e2016-09-06 06:33:36 +02003872016-09-06 Jonathan Kew <jfkthame@gmail.com>
388
389 [cff] Fix uninitialized memory.
390
391 Problem reported as
392
393 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
394
395 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
396 array to handle a `get' opcode without a previous `put'.
397
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04003982016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
399
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -0400400 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
401
4022016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
403
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -0400404 [smooth] Improve contour start.
405
406 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
407 instead of...
408 (gray_start_cell): ... this function, which is removed.
409
Werner Lembergc9adf1a2016-09-05 07:32:37 +02004102016-09-05 Werner Lemberg <wl@gnu.org>
411
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +0200412 [cff] Fix memory initialization.
413
414 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
415 variants of FreeType's memory allocation macros don't do zeroing.
416
4172016-09-05 Werner Lemberg <wl@gnu.org>
418
Werner Lemberg1c8bb632016-09-05 08:13:42 +0200419 [ftrandom] Minor improvements.
420
421 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
422 500.
423
424 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
425 directories to ...
426 (INCLUDES): ... this new variable.
427 (LDFLAGS): New variable.
428 (ftrandom.o, ftrandom): Updated.
429
4302016-09-05 Werner Lemberg <wl@gnu.org>
431
Werner Lembergc9adf1a2016-09-05 07:32:37 +0200432 [autofit] Improve Armenian support.
433
434 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
435
436 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
437 selection of characters.
438
439 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
440
Werner Lemberg4b28f6a2016-09-04 19:05:45 +02004412016-09-04 Werner Lemberg <wl@gnu.org>
442
443 [ftrandom] Improve Makefile.
444
445 It now supports both a normal build (`./configure && make') and a
446 development build (`make devel').
447
448 * src/tools/ftrandom/Makefile (VPATH): Set it so that
449 `libfreetype.a' gets searched in both `objs' (for the development
450 build) and `objs/.libs' (for a normal build which uses libtool).
451 (LIBS): Add missing libraries.
452 (ftrandom.o): New rule.
453 (ftrandom): Use automatic variables.
454
Werner Lembergf0fa7a62016-09-03 06:33:36 +02004552016-09-03 Werner Lemberg <wl@gnu.org>
456
Werner Lemberg4e659d72016-09-03 18:14:00 +0200457 [truetype] More fixes for handling of GX deltas.
458
459 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
460
461 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
462 sanity test for glyph variation array header size.
463 Always set stream position before reading packed x and y deltas.
464 Fix thinko w.r.t. `localpoints' array.
465
4662016-09-03 Werner Lemberg <wl@gnu.org>
467
Werner Lembergca8e98d2016-09-03 13:06:16 +0200468 [ftrandom] Various fixes.
469
470 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
471 default.
472 (error_fraction): Make it of type `double' to work as advertized –
473 this was completely broken.
474 Update all related code.
475 (error_count, fcnt): Make it unsigned to fix compiler warnings.
476 Update all related code.
477 (fontlist): Change `len' member to `long' to fix compiler warnings.
478 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
479 unused variables.
480 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
481 (ExecuteTest): Ditto.
482 Call `FT_Done_FreeType'.
483 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
484 int'.
485 (usage): Improve output.
486 (main): Fix compiler warnings.
487
488 * src/tools/ftrandom/README: Updated.
489
4902016-09-03 Werner Lemberg <wl@gnu.org>
491
Werner Lembergb98dfda2016-09-03 08:20:31 +0200492 [base] Avoid negative bitmap stroke dimensions (#48985).
493
494 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
495 actually successful. For example, this can fail for value
496 -32768 if the type is `signed short'. If there are problems,
497 disable the stroke.
498
4992016-09-03 Werner Lemberg <wl@gnu.org>
500
Werner Lembergf0fa7a62016-09-03 06:33:36 +0200501 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
502
503 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
504
Werner Lembergd8ef7262016-09-02 23:27:50 +02005052016-09-02 Werner Lemberg <wl@gnu.org>
506
Werner Lembergd87bb912016-09-02 23:56:27 +0200507 [unix] Enable 64bit support in file system access (#48962).
508
509 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
510
5112016-09-02 Werner Lemberg <wl@gnu.org>
512
Werner Lembergd8ef7262016-09-02 23:27:50 +0200513 [sfnt] Avoid left shift of negative value (#48980).
514
515 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
516 constant.
517
5182016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +0200519
520 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
521
Werner Lemberg7a13dc02016-09-02 08:24:01 +02005222016-09-02 Werner Lemberg <wl@gnu.org>
523
524 Some preparations for the next release.
525
526 * include/freetype/config/ftoption.h
527 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
528
529 * docs/CHANGES: Updated.
530
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04005312016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
532
533 [smooth] Simplify span rendering more.
534
535 It turns out that there is significant cost associated with `FT_Span'
536 creation and calls to `gray_render_span' because it happerns so
537 frequently. This removes these steps from our internal use but leaves
538 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
539 is about 5%.
540
541 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
542 migrated to...
543 (gray_hline): ... here.
544
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04005452016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
546
547 [smooth] Streamline pixmap drawing a bit more.
548
549 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -0400550 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -0400551
552 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
553
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -04005542016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
555
556 [smooth] Streamline pixmap drawing.
557
558 This gives 2% speed improvement in rendering simple glyphs.
559
560 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
561 pointer to its bottom-left and pitch to be used in...
562 (gray_TWorker): ... here.
563 (gray_render_span): Move pixmap flow check from here...
564 (gray_raster_render): .. to here.
565
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -04005662016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
567
568 [smooth] Reduce stack of band boundaries.
569
570 * src/smooth/ftgrays.c (gray_TBand): Removed.
571 (gray_convert_glyph): Updated to stack band boundaries concisely.
572
Werner Lembergf3e71ba2016-08-26 10:31:30 +02005732016-08-26 Werner Lemberg <wl@gnu.org>
574
Werner Lemberg57aa8392016-08-26 11:59:50 +0200575 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
576
5772016-08-26 Werner Lemberg <wl@gnu.org>
578
Werner Lemberg3c61a2f2016-08-26 11:50:09 +0200579 [cid] Fix commit from 2016-05-16.
580
581 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
582
5832016-08-26 Werner Lemberg <wl@gnu.org>
584
Werner Lembergf3e71ba2016-08-26 10:31:30 +0200585 [sfnt] Cache offset and size to bitmap data table.
586
587 This commit avoids `EBDT' and friends being looked up again and
588 again while loading a single embedded bitmap.
589
590 * include/freetype/internal/tttypes.h (TT_FaceRec)
591 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
592 `ebdt_size'.
593
594 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
595 (tt_face_load_sbit): ... this function; also store the table size
596 and offset.
597
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04005982016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
599
600 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
601
Werner Lemberga660e3d2016-08-26 00:23:27 +02006022016-08-26 Werner Lemberg <wl@gnu.org>
603
604 [type1] Fix heap buffer overflow.
605
606 Reported as
607
608 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
609
610 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
611 contain glyph names.
612
Werner Lemberg327f2e32016-08-25 12:46:08 +02006132016-08-25 Werner Lemberg <wl@gnu.org>
614
Werner Lemberg69ce9732016-08-25 19:49:52 +0200615 [sfnt] Fix previous commit (#48901).
616
617 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
618
6192016-08-25 Werner Lemberg <wl@gnu.org>
620
Werner Lembergacd18792016-08-25 17:12:46 +0200621 [sfnt] Speed up handling of invalid format 4 cmaps.
622
623 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
624 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
625
6262016-08-25 Werner Lemberg <wl@gnu.org>
627
Werner Lemberg327f2e32016-08-25 12:46:08 +0200628 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
629
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04006302016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
631
632 [smooth] Simplify span rendering.
633
634 This removes unnecessary complexity of span merging and buffering.
635 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -0400636 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -0400637
638 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
639 (gray_TWorker): Remove span buffer and related fields.
640 (gray_sweep, gray_hline): Updated.
641
642 * include/freetype/ftimage.h: Remove documentation note about
643 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
644
Werner Lembergcf4224a2016-08-16 06:44:23 +02006452016-08-16 Werner Lemberg <wl@gnu.org>
646
Werner Lemberga4c2a312016-08-22 19:32:34 +0200647 [truetype] Fix `MPS' instruction.
648
649 According to Greg Hitchcock, MPS in DWrite really returns the point
650 size.
651
652 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
653
654 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
655
656 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
657 member.
658
659 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
660 (Ins_MPS): Fix instruction.
661
6622016-08-16 Werner Lemberg <wl@gnu.org>
663
Werner Lemberg8521ad92016-08-16 13:44:38 +0200664 [lzw] Optimize last commit.
665
666 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
667 conditional clause.
668
6692016-08-16 Werner Lemberg <wl@gnu.org>
670
Werner Lemberg548f68d2016-08-16 09:46:40 +0200671 [lzw] Avoid invalid left shift.
672
Werner Lemberg6df68332016-08-16 09:50:07 +0200673 Reported as
674
675 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
676
Werner Lemberg548f68d2016-08-16 09:46:40 +0200677 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
678
6792016-08-16 Werner Lemberg <wl@gnu.org>
680
Werner Lemberg8d7b9192016-08-16 08:07:58 +0200681 [lzw] Avoid buffer overrun.
682
683 Reported as
684
685 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
686
687 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
688 underflow.
689
6902016-08-16 Werner Lemberg <wl@gnu.org>
691
Werner Lembergcf4224a2016-08-16 06:44:23 +0200692 [truetype] Fix compiler warning.
693
694 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
695
Werner Lemberg248f5622016-08-13 06:53:53 +02006962016-08-13 Werner Lemberg <wl@gnu.org>
697
698 [winfonts] Avoid zero bitmap width and height.
699
700 Reported as
701
702 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
703
704 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
705 (FNT_Load_Glyph): Check for zero pitch.
706
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02007072016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
708
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -0400709 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
710
7112016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
712
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -0400713 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
714
7152016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
716
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +0200717 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
718
Peter Klotz3b37bfc2016-08-10 22:38:08 -04007192016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
720
721 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
722
Werner Lemberg5224aae2016-08-10 19:47:29 +02007232016-08-10 Werner Lemberg <wl@gnu.org>
724
725 [sfnt] Use correct type for `italicAngle' field (#48732).
726
727 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
728
Werner Lemberg53059f92016-08-07 09:01:33 +02007292016-08-06 Jon Spencer <jon@jonspencer.ca>
730
731 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
732
733 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
734 advance value from the font table and then scales it by the
735 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
736 set that value for bitmap fonts and the advance gets scaled to zero.
737
738 Taken from
739
740 https://github.com/behdad/harfbuzz/issues/252
741
742 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
743 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
744
7452016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +0200746
747 [truetype] Fix GX variation handling of composites.
748
749 * src/truetype/ttgload.c (load_truetype_glyph)
750 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
751
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -04007522016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
753
754 [smooth] Minor refactoring.
755
756 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
757 Updated.
758
Werner Lembergfae4ec02016-07-29 06:43:32 +02007592016-07-29 Werner Lemberg <wl@gnu.org>
760
761 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
762
763 Since 2016-05-16 we detect infinite recursion directly.
764
765 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
766 `maxComponentDepth'.
767 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
768 `maxComponentDepth' is not valid. Instead, simply adjust its value
769 and emit a tracing message.
770
Werner Lembergd9c7f5a2016-07-26 20:20:27 +02007712016-07-26 Werner Lemberg <wl@gnu.org>
772
773 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
774
775 No functional change.
776
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +02007772016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
778
779 [truetype] Record the end of IDEFs.
780
781 To match the logic in FDEF. The value of the end is only used for
782 bound-checking in `Ins_JMPR', so it may not have been obvious that
783 it was not recorded. Tested (as part of Font Validator 2.0) all the
784 fonts on Fedora and did not see any change.
785
786 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
787
Werner Lemberge69f34b2016-07-19 07:06:19 +02007882016-07-19 Werner Lemberg <wl@gnu.org>
789
Werner Lemberg7f631052016-07-19 21:35:58 +0200790 [truetype] Sanitizer fix, second try.
791
792 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
793 tests and use only one slot more.
794
7952016-07-19 Werner Lemberg <wl@gnu.org>
796
Werner Lemberge69f34b2016-07-19 07:06:19 +0200797 [truetype] Sanitizer fix.
798
799 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
800 to fix nested loops.
801
Werner Lemberga3b70d72016-07-18 06:23:36 +02008022016-07-18 Werner Lemberg <wl@gnu.org>
803
804 [truetype] Make GETDATA work only for GX fonts.
805
806 * src/truetype/ttinterp.c (opcode_name): Updated.
807 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
808 (TT_RunIns): Updated.
809
8102016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +0200811
Werner Lemberg8c930132016-07-17 22:40:31 +0200812 [truetype] Add support for Apple's
813
814 GETDATA[], opcode 0x92
815
816 bytecode instruction. It always returns 17, and we have absolutely
817 no idea what it is good for...
818
819 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
820 (Ins_GETDATA): New function.
821 (TT_RunIns): Add it.
822
8232016-07-16 Werner Lemberg <wl@gnu.org>
824
Werner Lemberge0843602016-07-16 18:46:28 +0200825 [truetype] Add bytecode support for GX variation fonts.
826
827 This commit implements undocumented (but confirmed) stuff from
828 Apple's old bytecode engine.
829
830 GETVARIATION[], opcode 0x91
831 This opcode pushes normalized variation coordinates for all axes
832 onto the stack (in 2.14 format). Coordinate of first axis gets
833 pushed first.
834
835 GETINFO[], selector bit 3
836 If GX variation support is enabled, bit 10 of the result is set
837 to 1.
838
839 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
840 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
841 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
842 bit 3, checking support for variation glyph hinting.
843 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
844 to implement opcode 0x91.
845 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
846
8472016-07-16 Werner Lemberg <wl@gnu.org>
848
Werner Lemberg32a32062016-07-16 16:39:26 +0200849 [truetype] Fix GETINFO bytecode instruction.
850
851 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
852 stretching information.
853
Behdad Esfahbod69446dd2016-07-16 10:52:38 +02008542016-07-16 Behdad Esfahbod <behdad@behdad.org>
855
856 [truetype] Make all glyphs in `Zycon' GX font work.
857
858 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
859 tests.
860
Werner Lemberga3b61252016-07-16 08:16:16 +02008612016-07-16 Werner Lemberg <wl@gnu.org>
862
863 [truetype] Fix GX delta tracing.
864
865 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
866 relative point movements.
867
8682016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +0200869
870 [truetype] More fixes for GX.
871
872 This finally fixes the rendering of the cyclist and the lizard in
873 the `Zycon' font.
874
875 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
876 index is always cumulative.
877
878 (tt_handle_deltas): Rename to...
879 (tt_interpolate_deltas): ... This.
880 Add new parameter for output point array.
881 Update caller.
882
883 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
884 the intermediate results of `tt_interpolate_deltas' that are to be
885 added to `outline->points'.
886
Werner Lembergaafff572016-07-16 06:41:39 +02008872016-07-15 Werner Lemberg <wl@gnu.org>
888
889 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
890
891 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
892
893 Reported by Alexei.
894
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +02008952016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
896
897 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
898
899 Problem reported by Hin-Tak Leung.
900
Werner Lemberg894c0222016-07-15 10:23:11 +02009012016-07-15 Werner Lemberg <wl@gnu.org>
902
Werner Lemberg1831e6f2016-07-15 10:35:32 +0200903 [autofit] Update and improve segment and edge tracing.
904
905 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
906 `delta' also.
907 Don't show first point of segment as a replacement for `pos'; this
908 is (a) misleading, since the difference to `pos' can be almost
909 arbitrarily large in corner cases, and (b) it is better to have all
910 segment data in font units instead of a single value given in output
911 space coordinates.
912 Improve layout.
913 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
914 values for convenience.
915 Improve layout.
916
9172016-07-15 Werner Lemberg <wl@gnu.org>
918
Werner Lemberg894c0222016-07-15 10:23:11 +0200919 [autofit] For edges, reject segments wider than 1px (#41334).
920
921 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
922
923 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
924 `delta'.
925 (af_latin_hints_compute_edges): Reject segments with a delta larger
926 than 0.5px.
927
Werner Lemberg631e2182016-07-14 06:25:05 +02009282016-07-14 Werner Lemberg <wl@gnu.org>
929
Werner Lembergff655432016-07-14 15:01:55 +0200930 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
931
9322016-07-14 Werner Lemberg <wl@gnu.org>
933
Werner Lembergee3f36f2016-07-14 10:25:20 +0200934 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
935
936 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
937
9382016-07-14 Werner Lemberg <wl@gnu.org>
939
Werner Lemberg631e2182016-07-14 06:25:05 +0200940 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
941
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +02009422016-07-14 Behdad Esfahbod <behdad@behdad.org>
943
944 [truetype] Fix gxvar delta interpolation.
945
946 The coordinates of the base font should be used for interpolation
947 purposes, NOT the current points (i.e., the result of accumulation
948 of previous deltas).
949
950 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
951 `points_org' before looping over all tuples.
952
Werner Lembergf6aa0892013-05-10 07:58:47 +0200953
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000954----------------------------------------------------------------------------
955
Werner Lemberg8160b202016-09-08 08:42:10 +0200956Copyright 2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000957David Turner, Robert Wilhelm, and Werner Lemberg.
958
959This file is part of the FreeType project, and may only be used, modified,
960and distributed under the terms of the FreeType project license,
961LICENSE.TXT. By continuing to use, modify, or distribute this file you
962indicate that you have read the license and understand and accept it
963fully.
964
965
966Local Variables:
967version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +0000968coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000969End: