blob: 1f4ae74a311c62fe861a0a291a4619af9d24b1ab [file] [log] [blame]
Werner Lembergbf902392016-09-29 13:04:46 +020012016-09-29 Werner Lemberg <wl@gnu.org>
2
3 [truetype] Clean up `TT_Face' structure.
4
5 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
6 fields `horz_metrics' and `vert_metrics'.
7 Update documentation.
8
9 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
10
Werner Lemberg2ecf89b2016-09-28 19:06:21 +0200112016-09-28 Werner Lemberg <wl@gnu.org>
12
Werner Lemberg45cad2e2016-09-28 19:10:52 +020013 More FT_ZERO usage.
14
15 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
16 s/ft_memset/FT_MEM_ZERO/.
17
18 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
19 s/ft_memset/FT_ARRAY_ZERO/.
20
21 * src/raster/ftraster.c (FT_ZERO): Define.
22 (ft_black_new): Use it.
23 * src/raster/ftrend1.c (ft_raster1_get_cbox):
24 s/FT_MEM_ZERO/FT_ZERO/.
25
26 * src/smooth/ftgrays.c (FT_ZERO): Define.
27 (gray_raster_new): Use it.
28 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
29 s/FT_MEM_ZERO/FT_ZERO/.
30
312016-09-28 Werner Lemberg <wl@gnu.org>
32
Werner Lemberg2ecf89b2016-09-28 19:06:21 +020033 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
34
Werner Lemberg0d945922016-09-27 08:44:31 +0200352016-09-27 Werner Lemberg <wl@gnu.org>
36
Werner Lemberga3e2c832016-09-27 21:42:02 +020037 [truetype] Trace number of executed opcodes.
38
39 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
40
412016-09-27 Werner Lemberg <wl@gnu.org>
42
Werner Lemberge27b8a52016-09-27 21:21:01 +020043 [truetype] Speed up `TT_Load_Glyph'.
44
45 This avoids additional calls to `tt_face_lookup_table' for the
46 `glyf' table, which can be expensive.
47
48 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
49 `glyf_offset' field to ...
50 (TT_FaceRec): ... this structure.
51 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
52 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +020053 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +020054
552016-09-27 Werner Lemberg <wl@gnu.org>
56
Werner Lemberg0d945922016-09-27 08:44:31 +020057 [truetype] Introduce dynamic limits for some bytecode opcodes.
58
59 This speeds up FreeType's handling of malformed fonts.
60
61 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
62 of twilight points, the total number of negative jumps, and the
63 total number of loops in LOOPCALL opcodes. The values are based on
64 the number of points and entries in the CVT table.
65 (Ins_JMPR): Test negative jump counter.
66 (Ins_LOOPCALL): Test loopcall counter.
67
68 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
69
70 * docs/CHANGES: Updated.
71
Werner Lembergd11e8b62016-09-25 15:32:04 +0200722016-09-25 Werner Lemberg <wl@gnu.org>
73
Werner Lemberga7649632016-09-25 16:29:05 +020074 [truetype] Sanitize only last entry of `loca' table.
75
76 Without this patch, a loca sequence like `0 100000 0 100000 ...',
77 where value 100000 is larger than the `glyf' table size, makes
78 FreeType handle the whole `glyf' table as a single glyph again and
79 again, which is certainly invalid (and can be very slow, too).
80
81 * src/truetype/ttpload.c (tt_face_get_location): Implement.
82 Improve tracing messages.
83
842016-09-25 Werner Lemberg <wl@gnu.org>
85
Werner Lembergd11e8b62016-09-25 15:32:04 +020086 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
87
Werner Lemberg2f2e73c2016-09-24 22:42:58 +0200882016-09-24 Werner Lemberg <wl@gnu.org>
89
90 [autofit] Tracing fixes.
91
92 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
93 functions only if we actually do tracing.
94
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -0400952016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
96
97 [smooth] Reduce divisions in the line renderer.
98
99 We don't need some divisions if a line segments stays within a single
100 row or a single column of pixels.
101
102 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
103 conditional.
104
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -04001052016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
106
107 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
108
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -04001092016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
110
111 [smooth] Another tiny speed-up.
112
113 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
114 (gray_record_cell): ... this function.
115
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04001162016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
117
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -0400118 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
119
1202016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
121
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -0400122 [smooth] Fix valgrind warning and reoptimize.
123
124 The algorithm calls `gray_set_cell' at the start of each new contour
125 or when the contours cross the cell boundaries. Double-checking for
126 that is wasteful.
127
128 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
129 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
130
Werner Lemberge421a0b2016-09-10 08:02:30 +02001312016-09-10 Werner Lemberg <wl@gnu.org>
132
133 [sfnt] Fix previous commit.
134
135 Problems reported as
136
137 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
138
139 We now map the strike index right before accessing the physical
140 data, not earlier.
141
142 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
143 after creating the map so that...
144
145 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
146 can be used before and after setting up `sbit_strike_map'.
147 (tt_face_set_sbit_strike): Revert change.
148 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
149
150 * src/truetype/ttdriver.c (tt_size_select): Revert change.
151
Werner Lembergd609b7c2016-09-09 22:11:07 +02001522016-09-09 Werner Lemberg <wl@gnu.org>
153
Werner Lembergdeb26152016-09-09 22:13:33 +0200154 [ftfuzzer] Minor improvements.
155
156 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
157 invalid strikes.
158 Use better values for call to `FT_Set_Char_Size'.
159
1602016-09-09 Werner Lemberg <wl@gnu.org>
161
Werner Lembergd609b7c2016-09-09 22:11:07 +0200162 [sfnt] Don't provide (completely) broken strike data.
163
164 FreeType tries to sanitize strike header data; we now reject
165 completely broken ones.
166
167 * include/freetype/internal/tttypes.h (TT_FaceRec): New
168 `sbit_strike_map' array pointer.
169
170 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
171 width or height would be zero.
172 Add tracing message in case of error.
173
174 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
175 only using (more or less) valid strike header data for
176 FT_Face's `available_sizes' array.
177 (sfnt_done_face): Updated.
178
179 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
180 `sbit_strike_map'.
181 (tt_face_load_strike_metrics): Improve tracing.
182
183 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
184
Werner Lemberg9749f262016-09-08 07:51:03 +02001852016-09-08 Werner Lemberg <wl@gnu.org>
186
Werner Lembergd2d59682016-09-08 09:04:32 +0200187 * Version 2.7 released.
188 =======================
189
190
191 Tag sources with `VER-2-7'.
192
193 * docs/VERSION.TXT: Add entry for version 2.7.
194
195 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
196 builds/windows/vc2005/index.html,
197 builds/windows/vc2008/freetype.vcproj,
198 builds/windows/vc2008/index.html,
199 builds/windows/vc2010/freetype.vcxproj,
200 builds/windows/vc2010/index.html,
201 builds/windows/visualc/freetype.dsp,
202 builds/windows/visualc/freetype.vcproj,
203 builds/windows/visualc/index.html,
204 builds/windows/visualce/freetype.dsp,
205 builds/windows/visualce/freetype.vcproj,
206 builds/windows/visualce/index.html,
207 builds/wince/vc2005-ce/freetype.vcproj,
208 builds/wince/vc2005-ce/index.html,
209 builds/wince/vc2008-ce/freetype.vcproj,
210 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
211
212 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
213 (FREETYPE_PATCH): Set to 0.
214
215 * builds/unix/configure.raw (version_info): Set to 18:6:12.
216 * CMakeLists.txt (VERSION_MINOR): Set to 7.
217 (VERSION_PATCH): Set to 0.
218
219 * docs/CHANGES: Updated.
220
2212016-09-08 Werner Lemberg <wl@gnu.org>
222
Werner Lembergb1e7b682016-09-08 08:56:34 +0200223 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
224
225 This fixes the `multi' build.
226
2272016-09-08 Werner Lemberg <wl@gnu.org>
228
Werner Lemberg9749f262016-09-08 07:51:03 +0200229 [autofit] Another improvement to Armenian support.
230
231 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
232
233 * src/autofit/afscript.h: Use better suited characters to derive
234 default stem widths.
235
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04002362016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
237
238 * src/smooth/ftgrays.c (gray_hline): Microptimize.
239
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04002402016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
241
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -0400242 [smooth] Operate in absolute bitmap coordinates.
243
244 Simpler bitmap addressing improves performance by 1.5%.
245
246 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
247 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
248 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
249
2502016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
251
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -0400252 [smooth] Improve contour start (take 2).
253
254 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
255 instead of...
256 (gray_start_cell): ... this function, which is removed.
257 (gray_convert_glyph): Make initial y-coordinate invalid.
258
Werner Lembergebbb8b22016-09-06 16:28:57 +02002592016-09-06 Werner Lemberg <wl@gnu.org>
260
261 [type1] MM fonts support exactly zero named instances (#48748).
262
263 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
264
Jonathan Kewa15133e2016-09-06 06:33:36 +02002652016-09-06 Jonathan Kew <jfkthame@gmail.com>
266
267 [cff] Fix uninitialized memory.
268
269 Problem reported as
270
271 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
272
273 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
274 array to handle a `get' opcode without a previous `put'.
275
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04002762016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
277
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -0400278 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
279
2802016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
281
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -0400282 [smooth] Improve contour start.
283
284 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
285 instead of...
286 (gray_start_cell): ... this function, which is removed.
287
Werner Lembergc9adf1a2016-09-05 07:32:37 +02002882016-09-05 Werner Lemberg <wl@gnu.org>
289
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +0200290 [cff] Fix memory initialization.
291
292 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
293 variants of FreeType's memory allocation macros don't do zeroing.
294
2952016-09-05 Werner Lemberg <wl@gnu.org>
296
Werner Lemberg1c8bb632016-09-05 08:13:42 +0200297 [ftrandom] Minor improvements.
298
299 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
300 500.
301
302 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
303 directories to ...
304 (INCLUDES): ... this new variable.
305 (LDFLAGS): New variable.
306 (ftrandom.o, ftrandom): Updated.
307
3082016-09-05 Werner Lemberg <wl@gnu.org>
309
Werner Lembergc9adf1a2016-09-05 07:32:37 +0200310 [autofit] Improve Armenian support.
311
312 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
313
314 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
315 selection of characters.
316
317 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
318
Werner Lemberg4b28f6a2016-09-04 19:05:45 +02003192016-09-04 Werner Lemberg <wl@gnu.org>
320
321 [ftrandom] Improve Makefile.
322
323 It now supports both a normal build (`./configure && make') and a
324 development build (`make devel').
325
326 * src/tools/ftrandom/Makefile (VPATH): Set it so that
327 `libfreetype.a' gets searched in both `objs' (for the development
328 build) and `objs/.libs' (for a normal build which uses libtool).
329 (LIBS): Add missing libraries.
330 (ftrandom.o): New rule.
331 (ftrandom): Use automatic variables.
332
Werner Lembergf0fa7a62016-09-03 06:33:36 +02003332016-09-03 Werner Lemberg <wl@gnu.org>
334
Werner Lemberg4e659d72016-09-03 18:14:00 +0200335 [truetype] More fixes for handling of GX deltas.
336
337 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
338
339 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
340 sanity test for glyph variation array header size.
341 Always set stream position before reading packed x and y deltas.
342 Fix thinko w.r.t. `localpoints' array.
343
3442016-09-03 Werner Lemberg <wl@gnu.org>
345
Werner Lembergca8e98d2016-09-03 13:06:16 +0200346 [ftrandom] Various fixes.
347
348 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
349 default.
350 (error_fraction): Make it of type `double' to work as advertized –
351 this was completely broken.
352 Update all related code.
353 (error_count, fcnt): Make it unsigned to fix compiler warnings.
354 Update all related code.
355 (fontlist): Change `len' member to `long' to fix compiler warnings.
356 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
357 unused variables.
358 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
359 (ExecuteTest): Ditto.
360 Call `FT_Done_FreeType'.
361 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
362 int'.
363 (usage): Improve output.
364 (main): Fix compiler warnings.
365
366 * src/tools/ftrandom/README: Updated.
367
3682016-09-03 Werner Lemberg <wl@gnu.org>
369
Werner Lembergb98dfda2016-09-03 08:20:31 +0200370 [base] Avoid negative bitmap stroke dimensions (#48985).
371
372 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
373 actually successful. For example, this can fail for value
374 -32768 if the type is `signed short'. If there are problems,
375 disable the stroke.
376
3772016-09-03 Werner Lemberg <wl@gnu.org>
378
Werner Lembergf0fa7a62016-09-03 06:33:36 +0200379 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
380
381 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
382
Werner Lembergd8ef7262016-09-02 23:27:50 +02003832016-09-02 Werner Lemberg <wl@gnu.org>
384
Werner Lembergd87bb912016-09-02 23:56:27 +0200385 [unix] Enable 64bit support in file system access (#48962).
386
387 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
388
3892016-09-02 Werner Lemberg <wl@gnu.org>
390
Werner Lembergd8ef7262016-09-02 23:27:50 +0200391 [sfnt] Avoid left shift of negative value (#48980).
392
393 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
394 constant.
395
3962016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +0200397
398 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
399
Werner Lemberg7a13dc02016-09-02 08:24:01 +02004002016-09-02 Werner Lemberg <wl@gnu.org>
401
402 Some preparations for the next release.
403
404 * include/freetype/config/ftoption.h
405 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
406
407 * docs/CHANGES: Updated.
408
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04004092016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
410
411 [smooth] Simplify span rendering more.
412
413 It turns out that there is significant cost associated with `FT_Span'
414 creation and calls to `gray_render_span' because it happerns so
415 frequently. This removes these steps from our internal use but leaves
416 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
417 is about 5%.
418
419 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
420 migrated to...
421 (gray_hline): ... here.
422
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04004232016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
424
425 [smooth] Streamline pixmap drawing a bit more.
426
427 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -0400428 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -0400429
430 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
431
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -04004322016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
433
434 [smooth] Streamline pixmap drawing.
435
436 This gives 2% speed improvement in rendering simple glyphs.
437
438 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
439 pointer to its bottom-left and pitch to be used in...
440 (gray_TWorker): ... here.
441 (gray_render_span): Move pixmap flow check from here...
442 (gray_raster_render): .. to here.
443
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -04004442016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
445
446 [smooth] Reduce stack of band boundaries.
447
448 * src/smooth/ftgrays.c (gray_TBand): Removed.
449 (gray_convert_glyph): Updated to stack band boundaries concisely.
450
Werner Lembergf3e71ba2016-08-26 10:31:30 +02004512016-08-26 Werner Lemberg <wl@gnu.org>
452
Werner Lemberg57aa8392016-08-26 11:59:50 +0200453 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
454
4552016-08-26 Werner Lemberg <wl@gnu.org>
456
Werner Lemberg3c61a2f2016-08-26 11:50:09 +0200457 [cid] Fix commit from 2016-05-16.
458
459 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
460
4612016-08-26 Werner Lemberg <wl@gnu.org>
462
Werner Lembergf3e71ba2016-08-26 10:31:30 +0200463 [sfnt] Cache offset and size to bitmap data table.
464
465 This commit avoids `EBDT' and friends being looked up again and
466 again while loading a single embedded bitmap.
467
468 * include/freetype/internal/tttypes.h (TT_FaceRec)
469 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
470 `ebdt_size'.
471
472 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
473 (tt_face_load_sbit): ... this function; also store the table size
474 and offset.
475
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04004762016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
477
478 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
479
Werner Lemberga660e3d2016-08-26 00:23:27 +02004802016-08-26 Werner Lemberg <wl@gnu.org>
481
482 [type1] Fix heap buffer overflow.
483
484 Reported as
485
486 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
487
488 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
489 contain glyph names.
490
Werner Lemberg327f2e32016-08-25 12:46:08 +02004912016-08-25 Werner Lemberg <wl@gnu.org>
492
Werner Lemberg69ce9732016-08-25 19:49:52 +0200493 [sfnt] Fix previous commit (#48901).
494
495 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
496
4972016-08-25 Werner Lemberg <wl@gnu.org>
498
Werner Lembergacd18792016-08-25 17:12:46 +0200499 [sfnt] Speed up handling of invalid format 4 cmaps.
500
501 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
502 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
503
5042016-08-25 Werner Lemberg <wl@gnu.org>
505
Werner Lemberg327f2e32016-08-25 12:46:08 +0200506 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
507
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04005082016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
509
510 [smooth] Simplify span rendering.
511
512 This removes unnecessary complexity of span merging and buffering.
513 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -0400514 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -0400515
516 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
517 (gray_TWorker): Remove span buffer and related fields.
518 (gray_sweep, gray_hline): Updated.
519
520 * include/freetype/ftimage.h: Remove documentation note about
521 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
522
Werner Lembergcf4224a2016-08-16 06:44:23 +02005232016-08-16 Werner Lemberg <wl@gnu.org>
524
Werner Lemberga4c2a312016-08-22 19:32:34 +0200525 [truetype] Fix `MPS' instruction.
526
527 According to Greg Hitchcock, MPS in DWrite really returns the point
528 size.
529
530 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
531
532 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
533
534 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
535 member.
536
537 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
538 (Ins_MPS): Fix instruction.
539
5402016-08-16 Werner Lemberg <wl@gnu.org>
541
Werner Lemberg8521ad92016-08-16 13:44:38 +0200542 [lzw] Optimize last commit.
543
544 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
545 conditional clause.
546
5472016-08-16 Werner Lemberg <wl@gnu.org>
548
Werner Lemberg548f68d2016-08-16 09:46:40 +0200549 [lzw] Avoid invalid left shift.
550
Werner Lemberg6df68332016-08-16 09:50:07 +0200551 Reported as
552
553 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
554
Werner Lemberg548f68d2016-08-16 09:46:40 +0200555 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
556
5572016-08-16 Werner Lemberg <wl@gnu.org>
558
Werner Lemberg8d7b9192016-08-16 08:07:58 +0200559 [lzw] Avoid buffer overrun.
560
561 Reported as
562
563 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
564
565 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
566 underflow.
567
5682016-08-16 Werner Lemberg <wl@gnu.org>
569
Werner Lembergcf4224a2016-08-16 06:44:23 +0200570 [truetype] Fix compiler warning.
571
572 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
573
Werner Lemberg248f5622016-08-13 06:53:53 +02005742016-08-13 Werner Lemberg <wl@gnu.org>
575
576 [winfonts] Avoid zero bitmap width and height.
577
578 Reported as
579
580 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
581
582 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
583 (FNT_Load_Glyph): Check for zero pitch.
584
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02005852016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
586
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -0400587 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
588
5892016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
590
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -0400591 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
592
5932016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
594
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +0200595 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
596
Peter Klotz3b37bfc2016-08-10 22:38:08 -04005972016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
598
599 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
600
Werner Lemberg5224aae2016-08-10 19:47:29 +02006012016-08-10 Werner Lemberg <wl@gnu.org>
602
603 [sfnt] Use correct type for `italicAngle' field (#48732).
604
605 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
606
Werner Lemberg53059f92016-08-07 09:01:33 +02006072016-08-06 Jon Spencer <jon@jonspencer.ca>
608
609 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
610
611 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
612 advance value from the font table and then scales it by the
613 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
614 set that value for bitmap fonts and the advance gets scaled to zero.
615
616 Taken from
617
618 https://github.com/behdad/harfbuzz/issues/252
619
620 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
621 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
622
6232016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +0200624
625 [truetype] Fix GX variation handling of composites.
626
627 * src/truetype/ttgload.c (load_truetype_glyph)
628 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
629
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -04006302016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
631
632 [smooth] Minor refactoring.
633
634 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
635 Updated.
636
Werner Lembergfae4ec02016-07-29 06:43:32 +02006372016-07-29 Werner Lemberg <wl@gnu.org>
638
639 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
640
641 Since 2016-05-16 we detect infinite recursion directly.
642
643 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
644 `maxComponentDepth'.
645 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
646 `maxComponentDepth' is not valid. Instead, simply adjust its value
647 and emit a tracing message.
648
Werner Lembergd9c7f5a2016-07-26 20:20:27 +02006492016-07-26 Werner Lemberg <wl@gnu.org>
650
651 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
652
653 No functional change.
654
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +02006552016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
656
657 [truetype] Record the end of IDEFs.
658
659 To match the logic in FDEF. The value of the end is only used for
660 bound-checking in `Ins_JMPR', so it may not have been obvious that
661 it was not recorded. Tested (as part of Font Validator 2.0) all the
662 fonts on Fedora and did not see any change.
663
664 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
665
Werner Lemberge69f34b2016-07-19 07:06:19 +02006662016-07-19 Werner Lemberg <wl@gnu.org>
667
Werner Lemberg7f631052016-07-19 21:35:58 +0200668 [truetype] Sanitizer fix, second try.
669
670 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
671 tests and use only one slot more.
672
6732016-07-19 Werner Lemberg <wl@gnu.org>
674
Werner Lemberge69f34b2016-07-19 07:06:19 +0200675 [truetype] Sanitizer fix.
676
677 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
678 to fix nested loops.
679
Werner Lemberga3b70d72016-07-18 06:23:36 +02006802016-07-18 Werner Lemberg <wl@gnu.org>
681
682 [truetype] Make GETDATA work only for GX fonts.
683
684 * src/truetype/ttinterp.c (opcode_name): Updated.
685 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
686 (TT_RunIns): Updated.
687
6882016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +0200689
Werner Lemberg8c930132016-07-17 22:40:31 +0200690 [truetype] Add support for Apple's
691
692 GETDATA[], opcode 0x92
693
694 bytecode instruction. It always returns 17, and we have absolutely
695 no idea what it is good for...
696
697 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
698 (Ins_GETDATA): New function.
699 (TT_RunIns): Add it.
700
7012016-07-16 Werner Lemberg <wl@gnu.org>
702
Werner Lemberge0843602016-07-16 18:46:28 +0200703 [truetype] Add bytecode support for GX variation fonts.
704
705 This commit implements undocumented (but confirmed) stuff from
706 Apple's old bytecode engine.
707
708 GETVARIATION[], opcode 0x91
709 This opcode pushes normalized variation coordinates for all axes
710 onto the stack (in 2.14 format). Coordinate of first axis gets
711 pushed first.
712
713 GETINFO[], selector bit 3
714 If GX variation support is enabled, bit 10 of the result is set
715 to 1.
716
717 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
718 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
719 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
720 bit 3, checking support for variation glyph hinting.
721 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
722 to implement opcode 0x91.
723 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
724
7252016-07-16 Werner Lemberg <wl@gnu.org>
726
Werner Lemberg32a32062016-07-16 16:39:26 +0200727 [truetype] Fix GETINFO bytecode instruction.
728
729 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
730 stretching information.
731
Behdad Esfahbod69446dd2016-07-16 10:52:38 +02007322016-07-16 Behdad Esfahbod <behdad@behdad.org>
733
734 [truetype] Make all glyphs in `Zycon' GX font work.
735
736 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
737 tests.
738
Werner Lemberga3b61252016-07-16 08:16:16 +02007392016-07-16 Werner Lemberg <wl@gnu.org>
740
741 [truetype] Fix GX delta tracing.
742
743 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
744 relative point movements.
745
7462016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +0200747
748 [truetype] More fixes for GX.
749
750 This finally fixes the rendering of the cyclist and the lizard in
751 the `Zycon' font.
752
753 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
754 index is always cumulative.
755
756 (tt_handle_deltas): Rename to...
757 (tt_interpolate_deltas): ... This.
758 Add new parameter for output point array.
759 Update caller.
760
761 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
762 the intermediate results of `tt_interpolate_deltas' that are to be
763 added to `outline->points'.
764
Werner Lembergaafff572016-07-16 06:41:39 +02007652016-07-15 Werner Lemberg <wl@gnu.org>
766
767 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
768
769 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
770
771 Reported by Alexei.
772
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +02007732016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
774
775 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
776
777 Problem reported by Hin-Tak Leung.
778
Werner Lemberg894c0222016-07-15 10:23:11 +02007792016-07-15 Werner Lemberg <wl@gnu.org>
780
Werner Lemberg1831e6f2016-07-15 10:35:32 +0200781 [autofit] Update and improve segment and edge tracing.
782
783 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
784 `delta' also.
785 Don't show first point of segment as a replacement for `pos'; this
786 is (a) misleading, since the difference to `pos' can be almost
787 arbitrarily large in corner cases, and (b) it is better to have all
788 segment data in font units instead of a single value given in output
789 space coordinates.
790 Improve layout.
791 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
792 values for convenience.
793 Improve layout.
794
7952016-07-15 Werner Lemberg <wl@gnu.org>
796
Werner Lemberg894c0222016-07-15 10:23:11 +0200797 [autofit] For edges, reject segments wider than 1px (#41334).
798
799 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
800
801 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
802 `delta'.
803 (af_latin_hints_compute_edges): Reject segments with a delta larger
804 than 0.5px.
805
Werner Lemberg631e2182016-07-14 06:25:05 +02008062016-07-14 Werner Lemberg <wl@gnu.org>
807
Werner Lembergff655432016-07-14 15:01:55 +0200808 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
809
8102016-07-14 Werner Lemberg <wl@gnu.org>
811
Werner Lembergee3f36f2016-07-14 10:25:20 +0200812 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
813
814 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
815
8162016-07-14 Werner Lemberg <wl@gnu.org>
817
Werner Lemberg631e2182016-07-14 06:25:05 +0200818 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
819
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +02008202016-07-14 Behdad Esfahbod <behdad@behdad.org>
821
822 [truetype] Fix gxvar delta interpolation.
823
824 The coordinates of the base font should be used for interpolation
825 purposes, NOT the current points (i.e., the result of accumulation
826 of previous deltas).
827
828 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
829 `points_org' before looping over all tuples.
830
Werner Lembergf6aa0892013-05-10 07:58:47 +0200831
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000832----------------------------------------------------------------------------
833
Werner Lemberg8160b202016-09-08 08:42:10 +0200834Copyright 2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000835David Turner, Robert Wilhelm, and Werner Lemberg.
836
837This file is part of the FreeType project, and may only be used, modified,
838and distributed under the terms of the FreeType project license,
839LICENSE.TXT. By continuing to use, modify, or distribute this file you
840indicate that you have read the license and understand and accept it
841fully.
842
843
844Local Variables:
845version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +0000846coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000847End: