blob: f5a88f7db1b7f6221f6b900d1607204c9f950336 [file] [log] [blame]
Werner Lemberg2ecf89b2016-09-28 19:06:21 +020012016-09-28 Werner Lemberg <wl@gnu.org>
2
3 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
4
Werner Lemberg0d945922016-09-27 08:44:31 +020052016-09-27 Werner Lemberg <wl@gnu.org>
6
Werner Lemberga3e2c832016-09-27 21:42:02 +02007 [truetype] Trace number of executed opcodes.
8
9 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
10
112016-09-27 Werner Lemberg <wl@gnu.org>
12
Werner Lemberge27b8a52016-09-27 21:21:01 +020013 [truetype] Speed up `TT_Load_Glyph'.
14
15 This avoids additional calls to `tt_face_lookup_table' for the
16 `glyf' table, which can be expensive.
17
18 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
19 `glyf_offset' field to ...
20 (TT_FaceRec): ... this structure.
21 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
22 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +020023 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +020024
252016-09-27 Werner Lemberg <wl@gnu.org>
26
Werner Lemberg0d945922016-09-27 08:44:31 +020027 [truetype] Introduce dynamic limits for some bytecode opcodes.
28
29 This speeds up FreeType's handling of malformed fonts.
30
31 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
32 of twilight points, the total number of negative jumps, and the
33 total number of loops in LOOPCALL opcodes. The values are based on
34 the number of points and entries in the CVT table.
35 (Ins_JMPR): Test negative jump counter.
36 (Ins_LOOPCALL): Test loopcall counter.
37
38 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
39
40 * docs/CHANGES: Updated.
41
Werner Lembergd11e8b62016-09-25 15:32:04 +0200422016-09-25 Werner Lemberg <wl@gnu.org>
43
Werner Lemberga7649632016-09-25 16:29:05 +020044 [truetype] Sanitize only last entry of `loca' table.
45
46 Without this patch, a loca sequence like `0 100000 0 100000 ...',
47 where value 100000 is larger than the `glyf' table size, makes
48 FreeType handle the whole `glyf' table as a single glyph again and
49 again, which is certainly invalid (and can be very slow, too).
50
51 * src/truetype/ttpload.c (tt_face_get_location): Implement.
52 Improve tracing messages.
53
542016-09-25 Werner Lemberg <wl@gnu.org>
55
Werner Lembergd11e8b62016-09-25 15:32:04 +020056 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
57
Werner Lemberg2f2e73c2016-09-24 22:42:58 +0200582016-09-24 Werner Lemberg <wl@gnu.org>
59
60 [autofit] Tracing fixes.
61
62 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
63 functions only if we actually do tracing.
64
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -0400652016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
66
67 [smooth] Reduce divisions in the line renderer.
68
69 We don't need some divisions if a line segments stays within a single
70 row or a single column of pixels.
71
72 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
73 conditional.
74
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -0400752016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
76
77 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
78
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -0400792016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
80
81 [smooth] Another tiny speed-up.
82
83 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
84 (gray_record_cell): ... this function.
85
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -0400862016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
87
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -040088 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
89
902016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
91
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -040092 [smooth] Fix valgrind warning and reoptimize.
93
94 The algorithm calls `gray_set_cell' at the start of each new contour
95 or when the contours cross the cell boundaries. Double-checking for
96 that is wasteful.
97
98 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
99 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
100
Werner Lemberge421a0b2016-09-10 08:02:30 +02001012016-09-10 Werner Lemberg <wl@gnu.org>
102
103 [sfnt] Fix previous commit.
104
105 Problems reported as
106
107 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
108
109 We now map the strike index right before accessing the physical
110 data, not earlier.
111
112 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
113 after creating the map so that...
114
115 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
116 can be used before and after setting up `sbit_strike_map'.
117 (tt_face_set_sbit_strike): Revert change.
118 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
119
120 * src/truetype/ttdriver.c (tt_size_select): Revert change.
121
Werner Lembergd609b7c2016-09-09 22:11:07 +02001222016-09-09 Werner Lemberg <wl@gnu.org>
123
Werner Lembergdeb26152016-09-09 22:13:33 +0200124 [ftfuzzer] Minor improvements.
125
126 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
127 invalid strikes.
128 Use better values for call to `FT_Set_Char_Size'.
129
1302016-09-09 Werner Lemberg <wl@gnu.org>
131
Werner Lembergd609b7c2016-09-09 22:11:07 +0200132 [sfnt] Don't provide (completely) broken strike data.
133
134 FreeType tries to sanitize strike header data; we now reject
135 completely broken ones.
136
137 * include/freetype/internal/tttypes.h (TT_FaceRec): New
138 `sbit_strike_map' array pointer.
139
140 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
141 width or height would be zero.
142 Add tracing message in case of error.
143
144 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
145 only using (more or less) valid strike header data for
146 FT_Face's `available_sizes' array.
147 (sfnt_done_face): Updated.
148
149 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
150 `sbit_strike_map'.
151 (tt_face_load_strike_metrics): Improve tracing.
152
153 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
154
Werner Lemberg9749f262016-09-08 07:51:03 +02001552016-09-08 Werner Lemberg <wl@gnu.org>
156
Werner Lembergd2d59682016-09-08 09:04:32 +0200157 * Version 2.7 released.
158 =======================
159
160
161 Tag sources with `VER-2-7'.
162
163 * docs/VERSION.TXT: Add entry for version 2.7.
164
165 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
166 builds/windows/vc2005/index.html,
167 builds/windows/vc2008/freetype.vcproj,
168 builds/windows/vc2008/index.html,
169 builds/windows/vc2010/freetype.vcxproj,
170 builds/windows/vc2010/index.html,
171 builds/windows/visualc/freetype.dsp,
172 builds/windows/visualc/freetype.vcproj,
173 builds/windows/visualc/index.html,
174 builds/windows/visualce/freetype.dsp,
175 builds/windows/visualce/freetype.vcproj,
176 builds/windows/visualce/index.html,
177 builds/wince/vc2005-ce/freetype.vcproj,
178 builds/wince/vc2005-ce/index.html,
179 builds/wince/vc2008-ce/freetype.vcproj,
180 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
181
182 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
183 (FREETYPE_PATCH): Set to 0.
184
185 * builds/unix/configure.raw (version_info): Set to 18:6:12.
186 * CMakeLists.txt (VERSION_MINOR): Set to 7.
187 (VERSION_PATCH): Set to 0.
188
189 * docs/CHANGES: Updated.
190
1912016-09-08 Werner Lemberg <wl@gnu.org>
192
Werner Lembergb1e7b682016-09-08 08:56:34 +0200193 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
194
195 This fixes the `multi' build.
196
1972016-09-08 Werner Lemberg <wl@gnu.org>
198
Werner Lemberg9749f262016-09-08 07:51:03 +0200199 [autofit] Another improvement to Armenian support.
200
201 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
202
203 * src/autofit/afscript.h: Use better suited characters to derive
204 default stem widths.
205
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04002062016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
207
208 * src/smooth/ftgrays.c (gray_hline): Microptimize.
209
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04002102016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
211
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -0400212 [smooth] Operate in absolute bitmap coordinates.
213
214 Simpler bitmap addressing improves performance by 1.5%.
215
216 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
217 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
218 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
219
2202016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
221
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -0400222 [smooth] Improve contour start (take 2).
223
224 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
225 instead of...
226 (gray_start_cell): ... this function, which is removed.
227 (gray_convert_glyph): Make initial y-coordinate invalid.
228
Werner Lembergebbb8b22016-09-06 16:28:57 +02002292016-09-06 Werner Lemberg <wl@gnu.org>
230
231 [type1] MM fonts support exactly zero named instances (#48748).
232
233 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
234
Jonathan Kewa15133e2016-09-06 06:33:36 +02002352016-09-06 Jonathan Kew <jfkthame@gmail.com>
236
237 [cff] Fix uninitialized memory.
238
239 Problem reported as
240
241 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
242
243 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
244 array to handle a `get' opcode without a previous `put'.
245
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04002462016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
247
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -0400248 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
249
2502016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
251
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -0400252 [smooth] Improve contour start.
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
Werner Lembergc9adf1a2016-09-05 07:32:37 +02002582016-09-05 Werner Lemberg <wl@gnu.org>
259
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +0200260 [cff] Fix memory initialization.
261
262 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
263 variants of FreeType's memory allocation macros don't do zeroing.
264
2652016-09-05 Werner Lemberg <wl@gnu.org>
266
Werner Lemberg1c8bb632016-09-05 08:13:42 +0200267 [ftrandom] Minor improvements.
268
269 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
270 500.
271
272 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
273 directories to ...
274 (INCLUDES): ... this new variable.
275 (LDFLAGS): New variable.
276 (ftrandom.o, ftrandom): Updated.
277
2782016-09-05 Werner Lemberg <wl@gnu.org>
279
Werner Lembergc9adf1a2016-09-05 07:32:37 +0200280 [autofit] Improve Armenian support.
281
282 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
283
284 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
285 selection of characters.
286
287 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
288
Werner Lemberg4b28f6a2016-09-04 19:05:45 +02002892016-09-04 Werner Lemberg <wl@gnu.org>
290
291 [ftrandom] Improve Makefile.
292
293 It now supports both a normal build (`./configure && make') and a
294 development build (`make devel').
295
296 * src/tools/ftrandom/Makefile (VPATH): Set it so that
297 `libfreetype.a' gets searched in both `objs' (for the development
298 build) and `objs/.libs' (for a normal build which uses libtool).
299 (LIBS): Add missing libraries.
300 (ftrandom.o): New rule.
301 (ftrandom): Use automatic variables.
302
Werner Lembergf0fa7a62016-09-03 06:33:36 +02003032016-09-03 Werner Lemberg <wl@gnu.org>
304
Werner Lemberg4e659d72016-09-03 18:14:00 +0200305 [truetype] More fixes for handling of GX deltas.
306
307 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
308
309 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
310 sanity test for glyph variation array header size.
311 Always set stream position before reading packed x and y deltas.
312 Fix thinko w.r.t. `localpoints' array.
313
3142016-09-03 Werner Lemberg <wl@gnu.org>
315
Werner Lembergca8e98d2016-09-03 13:06:16 +0200316 [ftrandom] Various fixes.
317
318 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
319 default.
320 (error_fraction): Make it of type `double' to work as advertized –
321 this was completely broken.
322 Update all related code.
323 (error_count, fcnt): Make it unsigned to fix compiler warnings.
324 Update all related code.
325 (fontlist): Change `len' member to `long' to fix compiler warnings.
326 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
327 unused variables.
328 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
329 (ExecuteTest): Ditto.
330 Call `FT_Done_FreeType'.
331 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
332 int'.
333 (usage): Improve output.
334 (main): Fix compiler warnings.
335
336 * src/tools/ftrandom/README: Updated.
337
3382016-09-03 Werner Lemberg <wl@gnu.org>
339
Werner Lembergb98dfda2016-09-03 08:20:31 +0200340 [base] Avoid negative bitmap stroke dimensions (#48985).
341
342 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
343 actually successful. For example, this can fail for value
344 -32768 if the type is `signed short'. If there are problems,
345 disable the stroke.
346
3472016-09-03 Werner Lemberg <wl@gnu.org>
348
Werner Lembergf0fa7a62016-09-03 06:33:36 +0200349 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
350
351 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
352
Werner Lembergd8ef7262016-09-02 23:27:50 +02003532016-09-02 Werner Lemberg <wl@gnu.org>
354
Werner Lembergd87bb912016-09-02 23:56:27 +0200355 [unix] Enable 64bit support in file system access (#48962).
356
357 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
358
3592016-09-02 Werner Lemberg <wl@gnu.org>
360
Werner Lembergd8ef7262016-09-02 23:27:50 +0200361 [sfnt] Avoid left shift of negative value (#48980).
362
363 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
364 constant.
365
3662016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +0200367
368 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
369
Werner Lemberg7a13dc02016-09-02 08:24:01 +02003702016-09-02 Werner Lemberg <wl@gnu.org>
371
372 Some preparations for the next release.
373
374 * include/freetype/config/ftoption.h
375 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
376
377 * docs/CHANGES: Updated.
378
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04003792016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
380
381 [smooth] Simplify span rendering more.
382
383 It turns out that there is significant cost associated with `FT_Span'
384 creation and calls to `gray_render_span' because it happerns so
385 frequently. This removes these steps from our internal use but leaves
386 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
387 is about 5%.
388
389 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
390 migrated to...
391 (gray_hline): ... here.
392
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04003932016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
394
395 [smooth] Streamline pixmap drawing a bit more.
396
397 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -0400398 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -0400399
400 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
401
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -04004022016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
403
404 [smooth] Streamline pixmap drawing.
405
406 This gives 2% speed improvement in rendering simple glyphs.
407
408 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
409 pointer to its bottom-left and pitch to be used in...
410 (gray_TWorker): ... here.
411 (gray_render_span): Move pixmap flow check from here...
412 (gray_raster_render): .. to here.
413
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -04004142016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
415
416 [smooth] Reduce stack of band boundaries.
417
418 * src/smooth/ftgrays.c (gray_TBand): Removed.
419 (gray_convert_glyph): Updated to stack band boundaries concisely.
420
Werner Lembergf3e71ba2016-08-26 10:31:30 +02004212016-08-26 Werner Lemberg <wl@gnu.org>
422
Werner Lemberg57aa8392016-08-26 11:59:50 +0200423 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
424
4252016-08-26 Werner Lemberg <wl@gnu.org>
426
Werner Lemberg3c61a2f2016-08-26 11:50:09 +0200427 [cid] Fix commit from 2016-05-16.
428
429 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
430
4312016-08-26 Werner Lemberg <wl@gnu.org>
432
Werner Lembergf3e71ba2016-08-26 10:31:30 +0200433 [sfnt] Cache offset and size to bitmap data table.
434
435 This commit avoids `EBDT' and friends being looked up again and
436 again while loading a single embedded bitmap.
437
438 * include/freetype/internal/tttypes.h (TT_FaceRec)
439 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
440 `ebdt_size'.
441
442 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
443 (tt_face_load_sbit): ... this function; also store the table size
444 and offset.
445
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04004462016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
447
448 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
449
Werner Lemberga660e3d2016-08-26 00:23:27 +02004502016-08-26 Werner Lemberg <wl@gnu.org>
451
452 [type1] Fix heap buffer overflow.
453
454 Reported as
455
456 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
457
458 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
459 contain glyph names.
460
Werner Lemberg327f2e32016-08-25 12:46:08 +02004612016-08-25 Werner Lemberg <wl@gnu.org>
462
Werner Lemberg69ce9732016-08-25 19:49:52 +0200463 [sfnt] Fix previous commit (#48901).
464
465 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
466
4672016-08-25 Werner Lemberg <wl@gnu.org>
468
Werner Lembergacd18792016-08-25 17:12:46 +0200469 [sfnt] Speed up handling of invalid format 4 cmaps.
470
471 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
472 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
473
4742016-08-25 Werner Lemberg <wl@gnu.org>
475
Werner Lemberg327f2e32016-08-25 12:46:08 +0200476 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
477
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04004782016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
479
480 [smooth] Simplify span rendering.
481
482 This removes unnecessary complexity of span merging and buffering.
483 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -0400484 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -0400485
486 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
487 (gray_TWorker): Remove span buffer and related fields.
488 (gray_sweep, gray_hline): Updated.
489
490 * include/freetype/ftimage.h: Remove documentation note about
491 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
492
Werner Lembergcf4224a2016-08-16 06:44:23 +02004932016-08-16 Werner Lemberg <wl@gnu.org>
494
Werner Lemberga4c2a312016-08-22 19:32:34 +0200495 [truetype] Fix `MPS' instruction.
496
497 According to Greg Hitchcock, MPS in DWrite really returns the point
498 size.
499
500 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
501
502 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
503
504 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
505 member.
506
507 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
508 (Ins_MPS): Fix instruction.
509
5102016-08-16 Werner Lemberg <wl@gnu.org>
511
Werner Lemberg8521ad92016-08-16 13:44:38 +0200512 [lzw] Optimize last commit.
513
514 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
515 conditional clause.
516
5172016-08-16 Werner Lemberg <wl@gnu.org>
518
Werner Lemberg548f68d2016-08-16 09:46:40 +0200519 [lzw] Avoid invalid left shift.
520
Werner Lemberg6df68332016-08-16 09:50:07 +0200521 Reported as
522
523 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
524
Werner Lemberg548f68d2016-08-16 09:46:40 +0200525 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
526
5272016-08-16 Werner Lemberg <wl@gnu.org>
528
Werner Lemberg8d7b9192016-08-16 08:07:58 +0200529 [lzw] Avoid buffer overrun.
530
531 Reported as
532
533 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
534
535 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
536 underflow.
537
5382016-08-16 Werner Lemberg <wl@gnu.org>
539
Werner Lembergcf4224a2016-08-16 06:44:23 +0200540 [truetype] Fix compiler warning.
541
542 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
543
Werner Lemberg248f5622016-08-13 06:53:53 +02005442016-08-13 Werner Lemberg <wl@gnu.org>
545
546 [winfonts] Avoid zero bitmap width and height.
547
548 Reported as
549
550 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
551
552 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
553 (FNT_Load_Glyph): Check for zero pitch.
554
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02005552016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
556
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -0400557 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
558
5592016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
560
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -0400561 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
562
5632016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
564
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +0200565 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
566
Peter Klotz3b37bfc2016-08-10 22:38:08 -04005672016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
568
569 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
570
Werner Lemberg5224aae2016-08-10 19:47:29 +02005712016-08-10 Werner Lemberg <wl@gnu.org>
572
573 [sfnt] Use correct type for `italicAngle' field (#48732).
574
575 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
576
Werner Lemberg53059f92016-08-07 09:01:33 +02005772016-08-06 Jon Spencer <jon@jonspencer.ca>
578
579 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
580
581 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
582 advance value from the font table and then scales it by the
583 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
584 set that value for bitmap fonts and the advance gets scaled to zero.
585
586 Taken from
587
588 https://github.com/behdad/harfbuzz/issues/252
589
590 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
591 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
592
5932016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +0200594
595 [truetype] Fix GX variation handling of composites.
596
597 * src/truetype/ttgload.c (load_truetype_glyph)
598 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
599
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -04006002016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
601
602 [smooth] Minor refactoring.
603
604 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
605 Updated.
606
Werner Lembergfae4ec02016-07-29 06:43:32 +02006072016-07-29 Werner Lemberg <wl@gnu.org>
608
609 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
610
611 Since 2016-05-16 we detect infinite recursion directly.
612
613 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
614 `maxComponentDepth'.
615 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
616 `maxComponentDepth' is not valid. Instead, simply adjust its value
617 and emit a tracing message.
618
Werner Lembergd9c7f5a2016-07-26 20:20:27 +02006192016-07-26 Werner Lemberg <wl@gnu.org>
620
621 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
622
623 No functional change.
624
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +02006252016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
626
627 [truetype] Record the end of IDEFs.
628
629 To match the logic in FDEF. The value of the end is only used for
630 bound-checking in `Ins_JMPR', so it may not have been obvious that
631 it was not recorded. Tested (as part of Font Validator 2.0) all the
632 fonts on Fedora and did not see any change.
633
634 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
635
Werner Lemberge69f34b2016-07-19 07:06:19 +02006362016-07-19 Werner Lemberg <wl@gnu.org>
637
Werner Lemberg7f631052016-07-19 21:35:58 +0200638 [truetype] Sanitizer fix, second try.
639
640 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
641 tests and use only one slot more.
642
6432016-07-19 Werner Lemberg <wl@gnu.org>
644
Werner Lemberge69f34b2016-07-19 07:06:19 +0200645 [truetype] Sanitizer fix.
646
647 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
648 to fix nested loops.
649
Werner Lemberga3b70d72016-07-18 06:23:36 +02006502016-07-18 Werner Lemberg <wl@gnu.org>
651
652 [truetype] Make GETDATA work only for GX fonts.
653
654 * src/truetype/ttinterp.c (opcode_name): Updated.
655 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
656 (TT_RunIns): Updated.
657
6582016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +0200659
Werner Lemberg8c930132016-07-17 22:40:31 +0200660 [truetype] Add support for Apple's
661
662 GETDATA[], opcode 0x92
663
664 bytecode instruction. It always returns 17, and we have absolutely
665 no idea what it is good for...
666
667 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
668 (Ins_GETDATA): New function.
669 (TT_RunIns): Add it.
670
6712016-07-16 Werner Lemberg <wl@gnu.org>
672
Werner Lemberge0843602016-07-16 18:46:28 +0200673 [truetype] Add bytecode support for GX variation fonts.
674
675 This commit implements undocumented (but confirmed) stuff from
676 Apple's old bytecode engine.
677
678 GETVARIATION[], opcode 0x91
679 This opcode pushes normalized variation coordinates for all axes
680 onto the stack (in 2.14 format). Coordinate of first axis gets
681 pushed first.
682
683 GETINFO[], selector bit 3
684 If GX variation support is enabled, bit 10 of the result is set
685 to 1.
686
687 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
688 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
689 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
690 bit 3, checking support for variation glyph hinting.
691 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
692 to implement opcode 0x91.
693 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
694
6952016-07-16 Werner Lemberg <wl@gnu.org>
696
Werner Lemberg32a32062016-07-16 16:39:26 +0200697 [truetype] Fix GETINFO bytecode instruction.
698
699 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
700 stretching information.
701
Behdad Esfahbod69446dd2016-07-16 10:52:38 +02007022016-07-16 Behdad Esfahbod <behdad@behdad.org>
703
704 [truetype] Make all glyphs in `Zycon' GX font work.
705
706 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
707 tests.
708
Werner Lemberga3b61252016-07-16 08:16:16 +02007092016-07-16 Werner Lemberg <wl@gnu.org>
710
711 [truetype] Fix GX delta tracing.
712
713 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
714 relative point movements.
715
7162016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +0200717
718 [truetype] More fixes for GX.
719
720 This finally fixes the rendering of the cyclist and the lizard in
721 the `Zycon' font.
722
723 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
724 index is always cumulative.
725
726 (tt_handle_deltas): Rename to...
727 (tt_interpolate_deltas): ... This.
728 Add new parameter for output point array.
729 Update caller.
730
731 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
732 the intermediate results of `tt_interpolate_deltas' that are to be
733 added to `outline->points'.
734
Werner Lembergaafff572016-07-16 06:41:39 +02007352016-07-15 Werner Lemberg <wl@gnu.org>
736
737 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
738
739 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
740
741 Reported by Alexei.
742
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +02007432016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
744
745 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
746
747 Problem reported by Hin-Tak Leung.
748
Werner Lemberg894c0222016-07-15 10:23:11 +02007492016-07-15 Werner Lemberg <wl@gnu.org>
750
Werner Lemberg1831e6f2016-07-15 10:35:32 +0200751 [autofit] Update and improve segment and edge tracing.
752
753 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
754 `delta' also.
755 Don't show first point of segment as a replacement for `pos'; this
756 is (a) misleading, since the difference to `pos' can be almost
757 arbitrarily large in corner cases, and (b) it is better to have all
758 segment data in font units instead of a single value given in output
759 space coordinates.
760 Improve layout.
761 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
762 values for convenience.
763 Improve layout.
764
7652016-07-15 Werner Lemberg <wl@gnu.org>
766
Werner Lemberg894c0222016-07-15 10:23:11 +0200767 [autofit] For edges, reject segments wider than 1px (#41334).
768
769 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
770
771 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
772 `delta'.
773 (af_latin_hints_compute_edges): Reject segments with a delta larger
774 than 0.5px.
775
Werner Lemberg631e2182016-07-14 06:25:05 +02007762016-07-14 Werner Lemberg <wl@gnu.org>
777
Werner Lembergff655432016-07-14 15:01:55 +0200778 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
779
7802016-07-14 Werner Lemberg <wl@gnu.org>
781
Werner Lembergee3f36f2016-07-14 10:25:20 +0200782 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
783
784 * src/sfnt/sfobjc.s (sfnt_init_face): Don't strip off higher 16bits.
785
7862016-07-14 Werner Lemberg <wl@gnu.org>
787
Werner Lemberg631e2182016-07-14 06:25:05 +0200788 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
789
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +02007902016-07-14 Behdad Esfahbod <behdad@behdad.org>
791
792 [truetype] Fix gxvar delta interpolation.
793
794 The coordinates of the base font should be used for interpolation
795 purposes, NOT the current points (i.e., the result of accumulation
796 of previous deltas).
797
798 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
799 `points_org' before looping over all tuples.
800
Werner Lembergf6aa0892013-05-10 07:58:47 +0200801
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000802----------------------------------------------------------------------------
803
Werner Lemberg8160b202016-09-08 08:42:10 +0200804Copyright 2016 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000805David Turner, Robert Wilhelm, and Werner Lemberg.
806
807This file is part of the FreeType project, and may only be used, modified,
808and distributed under the terms of the FreeType project license,
809LICENSE.TXT. By continuing to use, modify, or distribute this file you
810indicate that you have read the license and understand and accept it
811fully.
812
813
814Local Variables:
815version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +0000816coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +0000817End: