blob: 6c648549fd1ebfe8518e16410a181a9ad1ab8336 [file] [log] [blame]
Alexei Podtelezhnikova9d8e902017-08-08 21:42:37 -040012017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
2
Alexei Podtelezhnikov410f3792017-03-09 00:08:38 -05003 [smooth] Harmony LCD rendering.
4
5 This is a new technology for LCD-optimized rendering. It capitalizes
6 on the fact that each color channel grid is shifted by a third of a
7 pixel. Therefore it is logical to render 3 separate monochrome
8 bitmaps shifting the outline by 1/3 pixel, and then combine them.
9 Importantly, the resulting output does not require additional LCD
10 filtering.
11
12 * src/smooth/ftsmooth.c (ft_smooth_render_generic)
13 [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized
14 rendering.
15
16 * include/freetype/ftlcdfil.h, include/freetype/freetype.h,
17 include/freetype/config/ftoption.h, devel/ftoption.h: Updated
18 documentation.
19
202017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
21
Alexei Podtelezhnikov5710ef92017-08-08 22:00:35 -040022 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up.
23
242017-08-08 Alexei Podtelezhnikov <apodtele@gmail.com>
25
Alexei Podtelezhnikova9d8e902017-08-08 21:42:37 -040026 * src/sftnt/ttpost.c (format): Use otspec-compliant versions.
27
Werner Lemberg17196b72017-08-05 18:58:34 +0200282017-06-27 Werner Lemberg <wl@gnu.org>
29
30 [truetype] Integer overflow.
31
32 Reported as
33
34 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2868
35
36 * src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG.
37
Werner Lembergf43b3092017-08-05 18:22:17 +0200382017-08-05 Werner Lemberg <wl@gnu.org>
39
40 [base, truetype] New function `FT_Get_Var_Axis_Flags'.
41
42 The reserved `flags' field got a value in OpenType version 1.8.2;
43 unfortunately, the public `FT_Var_Axis' structure misses the
44 corresponding element. Since we can't add a new field, we add an
45 access function.
46
47 * src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function.
48
49 * include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro.
50 Updated.
51
52 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory
53 of `mmvar' to hold axis flags.
54 Fill the axis flags array.
55
56 * docs/CHANGES: Updated.
57
Nikolaus Waxweiler7f44c2d2017-08-03 06:15:30 +0200582017-08-03 Nikolaus Waxweiler <madigens@gmail.com>
59
Nikolaus Waxweiler24e256a2017-08-04 08:25:31 +020060 [truetype] Fix metrics of B/W hinting in v40 mode.
61
62 Phantom points are now saved outside v40 backwards compatibility
63 mode. This fixes the jumping glyphs when switching between v35 and
64 v40 monochrome mode.
65
66 * src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic.
67
682017-08-03 Nikolaus Waxweiler <madigens@gmail.com>
69
Nikolaus Waxweiler7f44c2d2017-08-03 06:15:30 +020070 [truetype] Do not set any ClearType flags in v40 monochrome mode.
71
72 This fixes weird behavior of instructions that resulted in rendering
73 differences between v35 and v40 in monochrome mode, e.g., in
74 `timesbi.ttf'.
75
76 * src/truetype/ttinterp.c (Ins_GETINFO)
77 [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check
78 `subpixel_hinting_lean'.
79
Werner Lemberg7e508242017-08-01 12:44:35 +0200802017-08-01 Werner Lemberg <wl@gnu.org>
81
82 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko.
83
Behdad Esfahbod55bbb982017-08-01 09:17:02 +0200842017-08-01 Behdad Esfahbod <behdad@behdad.org>
85
86 [truetype] Fix loading of named instances.
87
88 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position
89 while loading the `avar' table.
90
Werner Lembergce367772017-08-01 08:24:51 +0200912017-08-01 Werner Lemberg <wl@gnu.org>
92
93 [sfnt, truetype] Minor adjustments for OpenType 1.8.2.
94
95 * src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now
96 (tighter) limits.
97
98 * src/truetype/ttgload.c (load_truetype_glyph): The new OpenType
99 version explicitly allows all negative values for the number of
100 contours if we have a composite glyph (this is for better backwards
101 compatibility I guess), but it still recommends value -1.
102
Werner Lemberg933f4cb2017-07-26 23:32:32 +02001032017-07-26 Werner Lemberg <wl@gnu.org>
104
105 [cff] Integer overflow.
106
107 Reported as
108
109 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2738
110
111 * src/cff/cf2hints.c (cf2_glyphpath_computeOffset,
112 cf2_glyphpath_curveTo): Use ADD_INT32.
113
Werner Lembergfe0a7d92017-07-13 10:25:42 +02001142017-07-13 Werner Lemberg <wl@gnu.org>
115
116 [base] Fix memory leak.
117
118 Reported as
119
120 https://bugs.chromium.org/p/chromium/issues/detail?id=738362
121
122 * src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case
123 of error.
124
Werner Lemberg3d083fc2017-07-12 00:24:48 +02001252017-07-12 Werner Lemberg <wl@gnu.org>
126
Werner Lemberg134de092017-07-12 22:16:37 +0200127 [base] Integer overflow.
128
129 Reported as
130
131 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2573
132
133 * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
134 FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG.
135
1362017-07-12 Werner Lemberg <wl@gnu.org>
137
Werner Lemberg3d083fc2017-07-12 00:24:48 +0200138 * src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo.
139
140 Also improve tracing message.
141
142 Problem reported as
143
144 https://bugs.chromium.org/p/chromium/issues/detail?id=738919
145
Werner Lemberg9ea83c72017-07-07 17:09:43 +02001462017-07-07 Werner Lemberg <wl@gnu.org>
147
148 [cff] Integer overflow.
149
150 Reported as
151
152 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2517
153
154 * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32.
155
Werner Lemberg4261e492017-07-05 23:00:23 +02001562017-07-05 Werner Lemberg <wl@gnu.org>
157
Werner Lembergcf8d9b42017-07-05 23:07:01 +0200158 * src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning.
159
1602017-07-05 Werner Lemberg <wl@gnu.org>
161
Werner Lemberg4261e492017-07-05 23:00:23 +0200162 * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395).
163
Werner Lemberg1c854792017-07-04 08:08:54 +02001642017-07-04 Werner Lemberg <wl@gnu.org>
165
166 [truetype] Prevent address overflow (#51365).
167
168 * src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard.
169
Alexei Podtelezhnikovc56d8852017-07-03 22:49:07 -04001702017-07-03 Alexei Podtelezhnikov <apodtele@gmail.com>
171
172 * src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code.
173
Werner Lembergca799e92017-07-03 06:27:52 +02001742017-07-03 Werner Lemberg <wl@gnu.org>
175
176 [truetype] Integer overflow.
177
178 Reported as
179
180 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2455
181
182 * src/truetype/ttinterp.c (Ins_SCFS): Use SUB_LONG.
183
Alexei Podtelezhnikovabeb28f2017-07-01 16:48:32 -04001842017-07-01 Alexei Podtelezhnikov <apodtele@gmail.com>
185
186 * src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name.
187
Ben Wagner7819aeb2017-06-28 22:57:41 +02001882017-06-28 Ben Wagner <bungeman@google.com>
189
190 Avoid Microsoft compiler warnings (#51331).
191
192 While clang's sanitizer recommends a cast to unsigned for safe
193 negation (to handle -INT_MIN), both MSVC and Visualc emit warning
194 C4146 if an unsigned value gets negated.
195
196 * include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32),
197 src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a
198 subtraction.
199
Werner Lembergdde8f5a2017-06-27 06:16:04 +02002002017-06-27 Werner Lemberg <wl@gnu.org>
201
Werner Lemberg2e7bb5e2017-06-27 16:56:38 +0200202 * src/cff/cffparse.c (do_fixed): Fix typo.
203
204 Spotted by chris <chris@gcjd.org>.
205
2062017-06-27 Werner Lemberg <wl@gnu.org>
207
Werner Lembergdde8f5a2017-06-27 06:16:04 +0200208 [truetype] Integer overflows.
209
210 Reported as
211
212 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2384
213 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2391
214
215 * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use
216 NEG_LONG.
217
218 * src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG.
219
Werner Lembergb27cef22017-06-24 20:17:46 +02002202017-06-24 Werner Lemberg <wl@gnu.org>
221
222 [truetype] Integer overflows.
223
224 Reported as
225
226 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2364
227
228 * src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG.
229
Werner Lemberg298e2ea2017-06-22 11:52:43 +02002302017-06-22 Werner Lemberg <wl@gnu.org>
231
232 [cff, truetype] Integer overflows.
233
234 Reported as
235
236 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2323
237 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2328
238
239 * src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and
240 SUB_INT32.
241
242 * src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG.
243
Alexei Podtelezhnikov75cb0712017-06-21 22:52:37 -04002442017-06-21 Alexei Podtelezhnikov <apodtele@gmail.com>
245
246 [sfnt] Synthesize a Unicode charmap if one is missing.
247
248 * src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it.
249 * src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init,
250 tt_cmap_unicode_done, tt_cmap_unicode_char_index,
251 tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement
252 synthetic Unicode charmap class.
253 (tt_get_cmap_info): Make sure the callback is available.
254
255 * src/sfnt/sfobjs.c (sfnt_load_face)
256 [FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing,
257 synthesize one.
258
259 * include/freetype/config/ftoption.h: Document it.
260 * devel/ftoption.h: Ditto.
261
Tony Theodorec8829e42017-06-20 12:24:05 +02002622017-06-20 Tony Theodore <tonyt@logyst.com>
263
264 Fix pkg-config in freetype-config for cross-compiling (#51274).
265
266 * builds/unix/unix-def.in (PKG_CONFIG): New variable.
267 (freetype-config): Use it in sed expression.
268
269 * builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/.
270
2712017-06-20 Werner Lemberg <wl@gnu.org>
Werner Lemberg8c763fb2017-06-20 07:49:52 +0200272
273 [cff, truetype] Integer overflows.
274
275 Reported as
276
277 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2300
278 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2313
279
280 * src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32.
281
282 * src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS.
283
Alexei Podtelezhnikov7b727832017-06-17 23:28:14 -04002842017-06-17 Alexei Podtelezhnikov <apodtele@gmail.com>
285
286 [base, smooth] LCD filtering cleanups.
287
Alexei Podtelezhnikovc56d8852017-07-03 22:49:07 -0400288 * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
Alexei Podtelezhnikov7b727832017-06-17 23:28:14 -0400289 Clean up, start filtering from the bottom-left origin.
290
291 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.
292
Werner Lemberg4dc00cf2017-06-16 13:33:09 +02002932017-06-16 Werner Lemberg <wl@gnu.org>
294
295 [truetype] Integer overflows.
296
297 Reported as
298
299 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2270
Hin-Tak Leung39af82e2017-07-11 01:53:01 +0100300 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2276
Werner Lemberg4dc00cf2017-06-16 13:33:09 +0200301
302 * src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use
303 ADD_LONG and SUB_LONG.
304
Werner Lembergdbeb7bc2017-06-15 19:39:50 +02003052017-06-15 Werner Lemberg <wl@gnu.org>
306
307 [bdf, cff] Integer overflows.
308
309 Reported as
310
311 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2244
312 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2261
313
314 * src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with
315 direct code to avoid value negation.
316
317 * src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and
318 ADD_INT32.
319
Werner Lemberg5c402d92017-06-13 06:56:48 +02003202017-06-13 Werner Lemberg <wl@gnu.org>
321
Werner Lemberg79e37892017-06-14 07:51:04 +0200322 * src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding.
323
324 FreeType only sets a default active encoding for Unicode.
325
3262017-06-13 Werner Lemberg <wl@gnu.org>
327
Werner Lemberg5c402d92017-06-13 06:56:48 +0200328 [cff, truetype] Integer overflows.
329
330 Reported as
331
332 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2216
333 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2218
334
335 * src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32.
336
337 * src/truetype/ttinterp.c (Ins_IP): Use SUB_LONG.
338
Werner Lemberg3ed3a962017-06-11 13:50:37 +02003392017-06-11 Werner Lemberg <wl@gnu.org>
340
341 [cff] Integer overflows.
342
343 Reported as
344
345 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2200
346 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2210
347
348 * src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and
349 ADD_INT32.
350
351 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO>: Use
352 ADD_INT32.
353
Werner Lemberg2c4fba92017-06-10 11:03:41 +02003542017-06-10 Werner Lemberg <wl@gnu.org>
355
Werner Lemberg5f2a72c2017-06-10 11:29:24 +0200356 [truetype] Fix TT_Set_Var_Design.
357
358 Reported by Nikolaus Waxweiler <madigens@gmail.com>.
359
360 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the
361 case where we have less input coordinates than axes.
362
3632017-06-10 Werner Lemberg <wl@gnu.org>
364
Werner Lemberg2c4fba92017-06-10 11:03:41 +0200365 * src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo.
366
367 Bug introduced 2017-05-28.
368
Werner Lembergdcd8de22017-06-09 11:21:58 +02003692017-06-09 Werner Lemberg <wl@gnu.org>
370
Werner Lemberg90388372017-06-09 20:42:46 +0200371 [cff, truetype] Integer overflows.
372
373 Reported as
374
375 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144
376 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151
377 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153
378 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173
379 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186
380
381 * src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32.
382
383 * src/truetype/ttinterp.c (Round_None, Round_To_Grid,
384 Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid,
385 Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG,
386 SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG,
387 FT_PAD_ROUND_LONG
388 (Ins_SxVTL, Ins_MIRP): Use SUB_LONG.
389 (_iup_worker_shift): Use SUB_LONG and ADD_LONG.
390
3912017-06-09 Werner Lemberg <wl@gnu.org>
392
Werner Lemberg96d26922017-06-09 20:34:28 +0200393 Provide more macros for flooring, ceiling, and rounding.
394
395 These versions don't produce run-time errors due to integer
396 overflow.
397
398 * include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
399 (FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
400 FT_PIX_CEIL_LONG): New macros.
401 (FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
402 FT_PIX_CEIL_INT32): New macros.
403
4042017-06-09 Werner Lemberg <wl@gnu.org>
405
Werner Lembergfaf34d22017-06-09 20:31:24 +0200406 Remove unused macros.
407
408 * include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT,
409 NEG_INT): Deleted.
410
4112017-06-09 Werner Lemberg <wl@gnu.org>
412
Werner Lembergdcd8de22017-06-09 11:21:58 +0200413 */*: Remove `OVERFLOW_' prefix.
414
415 This increases readability.
416
Werner Lemberg7bffeac2017-06-07 17:08:01 +02004172017-06-07 Werner Lemberg <wl@gnu.org>
418
419 [cff, truetype] Integer overflows.
420
421 Reported as
422
423 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2133
424 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2137
425
426 * src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32.
427
428 * src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use
429 OVERFLOW_SUB_LONG.
430
Werner Lemberg24848a32017-06-06 12:05:04 +02004312017-06-06 Werner Lemberg <wl@gnu.org>
432
Werner Lemberg7bffeac2017-06-07 17:08:01 +0200433 [cff] Integer overflows.
Werner Lemberg24848a32017-06-06 12:05:04 +0200434
435 Reported as
436
437 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2109
438 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2110
439 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2122
440
441 * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
442
443 * src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else
444 branches.
445
Werner Lemberg86670422017-06-05 06:20:53 +02004462017-06-05 Werner Lemberg <wl@gnu.org>
447
448 [cff] Integer overflow.
449
450 Reported as
451
452 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2089
453
454 * src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32.
455
Werner Lemberg9fa8a292017-06-04 20:43:08 +02004562017-06-04 Werner Lemberg <wl@gnu.org>
457
458 [cff, truetype] Integer overflows.
459
460 Reported as
461
462 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2075
463 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2088
464
465 * src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32.
466
467 * src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG,
468 OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG.
469
Werner Lembergc5a22542017-06-03 06:13:10 +02004702017-06-03 Werner Lemberg <wl@gnu.org>
471
Werner Lembergaddb2dd2017-06-03 21:05:42 +0200472 [base, cff, truetype] Integer overflows.
473
474 Reported as
475
476 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060
477 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062
478 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063
479 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068
480
481 * src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
482 OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
483
484 * src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c
485 (cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32.
486
487 * src/truetype/ttgload.c (compute_glyph_metrics): User
488 OVERFLOW_SUB_LONG.
489
490 * src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig,
491 Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X,
492 Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use
493 OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
494
4952017-06-03 Werner Lemberg <wl@gnu.org>
496
Werner Lembergc9a9cf52017-06-03 09:41:50 +0200497 * builds/unix/freetype-config.in: Fix pkg-config test (#51162).
498
499 Patch directly taken from bug report.
500
5012017-06-03 Werner Lemberg <wl@gnu.org>
502
Werner Lemberg2c2e6402017-06-03 07:38:11 +0200503 [bdf] Synchronize sanity checks with pcf driver.
504
505 Reported as
506
507 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2054
508 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2058
509
510 * src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent.
511 Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
512 RESOLUTION_Y properties.
513
5142017-06-03 Werner Lemberg <wl@gnu.org>
515
Werner Lemberg1ea34322017-06-03 06:52:13 +0200516 [cff, truetype] Integer overflows.
517
518 Reported as
519
520 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2047
521 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2057
522
523 * src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32.
524
525 * src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG.
526 (Ins_SUB): Use OVERFLOW_SUB_LONG.
527 (Ins_NEG): Use NEG_LONG.
528
5292017-06-03 Werner Lemberg <wl@gnu.org>
530
Werner Lembergc5a22542017-06-03 06:13:10 +0200531 ftcalc.h: Avoid left-shift of negative numbers.
532
533 Reported as
534
535 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2055
536
537 * include/freetype/internal/ftcalc.h (INT_TO_F26DOT6,
538 INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication.
539
Werner Lemberg3802ca82017-06-02 08:44:20 +02005402017-06-02 Werner Lemberg <wl@gnu.org>
541
Werner Lemberg0716c6a2017-06-02 19:24:03 +0200542 [cff] Even more integer overflows.
543
544 Reported as
545
546 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2046
547
548 * src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use
549 OVERFLOW_ADD_INT32.
550
5512017-06-02 Werner Lemberg <wl@gnu.org>
552
Werner Lemberg7a4276f2017-06-02 09:21:37 +0200553 [cff] More integer overflows.
554
555 Reported as
556
557 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2032
558
559 * src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
560
5612017-06-02 Werner Lemberg <wl@gnu.org>
562
Werner Lemberg03b0cc22017-06-02 09:16:52 +0200563 [bdf] Don't left-shift negative numbers.
564
565 Reported as
566
567 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2031
568
569 * src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication.
570
5712017-06-02 Werner Lemberg <wl@gnu.org>
572
Werner Lemberg47a03e92017-06-02 09:06:36 +0200573 [bdf] Fix integer scanning routines.
574
575 Reported as
576
577 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2029
578
579 * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos):
580 Stop scanning if result would overflow.
581
5822017-06-02 Werner Lemberg <wl@gnu.org>
583
Werner Lemberg3802ca82017-06-02 08:44:20 +0200584 [cff] Fix integer overflows.
585
586 Reported as
587
588 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2027
589 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2028
590
591 * src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c
592 (cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32.
593
Werner Lemberg8d435c42017-06-01 07:09:44 +02005942017-06-01 Werner Lemberg <wl@gnu.org>
595
Werner Lembergcd02d352017-06-01 17:05:39 +0200596 [smooth] Some 32bit integer overflow run-time errors.
597
598 * src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG,
599 OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros.
600 [!STANDALONE]: Include FT_INTERNAL_CALC_H.
601 (gray_render_cubic): Use those macros where appropriate.
602
6032017-06-01 Werner Lemberg <wl@gnu.org>
604
Werner Lemberg0ad32622017-06-01 17:00:37 +0200605 * src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'.
606
6072017-06-01 Werner Lemberg <wl@gnu.org>
608
Werner Lemberg4a1f1a62017-06-01 13:15:54 +0200609 [psaux] 32bit integer overflow tun-time errors (#46149).
610
611 * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use
612 OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate.
613
6142017-06-01 Werner Lemberg <wl@gnu.org>
615
Werner Lemberg8d435c42017-06-01 07:09:44 +0200616 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again.
617
618 Problem reported by Marek Kašík <mkasik@redhat.com>.
619
620 The problematic font that exceeds the old limit is Padauk-Bold,
621 version 3.002, containing bytecode generated by a buggy version of
622 ttfautohint.
623
Werner Lemberge66d7302017-05-31 16:16:50 +02006242017-05-31 Werner Lemberg <wl@gnu.org>
625
626 [cff] 32bit integer overflow run-time errors 2/2 (#46149).
627
628 This commit handles the new engine.
629
630 * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32,
631 OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG,
632 NEG_INT32): New macros.
633
634 * src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32.
635
636 * src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init,
637 cf2_hintmap_map, cf2_glyphpath_hintPoint,
638 cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset,
639 cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use
640 OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and
641 NEG_INT32 where appropriate.
642
643 * src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend,
644 cf2_interpT2CharString): Ditto.
645 Also add some other code where needed to avoid overflow.
646
Werner Lemberg0e7b9f82017-05-30 22:22:19 +02006472017-05-30 Werner Lemberg <wl@gnu.org>
648
Werner Lemberg9b710cd2017-05-30 22:35:41 +0200649 [cff] 32bit integer overflow run-time errors 1/2 (#46149).
650
651 This commit handles the old engine.
652
653 * src/cff/cffgload.c: Include FT_INTERNAL_CALC_H.
654 (cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and
655 OVERFLOW_SUB_LONG where needed.
656
657 * src/cff/cffparse.c: Include FT_INTERNAL_CALC_H.
658 (power_ten_limits): New static array.
659 (do_fixed): Use it to prevent multiplication overflow.
660 (cff_parser_run): Use OVERFLOW_ADD_LONG.
661
6622017-05-30 Werner Lemberg <wl@gnu.org>
663
Werner Lemberg0e7b9f82017-05-30 22:22:19 +0200664 [psaux] Correctly handle sequences of multiple number signs.
665
666 * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero
667 if we encounter more than a single sign.
668
Werner Lembergfbe2fe42017-05-29 13:29:28 +02006692017-05-29 Werner Lemberg <wl@gnu.org>
670
Werner Lembergf0146322017-05-29 21:04:27 +0200671 [pcf] 32bit integer overflow run-time errors (#46149).
672
673 * src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for
674 `fontAscent' and `fontDescent'.
675 (pcf_load_font): Add sanity checks for global height.
676 Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
677 RESOLUTION_X, and RESOLUTION_Y properties.
678
6792017-05-29 Werner Lemberg <wl@gnu.org>
680
Werner Lembergfbe2fe42017-05-29 13:29:28 +0200681 Handle some integer overflow run-time errors (#46149, #48979).
682
683 This commit (mainly for 32bit CPUs) is the first of a series of
684 similar commits to handle known integer overflows. Basically, all
685 of them are harmless, since they affect rendering of glyphs only,
686 not posing security threats. It is expected that fuzzying will show
687 up more overflows, to be fixed in due course.
688
689 The idea is to mark places where overflows can occur, using macros
690 that simply cast to unsigned integers, because overflow arithmetic
691 is well defined in this case. Doing so suppresses run-time errors
692 of sanitizers without adding computational overhead.
693
694 * include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT,
695 OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG,
696 OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros.
697
698 * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply,
699 FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled,
700 ft_corner_orientation): Use new macros.
701
702 * src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros.
703
Werner Lemberg93572192017-05-28 07:20:09 +02007042017-05-28 Werner Lemberg <wl@gnu.org>
705
Werner Lemberg9d04fa72017-05-28 07:57:24 +0200706 * include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove.
707
708 This macro is not used.
709
7102017-05-28 Werner Lemberg <wl@gnu.org>
711
Werner Lemberg2e4188d2017-05-28 07:46:22 +0200712 [cff] s/cf2_floatToFixed/cf2_doubleToFixed/.
713
714 The new name better describes what the macro actually does;
715 additionally, we don't need a trailing `f' for literals (there was
716 only a single such instance in the code, but this caused a clang
717 warning because the macro itself uses `double' literals).
718
719 * src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h,
720 src/cff/cf2font.c, src/cff/cf2hints.c: Updated.
721
7222017-05-28 Werner Lemberg <wl@gnu.org>
723
Werner Lemberg93572192017-05-28 07:20:09 +0200724 Fix negation of INT_MIN and LONG_MIN (#46149).
725
726 * src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned
727 value, to be used as the result.
728 (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix,
729 FT_Vector_NormLen): Updated.
730
Werner Lemberga9331c02017-05-27 15:50:25 +02007312017-05-27 Werner Lemberg <wl@gnu.org>
732
733 [truetype] Fix handling of design coordinates (#51127).
734
735 * src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design
736 coordinates if we have to create the `blends->coord' array.
737 (TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance
738 coordinates if no instance is selected yet.
739
Werner Lemberg082f2fa2017-05-24 07:40:46 +02007402017-05-24 Werner Lemberg <wl@gnu.org>
741
742 [bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII).
743
744 Problem reported by Marek Kašík <mkasik@redhat.com>, cf.
745
746 https://bugzilla.redhat.com/show_bug.cgi?id=1451795
747
748 * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c
749 (PCF_Face_Init): Implement it.
750
Nikolaus Waxweilera0455462017-05-20 07:28:46 +02007512017-05-20 Nikolaus Waxweiler <madigens@gmail.com>
752
753 [truetype] Always use interpreter v35 for B/W rendering (#51051).
754
755 * src/truetype/ttgload.c (tt_loader_init)
756 [TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust
757 `subpixel_hinting_lean', `grayscale_cleartype', and
758 `vertical_lcd_lean' accordingly.
759
760 * src/truetype/ttinterp.c (Ins_GETINFO): Updated.
761 (TT_RunIns): Update `backward_compatibility' flag.
762
Alexei Podtelezhnikovab2599e2017-05-20 00:35:21 -04007632017-05-20 Alexei Podtelezhnikov <apodtele@gmail.com>
764
765 [smooth] Implement minimal dynamic padding for LCD filtering.
766
767 Extra bitmap padding for LCD filtering depends on the filter. The
768 default 5-tap filter needs 2 extra subpixels. The light 3-tap filter
769 needs only 1 extra subpixel. This space could be already available
770 due to rounding. In order to optimize the padding, we now expand
771 CBox for the given filter weights before rounding.
772
773 This change breakes current Skia (and Firefox).
774
775 * include/freetype/internal/ftobjs.h (FT_LibraryRec)
776 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field.
777
778 * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights,
779 FT_Library_SetLcdFilter): Remove `lcd_extra' initializations.
780
781 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic
782 LCD padding.
783
Werner Lemberg6e5445a2017-05-15 21:24:04 +02007842017-05-15 Werner Lemberg <wl@gnu.org>
785
Werner Lemberg5efda132017-05-15 21:26:01 +0200786 [sfnt] Return proper scaling values for SBIX bitmaps.
787
788 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
789
790 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Implement it.
791
7922017-05-15 Werner Lemberg <wl@gnu.org>
793
Werner Lemberg6e5445a2017-05-15 21:24:04 +0200794 [truetype] Fix error handling for embedded bitmaps.
795
796 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
797
798 * src/truetype/ttgload.c (TT_Load_Glyph)
799 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not
800 scalable.
801
Alexei Podtelezhnikova7f276a2017-05-15 00:25:37 -04008022017-05-15 Alexei Podtelezhnikov <apodtele@gmail.com>
803
804 [autofit] Make autohint warping NORMAL option.
805
806 This moves warping option from LIGHT to NORMAL mode. This makes LIGHT
807 truly void of hinting in x-direction, with left side bearing never
808 changed and right side bearing only altered by advance rounding.
809 Therefore, LIGHT is now ready to return fractional advance. As a
810 NORMAL option, warping substitutes normal hinting.
811
812 * src/autofit/afcjk.c (af_cjk_hints_apply): Updated.
813 * src/autofit/aflatin.c (af_latin_hints_apply): Updated.
814 * src/autofit/aflatin2.c (af_latin2_hints_apply): Updated.
815
816 * src/autofit/afloader.c (af_loader_load_glyph): Handle warping
817 phantom points as normal.
818
Werner Lemberge99b26a2017-05-14 21:57:27 +02008192017-05-14 Werner Lemberg <wl@gnu.org>
820
821 Remove remnants of raster pool.
822
823 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove
824 `raster_pool' and `raster_pool_size' fields.
825
826 * src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c
827 (ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated.
828
Werner Lemberga12a3442017-05-13 06:29:04 +02008292017-05-13 Werner Lemberg <wl@gnu.org>
830
831 * Version 2.8 released.
832 =======================
833
834
835 Tag sources with `VER-2-8'.
836
837 * docs/VERSION.TXT: Add entry for version 2.8.
838 * docs/CHANGES: Updated.
839
840 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
841 builds/windows/vc2005/index.html,
842 builds/windows/vc2008/freetype.vcproj,
843 builds/windows/vc2008/index.html,
844 builds/windows/vc2010/freetype.vcxproj,
845 builds/windows/vc2010/index.html,
846 builds/windows/visualc/freetype.dsp,
847 builds/windows/visualc/freetype.vcproj,
848 builds/windows/visualc/index.html,
849 builds/windows/visualce/freetype.dsp,
850 builds/windows/visualce/freetype.vcproj,
851 builds/windows/visualce/index.html,
852 builds/wince/vc2005-ce/freetype.vcproj,
853 builds/wince/vc2005-ce/index.html,
854 builds/wince/vc2008-ce/freetype.vcproj,
855 builds/wince/vc2008-ce/index.html: s/2.7.1/2.8/, s/271/28/.
856
857 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 8.
858 (FREETYPE_PATCH): Set to 0.
859
860 * builds/unix/configure.raw (version_info): Set to 20:0:14.
861 * CMakeLists.txt (VERSION_MINOR): Set to 8.
862 (VERSION_PATCH): Set to 0.
863
Hin-Tak Leung603121c2017-05-12 07:52:36 +02008642017-05-12 Hin-Tak Leung <htl10@users.sourceforge.net>
865
866 Fix `FT_UINT_TO_POINTER' macro for Windows.
867
868 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
869 include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER) [_WIN64]:
870 Fix definition.
871
Sascha Brawerac0eed82017-05-11 00:06:37 +02008722017-05-11 Sascha Brawer <sascha@google.com>
873 Werner Lemberg <wl@gnu.org
874
875 [autofit] Add support for Chakma script.
876
877 * src/autofit/afblue.dat: Add blue zone data for Chakma.
878 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
879
880 * src/autofit/afscript.h: Add Chakma standard character.
881
882 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data.
883
Werner Lemberg53f38242017-05-10 09:13:20 +02008842017-05-10 Sascha Brawer <sascha@google.com>
885 Werner Lemberg <wl@gnu.org
886
Sascha Brawerd19859f2017-05-10 23:38:05 +0200887 [autofit] Add support for Kayah Li script.
888
889 * src/autofit/afblue.dat: Add blue zone data for Kayah Li.
890 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
891
892 * src/autofit/afscript.h: Add Kayah Li standard character.
893
894 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Kayah Li data.
895
8962017-05-10 Sascha Brawer <sascha@google.com>
897 Werner Lemberg <wl@gnu.org
898
Sascha Brawer87218c92017-05-10 12:39:33 +0200899 [autofit] Add support for Bamum script.
900
901 * src/autofit/afblue.dat: Add blue zone data for Bamum.
902 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
903
904 * src/autofit/afscript.h: Add Bamum standard character.
905
906 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Bamum data.
907
9082017-05-10 Sascha Brawer <sascha@google.com>
909 Werner Lemberg <wl@gnu.org
910
Sascha Brawer4aa1aec2017-05-10 09:36:13 +0200911 [autofit] Add support for Saurashtra script.
912
913 * src/autofit/afblue.dat: Add blue zone data for Saurashtra.
914 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
915
916 * src/autofit/afscript.h: Add Saurashtra standard character.
917
918 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Saurashtra
919 data.
920
9212017-05-10 Sascha Brawer <sascha@google.com>
922 Werner Lemberg <wl@gnu.org
923
Werner Lemberg53f38242017-05-10 09:13:20 +0200924 [autofit] Add support for Buhid script.
925
926 * src/autofit/afblue.dat: Add blue zone data for Buhid.
927 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
928
929 * src/autofit/afscript.h: Add Buhid standard character.
930
931 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Buhid data.
932
Sascha Brawerdb0fe732017-05-08 10:00:16 +02009332017-05-08 Sascha Brawer <sascha@google.com>
934 Werner Lemberg <wl@gnu.org
935
Sascha Brawer44c61172017-05-08 20:31:52 +0200936 [autofit] Add support for Shavian script.
937
938 * src/autofit/afblue.dat: Add blue zone data for Shavian.
939 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
940
941 * src/autofit/afscript.h: Add Shavian standard character.
942
943 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Shavian data.
944
9452017-05-08 Sascha Brawer <sascha@google.com>
946 Werner Lemberg <wl@gnu.org
947
Sascha Brawera9e5e6e2017-05-08 19:57:16 +0200948 [autofit] Add support for Vai script.
949
950 * src/autofit/afblue.dat: Add blue zone data for Vai.
951 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
952
953 * src/autofit/afscript.h: Add Vai standard character.
954
955 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Vai data.
956
9572017-05-08 Sascha Brawer <sascha@google.com>
958 Werner Lemberg <wl@gnu.org
959
Sascha Braweracc6b6d2017-05-08 15:08:46 +0200960 [autofit] Add support for Osmanya script.
961
962 * src/autofit/afblue.dat: Add blue zone data for Osmanya.
963 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
964
965 * src/autofit/afscript.h: Add Osmanya standard character.
966
967 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Osmanya data.
968
9692017-05-08 Sascha Brawer <sascha@google.com>
970 Werner Lemberg <wl@gnu.org
971
Sascha Brawerf27ebb12017-05-08 10:22:26 +0200972 [autofit] Add support for Coptic script.
973
974 * src/autofit/afblue.dat: Add blue zone data for Coptic.
975 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
976
977 * src/autofit/afscript.h: Add Coptic standard character.
978
979 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Coptic data.
980
9812017-05-08 Sascha Brawer <sascha@google.com>
982 Werner Lemberg <wl@gnu.org
983
Sascha Brawerdb0fe732017-05-08 10:00:16 +0200984 [autofit] Add support for Carian script.
985
986 * src/autofit/afblue.dat: Add blue zone data for Carian.
987 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
988
989 * src/autofit/afscript.h: Add Carian standard character.
990
991 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Carian data.
992
Werner Lembergec4cb042017-05-07 13:06:36 +02009932017-05-07 Werner Lemberg <wl@gnu.org>
994
995 [truetype] Add tricky font `DFGirl-W6-WIN-BF' (from Dynalab).
996
997 Reported by Roy Tam <roytam@gmail.com>.
998
999 * src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
1000
Roy Tam0ed9fef2017-05-07 08:32:58 +020010012017-05-07 Roy Tam <roytam@gmail.com>
1002 Werner Lemberg <wl@gnu.org>
1003
1004 [truetype] More tricky fonts (mainly from Dynalab).
1005
1006 * src/truetype/ttobjs.c (tt_check_trickyness_family,
1007 tt_check_trickyness_sfnt_ids): Add them.
1008
Werner Lembergf784a562017-05-07 00:45:05 +020010092017-05-07 Werner Lemberg <wl@gnu.org>
1010
1011 [truetype] Add tricky font `DLCHayMedium' (from Dynalab).
1012
1013 Reported by Roy Tam <roytam@gmail.com>.
1014
1015 * src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
1016
Werner Lemberg8cd31eb2017-05-03 23:54:29 +020010172017-05-03 Werner Lemberg <wl@gnu.org>
1018
1019 */*: s/backwards compatibility/backward compatibility/.
1020
Sascha Brawer14ae17a2017-05-03 18:35:13 +020010212017-05-03 Sascha Brawer <sascha@google.com>
Sascha Brawerc9e70632017-05-03 23:21:13 +02001022 Werner Lemberg <wl@gnu.org
1023
1024 [autofit] Add support for Unified Canadian Syllabics script.
1025
1026 * src/autofit/afblue.dat: Add blue zone data for Unified Canadian
1027 Syllabics.
1028 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1029
1030 * src/autofit/afscript.h: Add Unified Canadian Syllabics standard
1031 character.
1032
1033 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Unified
1034 Canadian Syllabics data.
1035
10362017-05-03 Sascha Brawer <sascha@google.com>
Sascha Brawer0483fb32017-05-03 20:16:24 +02001037 Werner Lemberg <wl@gnu.org>
1038
1039 [autofit] Add blue-zone support for Sundanese script.
1040
1041 This essentially moves the Sundanese script from the `Indic' hinter
1042 to the `Latin' hinter.
1043
1044 * src/autofit/afblue.dat: Add blue zone data for Sundanese.
1045
1046 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1047
1048 * src/autofit/afscript.h: Add Sundanese standard character and move
1049 data out of AF_CONFIG_OPTION_INDIC block.
1050
1051 * src/autofit/afranges.c: Move Sundanese data out of
1052 AF_CONFIG_OPTION_INDIC block.
1053
1054 * src/autofit/afstyles.h: Update Sundanese data; in particular, use
1055 AF_WRITING_SYSTEM_LATIN.
1056
10572017-05-03 Sascha Brawer <sascha@google.com>
Sascha Brawer14ae17a2017-05-03 18:35:13 +02001058 Werner Lemberg <wl@gnu.org
1059
1060 [autofit] Add support for Avestan script.
1061
1062 * src/autofit/afblue.dat: Add blue zone data for Avestan.
1063 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1064
1065 * src/autofit/afscript.h: Add Avestan standard character.
1066
1067 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Avestan data.
1068
Behdad Esfahbod60bf2642017-05-02 14:38:54 +020010692017-05-02 Behdad Esfahbod <behdad@behdad.org>
1070
1071 [truetype] Make `IUP' gvar deltas do the same as Apple (#50832).
1072
1073 When points are not touched by gvar interpolation deltas, FreeType
1074 gave a slightly different result than Apple's CoreText.
1075
1076 The OpenType working group will update the specification to document
1077 the following behaviour: If the two points with deltas to the `left'
1078 and `right' of the untouched point have the same coordinate, then
1079 the inferred delta for the untouched point should be zero.
1080
1081 * src/truetype/ttgxvar.c (tt_delta_interpolate): Implement new
1082 behaviour.
1083
Werner Lembergba400542017-05-02 12:32:19 +020010842017-05-02 Werner Lemberg <wl@gnu.org>
1085
1086 [autofit] Remove `slight' auto-hint mode again.
1087
1088 A poll on freetype-devel favoured changes directly applied to
1089 `light'.
1090
1091 * include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT,
1092 FT_RENDER_MODE_SLIGHT): Removed.
1093
1094 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
1095 (af_latin_hints_init), src/autofit/aflatin2.c
1096 (af_latin2_hints_init): Revert change from 2017-04-22.
1097
1098 * src/autofit/afloader.c (af_loader_load_glyph) Remove references to
1099 FT_RENDER_MODE_SLIGHT.
1100 [AF_CONFIG_OPTION_TT_SIZE_METRICS]: Enable TrueType-like metrics
1101 unconditionally.
1102
1103 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Revert change from
1104 2017-04-22.
1105
1106 * src/base/ftobjs.c (FT_Load_Glyph): Revert change from 2017-04-22.
1107
1108 * src/pshinter/pshalgo.c (ps_hints_apply): Revert change from
1109 2017-04-22.
1110
1111 * src/smooth/ftsmooth.c (ft_smooth_render): Revert change from
1112 2017-04-22.
1113
1114 * docs/CHANGES: Updated.
1115
Werner Lemberg7abf0cb2017-04-30 17:25:11 +020011162017-04-30 Werner Lemberg <wl@gnu.org>
1117
1118 [autofit] Fix metrics computation.
1119
1120 Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de> and
1121 Nikolaus Waxweiler <madigens@gmail.com>.
1122
1123 * src/base/ftobjs.c (FT_Request_Size): Trigger recomputation of
1124 auto-hinter metrics. Without this change, multiple size changing
1125 calls for a single face fail.
1126
Werner Lemberg785833d2017-04-29 06:47:14 +020011272017-04-29 Werner Lemberg <wl@gnu.org>
1128
1129 * src/truetype/ttdriver.c (tt_size_request): Properly check `error'.
1130
1131 Reported by Earnestly <zibeon@googlemail.com> in
1132
1133 http://lists.nongnu.org/archive/html/freetype/2017-04/msg00031.html
1134
Werner Lemberg0a5315d2017-04-27 13:02:24 +020011352017-04-27 Werner Lemberg <wl@gnu.org>
1136
1137 Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option.
1138
1139 * include/freetype/config/ftoption.h
1140 (AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by
1141 default.
1142
1143 * src/autofit/afloader.c (af_loader_load_glyph): Use
1144 AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code.
1145
Werner Lembergab10ffc2017-04-26 13:41:40 +020011462017-04-26 Werner Lemberg <wl@gnu.org>
1147
1148 * include/freetype/freetype.h (FT_Render_Mode): Fix order.
1149
Werner Lemberg8cd31eb2017-05-03 23:54:29 +02001150 This retains backward compatibility.
Werner Lembergab10ffc2017-04-26 13:41:40 +02001151
1152 Noted by Alexei.
1153
Werner Lemberg5412d882017-04-22 12:48:50 +020011542017-04-22 Werner Lemberg <wl@gnu.org>
1155
Werner Lemberg5f18d862017-04-22 23:02:21 +02001156 [truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470).
1157
1158 * src/truetype/ttobs.h (TT_SizeRec): Add field `hinted_metrics' to
1159 hold hinted metrics.
1160 Make `metrics' a pointer so that `tt_glyph_load' can easily switch
1161 between metrics.
1162
1163 * src/truetype/ttdriver.c (tt_size_request): Updated.
1164 (tt_glyph_load): Use top-level metrics if FT_LOAD_NO_HINTING is
1165 used.
1166
1167 * src/truetype/ttgload.c (TT_Hint_Glyph, TT_Process_Simple_Glyph,
1168 TT_Process_Composite_Component, load_truetype_glyph,
1169 compute_glyph_metrics, TT_Load_Glyph): Updated.
1170
1171 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
1172
1173 * src/truetype/ttobjs.c (tt_size_reset): Updated.
1174
1175 * src/truetype/ttsubpix.c (sph_set_tweaks): Updated.
1176
11772017-04-22 Werner Lemberg <wl@gnu.org>
1178
Werner Lemberg5aa67162017-04-22 13:27:21 +02001179 Add new `slight' auto-hinting mode.
1180
1181 This mode uses fractional advance widths and doesn't scale glyphs
1182 horizontally, only applying vertical scaling and hinting.
1183
1184 At the same time, the behaviour of the `light' auto-hinter gets
Werner Lemberg8cd31eb2017-05-03 23:54:29 +02001185 restored for backward compatibility: Both vertical and horizontal
Werner Lemberg5aa67162017-04-22 13:27:21 +02001186 scaling is again based on rounded metrics values (this was changed
1187 in a commit from 2017-03-30 as a side effect). To be more precise,
1188 the behaviour is restored for TrueType fonts only; for other font
1189 formats like Type 1, this is a new feature of the `light' hinting
1190 mode.
1191
1192 * include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT): New macro.
1193 (FT_RENDER_MODE_SLIGHT): New render mode.
1194
1195 * include/freetype/internal/ftobjs.h (FT_Size_InternalRec): Add
1196 `autohint_mode' and `autohint_metrics' fields.
1197
1198 * src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
1199 (af_latin_hints_init), src/autofit/aflatin2 (af_latin2_hints_init):
1200 Updated.
1201
1202 * src/autofit/afloader.c (af_loader_embolden_glyph_in_slot): Use
1203 `autohint_metrics'.
1204 (af_loader_load_glyph): s/internal/slot_internal/.
1205 Initialize `autohint_metrics' and `autohint_mode' depending on
1206 current auto-hint mode.
1207 Use `autohint_metrics'.
1208 Updated.
1209
1210 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Updated.
1211
1212 * src/base/ftobjs.c (FT_Load_Glyph): Updated.
1213 (FT_New_Size): Allocate `internal' object.
1214
1215 * src/pshinter/pshalgo.c (ps_hints_apply): Updated.
1216
1217 * src/smooth/ftsmooth.c (ft_smooth_render): Updated.
1218
12192017-04-22 Werner Lemberg <wl@gnu.org>
1220
Werner Lemberg5412d882017-04-22 12:48:50 +02001221 Introduce `FT_Size_InternalRec' structure.
1222
1223 We are going to extend this later on.
1224
1225 * include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New
1226 structure with a single field `module_data'.
1227
1228 * src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of
1229 `FT_Size' structure.
1230
1231 * src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use
1232 `size->internal->module_data' instead of `size->internal'.
1233
1234 * src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'.
1235 (cff_size_init, cff_size_select, cff_size_request): Use
1236 `size->internal->module_data' instead of `size->internal'.
1237
1238 * src/cif/cidobjs.c (cid_size_done, cid_size_init,
1239 cid_size_request): Use `size->internal->module_data' instead of
1240 `size->internal'.
1241
1242 * src/psaux/psobjs.c (t1_builder_ini): Use
1243 `size->internal->module_data' instead of `size->internal'.
1244
1245 * src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request):
1246 Use `size->internal->module_data' instead of `size->internal'.
1247
Alexei Podtelezhnikoveb5e0fb2017-04-21 22:53:39 -040012482017-04-21 Alexei Podtelezhnikov <apodtele@gmail.com>
1249
1250 * src/smooth/ftsmooth.h: Remove unused guards and declaration.
1251
Hin-Tak Leung5efba4c2017-04-16 07:23:24 +020012522017-04-16 Hin-Tak Leung <htl10@users.sourceforge.net>
1253
1254 Fix tracing messages.
1255
1256 * src/base/ftobjs.c (FT_Face_GetCharVariantIndex,
1257 FT_Face_GetCharVariantIsDefault, FT_Face_GetVariantsOfChar): Print
1258 correct function name.
1259
Sascha Brawerd79fc792017-04-08 07:06:24 +020012602017-04-08 Sascha Brawer <sascha@google.com>
1261 Werner Lemberg <wl@gnu.org
1262
Werner Lemberg90ccab32017-04-08 17:58:57 +02001263 [autofit] Add support for Old Turkic script.
1264
1265 * src/autofit/afblue.dat: Add blue zone data for Old Turkic.
1266 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1267
1268 * src/autofit/afscript.h: Add Old Turkic standard characters.
1269
1270 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Old Turkic data.
1271
12722017-04-08 Sascha Brawer <sascha@google.com>
1273 Werner Lemberg <wl@gnu.org
1274
Sascha Brawerdf2a7cd2017-04-08 16:11:44 +02001275 [autofit] Add support for Gothic script.
1276
1277 * src/autofit/afblue.dat: Add blue zone data for Gothic.
1278 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1279
1280 * src/autofit/afscript.h: Add Gothic standard characters.
1281
1282 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Gothic data.
1283
12842017-04-08 Sascha Brawer <sascha@google.com>
1285 Werner Lemberg <wl@gnu.org
1286
Sascha Brawer5bf4b1a2017-04-08 11:38:52 +02001287 [autofit] Add support for Cypriot script.
1288
1289 * src/autofit/afblue.dat: Add blue zone data for Cypriot.
1290 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1291
1292 * src/autofit/afscript.h: Add Cypriot standard characters.
1293
1294 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Cypriot data.
1295
12962017-04-08 Sascha Brawer <sascha@google.com>
1297 Werner Lemberg <wl@gnu.org
1298
Sascha Brawerd79fc792017-04-08 07:06:24 +02001299 [autofit] Add support for Deseret script.
1300
1301 * src/autofit/afblue.dat: Add blue zone data for Deseret.
1302 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1303
1304 * src/autofit/afscript.h: Add Deseret standard characters.
1305
1306 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Deseret data.
1307
Werner Lemberg04e00b82017-04-07 17:13:38 +020013082017-04-07 Werner Lemberg <wl@gnu.org>
1309
Werner Lemberg32efd8c2017-04-07 17:22:59 +02001310 [autofit] Fix invalid character range description (#50745).
1311
1312 Also reported as
1313
1314 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1034
1315
1316 * src/autofit/afranges.c (af_glag_nonbase_uniranges): Fix typo in
1317 recent commit.
1318
13192017-04-07 Werner Lemberg <wl@gnu.org>
1320
Werner Lemberg04e00b82017-04-07 17:13:38 +02001321 [ftfuzzer] Fix clang warnings.
1322
1323 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Add
1324 casts.
1325
Sascha Brawer8210ee42017-04-06 05:39:51 +020013262017-04-06 Sascha Brawer <sascha@google.com>
Sascha Brawer134246b2017-04-06 07:06:32 +02001327 Werner Lemberg <wl@gnu.org
1328
Sascha Brawer2c256e62017-04-06 17:05:47 +02001329 [autofit] Add support for Lisu script.
1330
1331 * src/autofit/afblue.dat: Add blue zone data for Lisu.
1332 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1333
1334 * src/autofit/afscript.h: Add Lisu standard characters.
1335
1336 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Lisu data.
1337
13382017-04-06 Sascha Brawer <sascha@google.com>
1339 Werner Lemberg <wl@gnu.org
1340
Sascha Brawer2b911472017-04-06 16:49:39 +02001341 [autofit] Add support for Osage script.
1342
1343 * src/autofit/afblue.dat: Add blue zone data for Osage.
1344 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1345
1346 * src/autofit/afscript.h: Add Osage standard characters.
1347
1348 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Osage data.
1349
13502017-04-06 Sascha Brawer <sascha@google.com>
1351 Werner Lemberg <wl@gnu.org
1352
Sascha Brawer628e2852017-04-06 12:47:27 +02001353 [autofit] Add support for Glagolitic script.
1354
1355 * src/autofit/afblue.dat: Add blue zone data for Glagolitic.
1356 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1357
1358 * src/autofit/afscript.h: Add Glagolitic standard characters.
1359
1360 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Glagolitic data.
1361
13622017-04-06 Sascha Brawer <sascha@google.com>
1363 Werner Lemberg <wl@gnu.org
1364
Sascha Brawer6967eb92017-04-06 11:35:07 +02001365 [autofit] Add support for Tai Viet script.
1366
1367 * src/autofit/afblue.dat: Add blue zone data for Tai Viet.
1368 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1369
1370 * src/autofit/afscript.h: Add Tai Viet standard characters.
1371
1372 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Tai Viet data.
1373
13742017-04-06 Sascha Brawer <sascha@google.com>
1375 Werner Lemberg <wl@gnu.org
1376
Sascha Brawer837f1122017-04-06 08:44:08 +02001377 [autofit] Add support for Tifinagh script.
1378
1379 * src/autofit/afblue.dat: Add blue zone data for Tifinagh.
1380 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1381
1382 * src/autofit/afscript.h: Add Tifinagh standard characters.
1383
1384 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Tifinagh data.
1385
13862017-04-06 Sascha Brawer <sascha@google.com>
1387 Werner Lemberg <wl@gnu.org
1388
Sascha Brawer134246b2017-04-06 07:06:32 +02001389 [autofit] Add support for N'Ko script.
1390
1391 * src/autofit/afblue.dat: Add blue zone data for N'Ko.
1392 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1393
1394 * src/autofit/afscript.h: Add N'Ko standard characters.
1395
1396 * src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data.
1397
13982017-04-06 Sascha Brawer <sascha@google.com>
Sascha Brawer8210ee42017-04-06 05:39:51 +02001399
Sascha Brawerba9cee42017-04-06 05:50:44 +02001400 [autofit] Add support for Adlam script.
1401
1402 * src/autofit/afblue.dat: Add blue zone data for Adlam.
1403 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1404
1405 * src/autofit/afscript.h: Add Adlam standard characters.
1406
1407 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Adlam data.
1408
14092017-04-06 Sascha Brawer <sascha@google.com>
1410
Sascha Brawer8210ee42017-04-06 05:39:51 +02001411 [autofit] Add support for Ol Chiki script.
1412
1413 * src/autofit/afblue.dat: Add blue zone data for Ol Chiki.
1414 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1415
1416 * src/autofit/afscript.h: Add Ol Chiki standard character.
1417
1418 * src/autofit/afranges.c, src/autofit/afstyles.h: Add Ol Chiki data.
1419
Werner Lemberg093c1822017-04-03 11:37:33 +020014202017-04-03 Werner Lemberg <wl@gnu.org>
1421
1422 [truetype] Avoid reexecution of `fpgm' and `prep' in case of error.
1423
1424 Reported as
1425
1426 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=981
1427
1428 * include/freetype/fterrdef.h (FT_Err_DEF_In_Glyf_Bytecode): New
1429 error code.
1430
1431 * src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Prohibit execution
1432 of these two opcodes in `glyf' bytecode.
1433 (TT_RunIns): Don't enforce reexecution of `fpgm' and `prep' bytecode
1434 in case of error since function tables can no longer be modified
1435 (due to the changes in `Ins_FDEF' and `Ins_IDEF'). This change can
1436 enormously speed up handling of broken fonts.
1437
Alexei Podtelezhnikove7b01302017-04-02 22:01:47 -040014382017-04-02 Alexei Podtelezhnikov <apodtele@gmail.com>
1439
1440 [autofit] Disable metrics adjustment for `FT_LOAD_TARGET_LCD'.
1441
1442 * src/autofit/aflatin.c (af_latin_hints_init): Updated.
1443 * src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
1444
Werner Lembergbb6c0372017-04-01 09:49:11 +020014452017-04-01 Werner Lemberg <wl@gnu.org>
1446
1447 * src/truetype/ttgload.c: Include FT_CONFIG_CONFIG_H.
1448
1449 Otherwise FT_UINT_TO_POINTER might not be defined.
1450
1451 Problem reported by Alexei.
1452
Alexei Podtelezhnikov54b58092017-03-31 22:41:53 -040014532017-03-31 Alexei Podtelezhnikov <apodtele@gmail.com>
1454
1455 [autofit] Disable stem adjustment for `FT_LOAD_TARGET_LCD'.
1456
1457 * include/freetype/freetype.h (FT_LOAD_TARGET_LCD): Document it.
1458 * src/autofit/afcjk.c (af_cjk_hints_init): Updated.
1459 * src/autofit/aflatin.c (af_latin_hints_init): Ditto.
1460 * src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
1461
Werner Lemberg5a3490e2017-03-31 09:35:58 +020014622017-03-31 Werner Lemberg <wl@gnu.org>
1463
1464 * src/cff/cffload.c (cff_font_load): Improve fix from 2017-01-04.
1465
1466 Allow CFFs containing a single font to have an empty font name.
1467
1468 Problem reported by 張俊芝 <418092625@qq.com> in
1469
1470 http://lists.nongnu.org/archive/html/freetype-devel/2017-03/msg00074.html
1471
Werner Lembergbcc74f42017-03-30 13:14:43 +020014722017-03-30 Werner Lemberg <wl@gnu.org>
1473
Werner Lembergc8c67632017-03-30 21:07:17 +02001474 * src/cff/cffparse.h (CFF2_DEFAULT_STACK): Set to 513 also.
1475
1476 Requested by Dave Arnold.
1477
14782017-03-30 Werner Lemberg <wl@gnu.org>
1479
Werner Lembergda38be82017-03-30 13:24:03 +02001480 [truetype] Fix HVAR and VVAR handling (#50678).
1481
1482 * src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle
1483 glyph indices larger than `mapCount' as described in the
1484 specification.
1485
14862017-03-30 Werner Lemberg <wl@gnu.org>
1487
Werner Lembergbcc74f42017-03-30 13:14:43 +02001488 [truetype] Allow linear scaling for unhinted rendering (#50470).
1489
1490 * src/truetype/ttdriver.c (tt_size_request): Revert change from
1491 2011-07-16; the intended metrics fix seems now to be implemented in
1492 a different way, making the patch unnecessary. Note that this
1493 change was usually patched out by all major GNU/Linux distributions
1494 due to heavy side effects.
1495
1496 * src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph):
1497 Refer to the metrics of the `TT_Size' object.
1498
Werner Lemberg1ede3672017-03-30 00:26:31 +020014992017-03-29 Werner Lemberg <wl@gnu.org>
1500
1501 [truetype] Fix thinko related to PS name of default named instance.
1502
1503 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `strid' and `psid' are
1504 name ID values, not indices into the array of name entries.
1505
Werner Lemberg208e7122017-03-27 20:56:23 +020015062017-03-27 Werner Lemberg <wl@gnu.org>
1507
1508 [cid, truetype] Don't use `index' as a variable name.
1509
1510 At least on FreeBSD there is a global declaration of `index' in file
1511 `/usr/include/strings.h'.
1512
1513 * src/cff/cf2intrp.c, src/truetype/ttgload.c: s/index/idx/ where
1514 appropriate.
1515
Wojciech Mamrak565f5a72017-03-27 09:19:14 +020015162017-03-27 Wojciech Mamrak <wmamrak@gmail.com>
1517
1518 [sfnt] Minor improvement for handling kern tables.
1519
1520 * src/sfnt/ttkern.c (tt_face_load_kern): Don't check for
1521 cross-stream kerning tables since we reject format 2 tables later
1522 on anyways.
1523 Modify code for limit test...
1524 (tt_face_get_kerning): ... to avoid a limit test here.
1525
Werner Lembergc22a9aa2017-03-27 07:57:24 +020015262017-03-27 Werner Lemberg <wl@gnu.org>
1527
1528 [pcf] Fix compiler warnings.
1529
1530 Reported by Alexander Hedges <ahedges@student.ethz.ch>.
1531
1532 * src/pcf/pcfdrivr.c (pcf_property_set, pcf_property_get): Tag
1533 `property_name' with `FT_UNUSED' where necessary.
1534
Werner Lemberg3774fc02017-03-26 08:32:09 +020015352017-03-26 Werner Lemberg <wl@gnu.org>
1536
1537 * src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard.
1538
1539 Reported as
1540
1541 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941
1542
Werner Lemberg67ff7662017-03-23 12:41:30 +010015432017-03-23 Werner Lemberg <wl@gnu.org>
1544
Werner Lembergf958c482017-03-24 09:15:10 +01001545 [psaux] Better protect `flex' handling.
1546
1547 Reported as
1548
1549 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935
1550
1551 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
1552 <callothersubr>: Since there is not a single flex operator but a
1553 series of subroutine calls, malformed fonts can call arbitrary other
1554 operators after the start of a flex, possibly adding points. For
1555 this reason we have to check the available number of points before
1556 inserting a point.
1557
15582017-03-23 Werner Lemberg <wl@gnu.org>
1559
Werner Lemberg913f4362017-03-23 18:37:06 +01001560 [sfnt] Fix check for default named instance.
1561
1562 * src/sfnt/sfobjs.c (sfnt_init_face): A `fixed' number needs four
1563 bytes, not two...
1564
15652017-03-23 Werner Lemberg <wl@gnu.org>
1566
Werner Lemberg67ff7662017-03-23 12:41:30 +01001567 Make MM fonts work (again).
1568
1569 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
1570 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Ignore
1571 return value of `ft_face_get_mvar_service'; instead, check whether a
1572 service is actually returned.
1573
Werner Lembergdd64a622017-03-20 05:34:02 +010015742017-03-20 Werner Lemberg <wl@gnu.org>
1575
Werner Lemberg683e3ad2017-03-21 19:49:11 +01001576 [truetype] Some variable renamings.
1577
1578 Too much local variables holding different structures were called
1579 `metrics'.
1580
1581 * src/truetype/ttdriver.c (tt_size_select): s/metrics/size_metrics/.
1582
Alexei Podtelezhnikov71d289d2017-04-19 23:50:29 -04001583 * src/truetype/ttgload.c (tt_get_metrics_incr_overrides,
Werner Lemberg683e3ad2017-03-21 19:49:11 +01001584 compute_glyph_metrics): s/metrics/incr_metrics/.
1585 (load_sbit_image): s/metrics/sbit_metrics/.
1586
1587 * src/truetype/ttobjs.c (tt_size_run_fpgm): s/metrics/size_metrics/.
1588 (tt_size_init_bytecode): s/metrics/tt_metrics/.
1589 (tt_size_reset): s/metrics/size_metrics/.
1590
15912017-03-20 Werner Lemberg <wl@gnu.org>
1592
Werner Lemberg6342da92017-03-20 05:36:41 +01001593 [sfnt] Don't add instances to non-variation fonts.
1594
1595 * src/sfnt/sfobjs.c (sfnt_init_face): Fix it.
1596
15972017-03-20 Werner Lemberg <wl@gnu.org>
1598
Werner Lembergdd64a622017-03-20 05:34:02 +01001599 * src/cff/cffgload.c (cff_builder_init): Add safety guard (#50578).
1600
Werner Lembergab840e62017-03-18 08:50:42 +010016012017-03-18 Werner Lemberg <wl@gnu.org>
1602
Werner Lemberg7aeee3c2017-03-18 17:30:42 +01001603 Introduce FT_UINT_TO_POINTER macro (#50560).
1604
1605 We have to make a separate case for Windows 64's LLP64 data model.
1606
1607 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
1608 include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER): New macro.
1609
1610 * src/truetype/ttgload.c (load_truetype_glyph): Use it.
1611
16122017-03-18 Werner Lemberg <wl@gnu.org>
1613
Werner Lemberg3e792542017-03-18 10:06:15 +01001614 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#50573).
1615
1616 The problematic font that exceeds the old limit is Lato-Regular,
1617 version 2.007, containing bytecode generated by a buggy version of
1618 ttfautohint.
1619
16202017-03-18 Werner Lemberg <wl@gnu.org>
1621
Werner Lemberg13fa85a2017-03-18 09:42:58 +01001622 [truetype] Another limitation for bytecode loop count maximum.
1623
1624 Reported as
1625
1626 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=900
1627
1628 * src/truetype/ttinterp.c (TT_RunIns): Limit `loopcall_counter_max'
1629 by number of glyphs also.
1630
16312017-03-18 Werner Lemberg <wl@gnu.org>
1632
Werner Lembergab840e62017-03-18 08:50:42 +01001633 [ftfuzzer] Minor improvement.
1634
1635 * src/tools/ftfuzzer/ftfuzzer.cc: Don't set intermediate axis if
1636 bitmap strikes are active.
1637
16382017-03-18 Werner Lemberg <wl@gnu.org>
Werner Lembergbffb7fe2017-03-17 07:52:30 +01001639
Werner Lemberg99311752017-03-18 07:06:49 +01001640 Improve `make multi'.
1641
1642 * src/autofit/aflatin2.c: Guard file with FT_OPTION_AUTOFIT2.
1643
1644 * src/base/ftmac.c: Guard more parts of the file with FT_MACINTOSH.
1645
1646 * src/psaux/afmparse.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
1647
1648 * src/sfnt/pngshim.c: Guard file with
1649 TT_CONFIG_OPTION_EMBEDDED_BITMAPS also.
1650
1651 * src/sfnt/ttbdf.c: Avoid empty source file.
1652 * src/sfnt/ttpost.c: Guard file with
1653 TT_CONFIG_OPTION_POSTSCRIPT_NAMES.
1654 * src/sfnt/ttsbit.c: Guard file with
1655 TT_CONFIG_OPTION_EMBEDDED_BITMAPS.
1656
1657 * src/truetype/ttgxvar.c, src/truetype/ttinterp.c: Avoid empty
1658 source file.
1659
1660 * src/truetype/ttsubpix.c: Guard file with
1661 TT_USE_BYTECODE_INTERPRETER also.
1662
1663 * src/type1/t1afm.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
1664
1665 * src/autofit/autofit.c, src/base/ftbase.c, src/cache/ftcache.c,
1666 src/cff/cff.c, src/cid/type1cid.c, src/gxvalid/gxvalid.c,
1667 src/pcf/pcf.c, src/pfr/pfr.c, src/psaux/psaux.c,
1668 src/pshinter/pshinter.c, src/psnames/psnames.c, src/raster/raster.c,
1669 src/sfnt/sfnt.c, src/smooth/smooth.c, src/truetype/truetype.c,
1670 src/type1/type1.c, src/type42/type42.c: Remove conditionals; sort
1671 entries.
1672
16732017-03-17 Werner Lemberg <wl@gnu.org>
1674
Werner Lembergd5bfa052017-03-17 21:47:54 +01001675 Fixes for conditional compilation.
1676
1677 * src/autofit/afcjk.c, src/autofit/afindic.c: Include `afcjk.h'
1678 earlier.
1679
1680 * src/sfnt/sfobjs.c (sfnt_init_face): Put `memory' variable into
1681 TT_CONFIG_OPTION_GX_VAR_SUPPORT block.
1682 (sfnt_done_face): Protect some code with
1683 TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1684
1685 * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Remove compiler
1686 warning.
1687
1688 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Put `tmp' variable
1689 into TT_USE_BYTECODE_INTERPRETER block.
1690
1691 (tt_loader_init): Put `error' variable into
1692 TT_USE_BYTECODE_INTERPRETER block.
1693
16942017-03-17 Werner Lemberg <wl@gnu.org>
1695
Werner Lemberge5595782017-03-17 21:34:08 +01001696 Fix preprocessor warning.
1697
1698 * devel/ftoption.h, include/freetype/config/ftoption.h: Test whether
1699 TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined before checking its
1700 value.
1701
17022017-03-17 Werner Lemberg <wl@gnu.org>
1703
Werner Lembergbffb7fe2017-03-17 07:52:30 +01001704 `make multi' fixes; compiler warnings.
1705
1706 * src/base/ftsnames.c: Include FT_INTERNAL_DEBUG_H.
1707
1708 * src/cff/cffobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
1709 FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
1710
1711 * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
1712 FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
1713 (get_win_string, get_apple_string): Initialize `result'.
1714
Dave Arnold0bf95b52017-03-17 07:22:55 +010017152017-03-17 Dave Arnold <darnold@adobe.com>
1716
Dave Arnoldfdbef532017-03-17 07:28:11 +01001717 [cff] Fix potential bugs in default NDV for CFF2.
1718
1719 * src/cff/cffload.c (cff_blend_build_vector): Explicitly build blend
1720 vector when `lenNDV' is zero; don't rely on zero-init.
1721 Save `lenNDV' as part of cache key even when `lenNDV' is zero.
1722
17232017-03-17 Dave Arnold <darnold@adobe.com>
1724
Dave Arnold0bf95b52017-03-17 07:22:55 +01001725 [cff] Fix CFF2 stack allocation.
1726
1727 * src/cff/cffparse.c (cff_parser_init) add 1 for operator.
1728
Werner Lembergd9ff6f22017-03-16 20:20:51 +010017292017-03-16 Werner Lemberg <wl@gnu.org>
1730
1731 * src/truetype/ttgxvar.c (tt_done_blend): Free `vvar_table'.
1732
1733 Reported as
1734
1735 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=883
1736
Werner Lembergf87269c2017-03-15 08:03:16 +010017372017-03-15 Werner Lemberg <wl@gnu.org>
1738
Werner Lemberg981c23b2017-03-15 11:35:26 +01001739 Remove clang compiler warnings (#50548).
1740
1741 * include/freetype/internal/tttypes.h (TT_FaceRec): Make
1742 `var_postscript_prefix_len' unsigned.
1743
1744 * src/autofit/afwarp.c (af_warper_compute_line_best): Remove
1745 redundant assignment.
1746
1747 * src/cff/cffload.c (cff_subfont_load): Add casts.
1748
1749 * src/cff/cffparse.c (cff_parse_blend): Remove redundant assignment.
1750
1751 * src/sfnt/sfdriver.c (fmix32, murmur_hash_3_128): Add `static'
1752 keyword.
1753 Add casts.
1754 (fixed2float): Add cast.
1755 (sfnt_get_var_ps_name): Make `p' always initialized.
1756 Add casts.
1757
1758 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Add casts.
1759
17602017-03-15 Werner Lemberg <wl@gnu.org>
1761
Werner Lemberg3f920482017-03-15 09:18:22 +01001762 [ftfuzzer] Limit number of tested faces and instances.
1763
1764 This is inspired by the discussion in and analysis of
1765
1766 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=859
1767
1768 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Use only
1769 up to 20 face indices.
1770 Use only up to 20 instance indices.
1771
17722017-03-15 Werner Lemberg <wl@gnu.org>
1773
Werner Lembergf87269c2017-03-15 08:03:16 +01001774 * src/tools/ftfuzzer/ftfuzzer.cc: Improve readability; formatting.
1775
Werner Lemberg4a32dce2017-03-14 19:32:12 +010017762017-03-14 Werner Lemberg <wl@gnu.org>
1777
Werner Lemberg34010f72017-03-14 21:50:22 +01001778 [sfnt] Implement PS names for font instances [3/3].
1779
1780 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1781
1782 * include/freetype/internal/tttypes.h (TT_FaceRec): New fields
1783 `var_postscript_prefix' and `var_postscript_prefix_len'.
1784
1785 * src/sfnt/sfdriver.c: Include FT_TRUETYPE_IDS_H.
1786 (sfnt_is_alphanumeric): New wrapperfunction for `ft_isalnum'.
1787 (get_win_string, get_apple_string): Remove `const' from return
1788 value.
1789 (MAX_VALUE_DESCRIPTOR_LEN, MAX_PS_NAME_LEN): New macros.
1790 (hexdigits): New array.
1791 (sfnt_get_var_ps_name): New function, implementing Adobe TechNote
1792 5902 to construct a PS name for a variation font instance.
1793 (sfnt_get_ps_name): Call `sfnt_get_var_ps_name' for font instances.
1794
1795 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
1796
1797 * src/truetype/ttgxvar.c (tt_set_mm_blend): Reset
1798 `face->postscript_name' to trigger recalculation for new instance
1799 parameters.
1800
18012017-03-14 Werner Lemberg <wl@gnu.org>
1802
Werner Lemberg4fd9cc72017-03-14 19:40:50 +01001803 [sfnt] Implement PS names for font instances [2/3].
1804
1805 * src/sfnt/sfdriver.c (fix2float) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
1806 New function to find the shortest representation of a 16.16
1807 fractional number.
1808
18092017-03-14 Werner Lemberg <wl@gnu.org>
1810
Werner Lemberg4a32dce2017-03-14 19:32:12 +01001811 [sfnt] Implement PS names for font instances [1/3].
1812
1813 Add 128bit MurmurHash 3 function.
1814
1815 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1816
1817 * src/sfnt/sfdriver.c (ROTL32): New macro.
1818 (fmix32, murmur_hash_3_128): New functions.
1819
Werner Lemberg447a0b62017-03-13 07:42:34 +010018202017-03-13 Werner Lemberg <wl@gnu.org>
1821
1822 [truetype] Ignore invalid MVAR tags.
1823
1824 Reported as
1825
1826 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838
1827
1828 * src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit
1829 warning for invalid tags.
1830 (tt_apply_mvar): Ignore invalid tags.
1831
Werner Lemberg4a629222017-03-12 10:19:53 +010018322017-03-12 Werner Lemberg <wl@gnu.org>
1833
Werner Lemberg5eb0fd52017-03-12 20:46:56 +01001834 [truetype] Store and use design coordinates also.
1835
1836 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
1837 Add `normalizedcoords' argument.
1838
1839 * src/truetype/ttgxvar.h (GX_BlendRec): Add `coords' field to store
1840 the design coordinates of the current instance.
1841 Updated.
1842
1843 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Move functionality to...
1844 (tt_set_mm_blend): ... New function.
1845 Convert data in `normalizedcoords' array to `coords' array on
1846 demand.
1847 (TT_Set_Var_Design): Store argument data in `coords' array.
1848 (TT_Get_Var_Design): Get data from `coords' array.
1849 (tt_get_var_blend): Updated.
1850 (tt_done_blend): Updated.
1851
1852 * src/cff/cffload.c, src/cff/cffload.h (cff_get_var_blend): Updated.
1853
1854 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
1855
1856 * src/cff/cffobjs.c (cff_face_init): Updated.
1857
18582017-03-12 Werner Lemberg <wl@gnu.org>
1859
Werner Lemberg4a629222017-03-12 10:19:53 +01001860 src/truetype/ttgxvar.[ch]: s/avar_checked/avar_loaded/.
1861
Werner Lemberg7bbb91f2017-03-08 15:09:41 +010018622017-03-08 Werner Lemberg <wl@gnu.org>
1863
1864 [sfnt] Another fix for buggy variation fonts.
1865
1866 Reported as
1867
1868 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=759
1869
1870 * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
1871 instances to zero for `CFF' fonts table, ensure that there is no
1872 `CFF2' present also (which gets priority).
1873
Werner Lemberg77930972017-03-07 17:27:58 +010018742017-03-07 Werner Lemberg <wl@gnu.org>
1875
1876 [sfnt] Improve handling for buggy variation fonts.
1877
1878 Reported as
1879
1880 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=738
1881
1882 * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
Werner Lemberg34010f72017-03-14 21:50:22 +01001883 instances to zero for `CFF' fonts table, ensure that there is no
1884 `glyf' table present also (which gets priority).
Werner Lemberg77930972017-03-07 17:27:58 +01001885
Werner Lemberg27fee7f2017-03-06 20:45:44 +010018862017-03-06 Werner Lemberg <wl@gnu.org>
1887
1888 [sfnt, truetype] Always provide default instance.
1889
1890 As documented in the OpenType specification, an entry for the
1891 default instance may be omitted in the named instance table. In
1892 particular this means that even if there is no named instance table
1893 in the font we actually do have a named instance, namely the default
1894 instance.
1895
1896 For consistency, we always want the default instance in our list of
1897 named instances. If it is missing, we try to synthesize it.
1898
1899 * src/sfnt/sfobjs.c (sfnt_init_face): Check whether the default
1900 instance is in the table of named instances. Otherwise adjust
1901 number of instances.
1902
1903 * src/truetype/ttgxvar.c: Include FT_TRUETYPE_IDS_H.
1904 (TT_Get_MM_Var): Use `face->root.style_flags' as the number of named
1905 instances.
1906 Sythesize a named instance entry if necessary.
1907 (tt_done_blend): Free `normalized_stylecoords'.
1908
Werner Lembergc1b000d2017-03-05 20:23:35 +010019092017-03-05 Werner Lemberg <wl@gnu.org>
1910
1911 [sfnt] Remove redundant code.
1912
1913 * src/sfnt/sfobjs.c (sfnt_init_face): Remove second test for
1914 `num_instances', which will always succeed.
1915
Werner Lemberg588e38e2017-03-04 11:04:24 +010019162017-03-04 Werner Lemberg <wl@gnu.org>
1917
Werner Lemberg0c7fb432017-03-05 19:06:41 +01001918 [sfnt] Add `get_name_id' service.
1919
1920 * include/freetype/internal/sfnt.h (TT_Get_Name_ID_Func): New
1921 typedef.
1922 (SFNT_Interface): Add `get_name_id' field.
1923 (FT_DEFINE_SFNT_INTERFACE): Updated.
1924
1925 * src/sfnt/sfdriver.c (search_name_id): Rename to...
1926 (sfnt_get_name_id): ... this.
1927 (sfnt_get_ps_name, sfnt_interface): Udpated.
1928
19292017-03-04 Werner Lemberg <wl@gnu.org>
1930
Werner Lemberg588e38e2017-03-04 11:04:24 +01001931 [truetype] Make `TT_Set_MM_Blend' set named instance index.
1932
1933 * src/truetype/ttgxvar.h (GX_Blend): New array
1934 `normalized_stylecoords'.
1935
1936 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Allocate and fill
1937 `normalized_stylecoords'.
1938 (TT_Set_MM_Blend): Check instance tuple and adjust `face_index'
1939 accordingly.
1940
Werner Lemberg47176962017-03-02 21:42:14 +010019412017-03-02 Werner Lemberg <wl@gnu.org>
1942
1943 [truetype] Split off designer/normalized conversion routines.
1944
1945 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Split off conversion
1946 code designer->normalized coordinates to...
1947 (ft_var_to_normalized): ... New function.
1948 (TT_Get_Var_Design): Split off conversion code normalized->designer
1949 coordinates to...
1950 (ft_var_to_design): ... New function.
1951
19522017-02-28 Werner Lemberg <wl@gnu.org>
Werner Lembergf0cee1a2017-02-23 08:23:39 +01001953
Werner Lembergb553fcb2017-02-28 15:11:21 +01001954 [sfnt] Further generalize `sfnt_get_ps_name'; report invalid data.
1955
1956 * src/sfnt/sfdriver.c (sfnt_ps_map): New array.
1957 (sfnt_is_postscript): New function.
1958 (char_type_func): New typedef.
1959 (get_win_string, get_apple_string): Add argument to specify
1960 character checking function.
1961 Add argument whether argument checking failures should be reported.
1962 Update callers.
1963 (search_name_id): Fix return value.
1964
19652017-02-23 Werner Lemberg <wl@gnu.org>
1966
Werner Lembergb653a232017-02-26 11:23:07 +01001967 [sfnt] Split off another bit of `sfnt_get_ps_name'.
1968
1969 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
1970 functionality into...
1971 (search_name_id): ... New function.
1972
19732017-02-23 Werner Lemberg <wl@gnu.org>
1974
Werner Lembergc1abd6a2017-02-23 22:58:14 +01001975 [sfnt] Modularize `sfnt_get_ps_name'.
1976
1977 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
1978 functionality into...
1979 (IS_WIN, IS_APPLE): ... New macros.
1980 (get_win_string, get_apple_string): ... New functions.
1981
19822017-02-23 Werner Lemberg <wl@gnu.org>
1983
Werner Lemberg01f315f2017-02-23 14:24:01 +01001984 [truetype] Minor improvement.
1985
1986 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
1987 load_truetype_glyph): Remove unnecessary tests.
1988
19892017-02-23 Werner Lemberg <wl@gnu.org>
1990
Werner Lembergf0cee1a2017-02-23 08:23:39 +01001991 * include/freetype/internal/tttypes.h (TT_Face): s/isCFF2/is_cff2/.
1992
1993 For orthogonality with other structure field names.
1994
1995 Update all users.
1996
Alexei Podtelezhnikov761d9e42017-02-22 22:41:36 -050019972017-02-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1998
1999 * src/smooth/ftgrays.c (gray_hline): Improve code.
2000
Dominik Röttschesb3105342017-02-20 12:29:59 +010020012017-02-20 Dominik Röttsches <drott@google.com>
2002
2003 Fix some `ttnameid.h' entries (#50313).
2004
2005 * include/freetype/ttnameid.h:
2006 s/TT_MS_LANGID_SPANISH_INTERNATIONAL_SORT/TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT/,
2007 s/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIA/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN/.
2008
Werner Lembergca1486c2017-02-20 08:55:26 +010020092017-02-20 Werner Lemberg <wl@gnu.org>
2010
Werner Lemberge7067982017-02-20 09:15:13 +01002011 [cff] Finish support for `random' operator.
2012
2013 * src/cff/cfftypes.h (CFF_SubFontRec): Add `random' field.
2014
2015 * src/cff/cffobjs.c: Updated.
2016 (cff_driver_init): Initialize random seed value.
2017
2018 * src/cff/cffload.c (cff_random): New function.
2019 (cff_subfont_load): Add `face' argument.
2020 Update all callers.
2021 Initialize random number generator with a proper seed value.
2022 (cff_font_load): Add `face' argument.
2023 Update all callers.
2024
2025 * src/cff/cffload.h: Updated.
2026
2027 * src/cff/cf2intrp.c (CF2_FIXME): Removed.
2028 (cf2_interpT2CharString) <cf2_escRANDOM>: Implement opcode.
2029
2030 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Don't
2031 initialize random seed value.
2032 <cff_op_random>: Use new random seed framework.
2033
20342017-02-20 Werner Lemberg <wl@gnu.org>
2035
Werner Lemberg156b30b2017-02-20 09:06:22 +01002036 [cff] Sanitize `initialRandomSeed'.
2037
2038 * src/cff/cffload.c (cff_load_private_dict): Make
2039 `initial_random_seed' value always positive.
2040
20412017-02-20 Werner Lemberg <wl@gnu.org>
2042
Werner Lemberg753e1132017-02-20 09:01:14 +01002043 [cff] Introduce `random-seed' property (2/2).
2044
2045 * src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
2046 (open_face): Initialize `face->internal->random_seed'.
2047 (FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.
2048
2049 * src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
2050 property.
2051
20522017-02-20 Werner Lemberg <wl@gnu.org>
2053
Werner Lembergca1486c2017-02-20 08:55:26 +01002054 [cff] Introduce `random-seed' property (1/2).
2055
2056 We need this for support of the `random' operator.
2057
2058 * include/freetype/ftcffdrv.h (FT_PARAM_TAG_RANDOM_SEED): New macro.
2059
2060 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
2061 field `random_seed'.
2062
2063 * src/cff/cffobjs.h (CFF_DriverRec): New field `random_seed'.
2064
Werner Lemberg467b0262017-02-18 10:42:48 +010020652017-02-17 Werner Lemberg <wl@gnu.org>
2066
2067 Remove clang warnings.
2068
2069 * src/autofit/aflatin.c (af_latin_sort_blue): Add missing `static'
2070 keyword.
2071
2072 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
2073 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
2074 Initialize some variables.
2075
Nikolaus Waxweiler2e951982017-02-16 20:45:45 +010020762017-02-16 Nikolaus Waxweiler <madigens@gmail.com>
2077 Werner Lemberg <wl@gnu.org>
2078
Nikolaus Waxweiler2b0ac182017-02-18 10:42:23 +01002079 Add face property for stem darkening.
2080
2081 * include/freetype/ftautoh.h (FT_PARAM_TAG_STEM_DARKENING): New
2082 macro.
2083
2084 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
2085 `no_stem_darkening' field.
2086
2087 * src/autofit/afloader.c (af_loader_load_glyph),
2088 src/autofit/afmodule.c (af_property_set): Updated.
2089
2090 * src/base/ftobjs.c: Include FT_AUTOHINTER_H.
2091 (ft_open_face_internal): Updated.
2092 (FT_Face_Properties): Handle FT_PARAM_TAG_STEM_DARKENING.
2093
2094 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Updated.
2095
2096 * src/cff/cffdrivr.c (cff_property_set): Updated.
2097
20982017-02-16 Nikolaus Waxweiler <madigens@gmail.com>
2099 Werner Lemberg <wl@gnu.org>
2100
Nikolaus Waxweiler2e951982017-02-16 20:45:45 +01002101 Add face property for LCD filter weights.
2102
2103 * include/freetype/ftlcdfil.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS,
2104 FT_LCD_FILTER_FIVE_TAPS): New macros.
2105 (FT_LcdFiveTapFilter): New typedef.
2106
2107 * include/freetype/ftobjs.h (FT_Face_InternalRec)
2108 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add `lcd_weights' field.
2109 (FT_Bitmap_LcdFilterFunc): Change third argument to weights array.
2110 (ft_lcd_filter_fir): New prototype.
2111 (FT_LibraryRec): Updated.
2112
2113 * src/base/ftlcdfil.c (_ft_lcd_filter_fir): Renamed to...
Alexei Podtelezhnikov71d289d2017-04-19 23:50:29 -04002114 (ft_lcd_filter_fir): ... this base function.
Nikolaus Waxweiler2e951982017-02-16 20:45:45 +01002115 Updated.
2116 (_ft_lcd_filter_legacy): Updated.
2117 (FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated.
2118
2119 * src/base/ftobjs.c (ft_open_face_internal): Updated.
2120 (FT_Face_Properties): Handle FT_PARAM_TAG_LCD_FILTER_WEIGHTS.
2121
2122 * src/smooth/ftsmooth.c (ft_smooth_render_generic)
Alexei Podtelezhnikov7d7aae12017-03-07 22:21:26 -05002123 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Handle LCD weights from
Nikolaus Waxweiler2e951982017-02-16 20:45:45 +01002124 `FT_Face_Internal'.
2125
Nikolaus Waxweiler64cdee72017-02-15 08:06:35 +010021262017-02-14 Nikolaus Waxweiler <madigens@gmail.com>
2127 Werner Lemberg <wl@gnu.org>
2128
2129 Add new function `FT_Face_Properties'.
2130
2131 This commit provides the framework, to be filled with something
2132 useful in the next commits.
2133
2134 * include/freetype/freetype.h (FT_Face_Properties): Declare.
2135
2136 * src/base/ftobjs.c (FT_Face_Properties): New function.
2137
Werner Lemberg319125d2017-02-13 09:34:17 +010021382017-02-13 Werner Lemberg <wl@gnu.org>
2139
2140 [autofit] Prevent overlapping blue zones.
2141
2142 Problem reported as
2143
2144 https://github.com/google/fonts/issues/632
2145
2146 The font in question (Nunito) has values 705 and 713 for the
2147 reference and overshoot values, respectively, of the first blue
2148 zone. Blue zone 2, however, has value 710 for both the reference
2149 and overshoot. At 12ppem, reference and overshoot of blue zone 0
2150 becomes 8px, while blue zone 2 becomes 9px.
2151
2152 A peculiarity of this font is that the tops of isolated vertical
2153 stems like `N' have a slight overshoot also. The auto-hinter tries
2154 to find the nearest blue zone using the *original* coordinates. For
2155 vertical stems, this is value 713. For normal horizontal tops like
2156 in character `E', this is value 710. Since value 713 is mapped to
2157 8px but value 710 to 9px, `N' and similar characters are one pixel
2158 higher than `E', which looks very bad.
2159
2160 This commit sanitizes blue zones to avoid such a behaviour.
2161
2162 * src/autofit/aflatin.c (af_latin_sort_blue): New function.
2163 (af_latin_metrics_init_blues): Sort blue values and remove overlaps.
2164
Alexei Podtelezhnikovfcd47b32017-02-12 23:07:29 -050021652017-02-12 Alexei Podtelezhnikov <apodtele@gmail.com>
2166
2167 * src/smooth/ftgrays.c (gray_sweep): Improve code.
2168
Werner Lembergfaa3c882017-02-06 13:13:02 +010021692017-02-06 Werner Lemberg <wl@gnu.org>
2170
2171 [truetype] Implement `VVAR' table support.
2172
2173 * src/truetype/ttgxvar.h (GX_HVarTable): Renamed to...
2174 (GX_HVVarTable): ...This.
2175 (GX_Blend): Add fields for `VVAR' table handling.
2176 Other minor updates.
2177
2178 * src/truetype/ttgxvar.c (ft_var_load_hvar): Renamed to...
2179 (ft_var_load_hvvar): ...This.
2180 Handle VVAR loading also (controlled by an additional parameter).
2181 (tt_hadvance_adjust): Renamed to...
2182 (tt_hvadvance_adjust): ...This.
2183 Handle application of advance height also (controlled by an
2184 additional parameter).
2185 (tt_hadvance_adjust, tt_vadvance_adjust): Wrappers for
2186 `tt_hvadvance_adjust'.
2187
2188 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
2189
Werner Lemberg1dee4bf2017-02-05 08:33:10 +010021902017-02-05 Werner Lemberg <wl@gnu.org>
2191
2192 [autofit] Use better blue zone characters for lowercase latin.
2193
2194 The number of lowercase characters for computing the top flat blue
2195 zone value was too small (in most cases only `x' and `z'). If one
2196 of the two characters has a large serif, say, it can happen that
2197 FreeType must select between two different values, having a 50%
2198 chance to use the wrong one. As a result, rendering at larger PPEM
2199 values could yield uneven lowercase glyph heights.
2200
2201 Problem reported by Christoph Koeberlin <christoph@koe.berlin>.
2202
2203 * src/autofit/afblue.dat (AF_BLUE_STRING_LATIN_SMALL): Replaced
2204 with...
2205 (AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_STRING_LATIN_SMALL_BOTTOM):
2206 ... New, extended sets.
2207 (AF_BLUE_STRINGSET_LATN): Updated.
2208
2209 * src/autofit/afblue.c, scr/autofit/afblue.h: Regenerated.
2210
Werner Lemberg79042892017-02-04 16:08:08 +010022112017-02-04 Werner Lemberg <wl@gnu.org>
2212
Werner Lemberg1c513fb2017-02-04 20:30:40 +01002213 Make `freetype-config' a wrapper of `pkg-config' if possible.
2214
2215 Based on ideas taken from
2216
2217 http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
2218 http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch
2219
2220 * builds/unix/freetype-config.in: Rewritten. Use `pkg-config' to
2221 set output variables if program is available.
2222
2223 * docs/CHANGES, docs/freetype-config.1: Updated.
2224
22252017-02-04 Werner Lemberg <wl@gnu.org>
2226
Werner Lemberg79042892017-02-04 16:08:08 +01002227 * builds/unix/unix-def.in (freetype-config): Fix permissions.
2228
Werner Lemberg5a7f2ff2017-02-03 08:31:18 +010022292017-02-03 Werner Lemberg <wl@gnu.org>
2230
Werner Lemberg0a1169f2017-02-03 19:38:20 +01002231 * src/autofit/afglobal.c (af_face_globals_free): Erase useless code.
2232
22332017-02-03 Werner Lemberg <wl@gnu.org>
2234
Werner Lemberg5a7f2ff2017-02-03 08:31:18 +01002235 * include/freetype/ftgasp.h (FT_GASP_SYMMETRIC_GRIDFIT): Fix value.
2236
2237 Reported by Behdad.
2238
Werner Lembergdadc50a2017-02-02 07:13:29 +010022392017-02-02 Werner Lemberg <wl@gnu.org>
2240
Werner Lemberge6699592017-02-02 11:38:04 +01002241 [truetype] Fix MVAR post-action handling.
2242
2243 Reported as
2244
2245 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=509
2246
2247 * src/truetype/ttobjs.c (tt_size_reset): Do nothing for CFF2. This
2248 is important to make `tt_size_reset_iterator' (called in
2249 `tt_apply_mvar') always work.
2250
22512017-02-02 Werner Lemberg <wl@gnu.org>
2252
Werner Lembergdadc50a2017-02-02 07:13:29 +01002253 Make compilation with FT_CONFIG_OPTION_PIC work again.
2254
2255 All code committed here is guarded with `FT_CONFIG_OPTION_PIC'.
2256
2257 * include/freetype/internal/services/svmetric.h
2258 (FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Remove trailing semicolon.
2259
2260 * src/autofit/aflatin.c (af_latin_hints_compute_edges,
2261 af_latin_hint_edges): Provide `globals' variable.
2262
2263 * src/autofit/afloader.c (af_loader_load_glyph): Remove shadowing
2264 variable.
2265
2266 * src/autofit/afmodule.c (AF_SCRIPT_CLASSES_GET,
2267 AF_STYLE_CLASSES_GET): Redefine.
2268
2269 * src/autofit/aftypes.h (AF_DEFINE_WRITING_SYSTEM_CLASS): Fix typo.
2270
2271 * src/cff/cffparse.c (CFF_FIELD_BLEND): Provide it.
2272
2273 * src/cff/cffpic.h (CffModulePIC): Fix typo.
2274
Alexei Podtelezhnikov2ca5b072017-01-31 23:13:50 -050022752017-01-31 Alexei Podtelezhnikov <apodtele@gmail.com>
2276
2277 * src/smooth/ftgrays.c (gray_render_scanline): Improve code.
2278
Werner Lemberg31f80552017-01-31 08:10:04 +010022792017-01-31 Werner Lemberg <wl@gnu.org>
2280
Werner Lembergfa437d82017-01-31 23:06:38 +01002281 [cff] Provide metrics variation service interface (#50196).
2282
2283 Only now I've got an OTF with an HVAR table for testing...
2284
2285 The code in `ftmm.c' uses `FT_FACE_LOOKUP_SERVICE' to get the
2286 metrics variations interface. However, this didn't work with
2287 `FT_FACE_FIND_GLOBAL_SERVICE' used in `sfnt_init_face'.
2288
2289 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
2290 (cff_hadvance_adjust, cff_metrics_adjust): Wrapper functions for
2291 metric service functions from the `truetype' module.
2292 (cff_service_metrics_variations): New service.
2293 (cff_services): Updated.
2294
2295 * src/cff/cffpic.h (CFF_SERVICE_METRICS_VAR_GET): New macro.
2296 [FT_CONFIG_OPTION_PIC]: Synchronize code.
2297
2298 * src/sfnt/sfobjs.c (sfnt_init_face): Replace call to
2299 FT_FACE_FIND_GLOBAL_SERVICE with `ft_module_get_service' to always
2300 load the service from the `truetype' module.
2301
23022017-01-31 Werner Lemberg <wl@gnu.org>
2303
Werner Lemberg40589392017-01-31 19:11:56 +01002304 Add framework to support services with 9 functions.
2305
2306 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC9):
2307 New macro.
2308
23092017-01-31 Werner Lemberg <wl@gnu.org>
2310
Werner Lemberg1e550602017-01-31 18:47:10 +01002311 [base] Fix error handing in MM functions.
2312
2313 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
2314 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
2315 Implement it.
2316
23172017-01-31 Werner Lemberg <wl@gnu.org>
2318
Werner Lemberge80e4d82017-01-31 08:32:07 +01002319 [truetype] Fix sanity check for `gvar' table (#50184).
2320
2321 * src/truetype/ttgxvar.c (ft_var_load_gvar): There might be missing
2322 variation data for some glyphs.
2323
23242017-01-31 Werner Lemberg <wl@gnu.org>
2325
Werner Lemberg31f80552017-01-31 08:10:04 +01002326 [autofit] Avoid uninitialized jumps (#50191).
2327
2328 * src/autofit/afcjk.c (af_cjk_metrics_check_digits),
2329 src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize
2330 `advance'.
2331
Werner Lemberg464b16b2017-01-27 08:45:46 +010023322017-01-27 Werner Lemberg <wl@gnu.org>
2333
2334 s/GB2312/PRC/.
2335
2336 * include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
2337 (FT_ENCODING_GB2312): Deprecated.
2338
2339 * include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
2340 (TT_MS_ID_GB2312): Deprecated.
2341
2342 * src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.
2343
2344 * docs/CHANGES: Updated.
2345
Werner Lemberg939df422017-01-26 21:41:38 +010023462017-01-26 Werner Lemberg <wl@gnu.org>
2347
Werner Lembergf4253362017-01-27 00:06:52 +01002348 [base] Add `FT_Get_Sfnt_LangTag' function.
2349
2350 * include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
2351 (FT_Get_Sfnt_LangTag): New declaration.
2352
2353 * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New funtion.
2354
2355 * docs/CHANGES: Updated.
2356
23572017-01-26 Werner Lemberg <wl@gnu.org>
2358
Werner Lemberg939df422017-01-26 21:41:38 +01002359 [sfnt] Support `name' table format 1.
2360
2361 * include/freetype/internal/tttypes.h (TT_LangTagRec): New
2362 structure.
2363 (TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.
2364
2365 * src/sfnt/ttload.c (tt_face_load_name): Add support for language
2366 tags.
2367 Reduce array size of name strings in case of invalid entries.
2368 (tt_face_free_name): Updated.
2369
2370 * docs/CHANGES: Updated.
2371
Werner Lembergf4e56962017-01-25 15:08:41 +010023722017-01-25 Werner Lemberg <wl@gnu.org>
2373
2374 [sfnt] s/TT_NameEntry/TT_Name/.
2375
2376 * include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
2377 to...
2378 (TT_NameRec): This.
2379 (TT_NameTableRec): Updated.
2380
2381 * src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.
2382
2383 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated.
2384
2385 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
2386 tt_name_entry_ascii_from_other): Renamed to...
2387 (tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
2388 respectively.
2389 (TT_NameEntry_ConvertFunc): Renamed to...
2390 (TT_Name_ConvertFunc): This.
2391 (tt_face_get_name): Updated.
2392
Alexei Podtelezhnikov71d289d2017-04-19 23:50:29 -04002393 * src/sfnt/ttload.c (tt_face_load_name, tt_face_free_name):
Werner Lembergf4e56962017-01-25 15:08:41 +01002394 Updated.
2395
Werner Lemberg141f0ea2017-01-24 17:00:36 +010023962017-01-24 Werner Lemberg <wl@gnu.org>
2397
Werner Lemberg14397122017-01-24 20:48:50 +01002398 [sfnt] Fix Postscript name service for symbol fonts.
2399
2400 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
2401 entries also.
2402
24032017-01-24 Werner Lemberg <wl@gnu.org>
2404
Werner Lemberg141f0ea2017-01-24 17:00:36 +01002405 [truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.
2406
2407 * include/freetype/ftsnames.h
2408 (FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
2409 FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
2410 (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
2411 FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.
2412
2413 * include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
2414 TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
2415 (TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
2416 Deprecated.
2417
2418 * src/sfnt/sfobjs.c (sfnt_load_face): Updated.
2419
2420 * docs/CHANGES: Updated.
2421
Werner Lemberg79d52b92017-01-23 07:43:56 +010024222017-01-23 Werner Lemberg <wl@gnu.org>
2423
Werner Lemberg693f56f2017-01-23 12:53:18 +01002424 [base] Add `FT_Set_Default_Properties' (#49187).
2425
2426 * include/freetype/ftmodapi.h: Add declaration.
2427
2428 * src/base/ftinit.c (ft_set_default_properties): Renamed to...
2429 (FT_Set_Default_Properties): ... this.
2430 (FT_Init_FreeType): Updated.
2431
2432 * docs/CHANGES: Updated.
2433
24342017-01-23 Werner Lemberg <wl@gnu.org>
2435
Werner Lembergf5020922017-01-23 11:47:40 +01002436 [truetype] Minor updates for OpenType 1.8.1.
2437
2438 * src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
Alexei Podtelezhnikov983fb0d2017-01-24 23:56:59 -05002439 removed from the specification; it is now reserved.
Werner Lembergf5020922017-01-23 11:47:40 +01002440
2441 * src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
2442 (GX_FVar_Head): Remove `countSizePairs'; the corresponding data
2443 field in the `MVAR' table is now reserved.
2444 (fvar_fields): Updated.
2445
24462017-01-23 Werner Lemberg <wl@gnu.org>
2447
Werner Lemberg79d52b92017-01-23 07:43:56 +01002448 [truetype] Avoid segfault for invalid variation data.
2449
2450 * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
2451 `itemCount' is not zero.
2452
2453 Reported as
2454
2455 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441
2456
Werner Lemberg43061d62017-01-20 10:16:38 +010024572017-01-20 Werner Lemberg <wl@gnu.org>
2458
2459 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
2460
Werner Lembergba6f3e12017-01-17 11:50:09 +010024612017-01-17 Werner Lemberg <wl@gnu.org>
2462
2463 * include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
2464
2465 (TT_APPLE_ID_FULL_UNICODE): New macro.
2466
2467 (TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
2468 TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
2469 TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
2470 TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
2471 TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
2472 TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
2473 TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
2474 TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
2475 TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
2476 TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
2477 TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
2478 macros.
2479
2480 (TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
2481
2482 (TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
2483 TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
2484 TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
2485 TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
2486 TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
2487 TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
2488 TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
2489 TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
2490 TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
2491 TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
2492 TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
2493 TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
2494 TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
2495 TT_MS_LANGID_UIGHUR_PRC): New aliases.
2496
2497 Remove commented out code.
2498
2499 (TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
2500 TT_NAME_ID_VARIATIONS_PREFIX): New macros.
2501
2502 (HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
2503 years), use guarded long macros by default and define short versions
2504 as aliases for the long ones.
2505
Werner Lemberg322b3be2017-01-15 13:57:25 +010025062017-01-15 Werner Lemberg <wl@gnu.org>
2507
2508 * src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
2509 also.
2510
Werner Lemberg8ab08cf2017-01-11 10:05:27 +010025112017-01-11 Werner Lemberg <wl@gnu.org>
2512
Werner Lembergc5298852017-01-12 08:42:55 +01002513 * src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
2514
25152017-01-11 Werner Lemberg <wl@gnu.org>
2516
Werner Lemberg723aafb2017-01-11 14:21:26 +01002517 [truetype] Actually use metrics variation service.
2518
2519 * src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
2520 (ft_face_get_mvar_service): New auxiliary function to look up
2521 metrics variation service.
2522 (FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
2523 FT_Set_Var_Blend_Coordinates): Call metrics variation service.
2524
2525 * src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
2526 named instances.
2527
25282017-01-11 Werner Lemberg <wl@gnu.org>
2529
Werner Lembergd718ac42017-01-11 14:12:34 +01002530 [truetype] Provide metrics variation service.
2531
2532 * include/freetype/internal/services/svmetric.h
2533 (FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
2534
2535 * src/truetype/ttgxvar.c: Include FT_LIST_H.
2536 (tt_size_reset_iterator): New auxiliary function for...
2537 (tt_apply_var): New function.
2538
2539 * src/truetype/ttgxvar.h: Updated.
2540
2541 * src/truetype/ttdriver.c (tt_service_metrics_variations): Add
2542 `tt_apply_mvar'.
2543
2544 * include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
2545 variation service.
2546
25472017-01-11 Werner Lemberg <wl@gnu.org>
2548
Werner Lemberg07ee1d22017-01-11 12:50:51 +01002549 [truetype] Parse `MVAR' table.
2550
2551 * src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
2552 (GX_Value, GX_MVarTable): New structures.
2553 (GX_Blend): Add it.
2554
2555 * src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
2556 GX_GASP_CASE): New macros.
2557 (ft_var_get_value_pointer): New auxiliary function to get a pointer
2558 to a value from various SFNT tables already stored in `TT_Face'.
2559 (ft_var_load_mvar): New function.
2560 (TT_Get_MM_Var): Call it.
2561 (tt_done_blend): Updated.
2562
25632017-01-11 Werner Lemberg <wl@gnu.org>
2564
Werner Lemberg8ab08cf2017-01-11 10:05:27 +01002565 [truetype] More preparations for MVAR support.
2566
2567 * src/truetype/ttobjs.c (tt_size_reset): Add argument to make
2568 function only recompute ascender, descender, and height.
2569
2570 * src/truetype/ttobjs.h: Updated.
2571
2572 * src/truetype/ttdriver.c (tt_size_select, tt_size_request):
2573 Updated.
2574
Werner Lembergf837a502017-01-09 10:49:03 +010025752017-01-09 Werner Lemberg <wl@gnu.org>
2576
Werner Lemberg7ccca6a2017-01-09 19:54:44 +01002577 [pcf] Disable long family names by default.
2578
2579 * include/freetype/config/ftoption.h
2580 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
2581
25822017-01-09 Werner Lemberg <wl@gnu.org>
2583
Werner Lemberg08fd2502017-01-09 11:30:32 +01002584 [pcf] Make long family names configurable.
2585
2586 The change from 2016-09-29 was too radical (except for people using
2587 the openSuSE GNU/Linux distribution). To ameliorate the situation,
2588 PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
2589 the feature; if set, a new PCF property option
2590 `no-long-family-names' can be used to switch this feature off.
2591
2592 * include/freetype/config/ftoption.h, devel/ftoption.h
2593 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
2594
2595 * include/freetype/ftpcfdrv.h: New header file (only containing
2596 comments currently, used for building the documentation).
2597
2598 * include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
2599
2600 * src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
2601
2602 * src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
2603 FT_PCF_DRIVER_H.
2604 (pcf_property_set, pcf_property_get): New functions.
2605 (pcf_service_properties): New service.
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05002606 (pcf_services): Updated.
Werner Lemberg08fd2502017-01-09 11:30:32 +01002607 (pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
2608 `no_long_family_names'.
2609
2610 * src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
2611 and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
2612
2613 * docs/CHANGES: Updated.
2614
26152017-01-09 Werner Lemberg <wl@gnu.org>
2616
Werner Lembergf837a502017-01-09 10:49:03 +01002617 [pcf] Introduce a driver structure.
2618
2619 To be filled later on with something useful.
2620
2621 * src/pcf/pcf.h (PCF_Driver): New structure.
2622
2623 * src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
2624 functions.
2625 (pcf_driver_class): Updated.
2626
Werner Lemberg6812f172017-01-08 07:33:05 +010026272017-01-08 Werner Lemberg <wl@gnu.org>
2628
Werner Lemberg469ced72017-01-08 09:28:34 +01002629 [truetype] Again some GX code shuffling.
2630
2631 We need this later on for MVAR also.
2632
2633 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
2634 an item store variation delta into...
2635 (ft_var_get_item_delta): ...new function.
2636
26372017-01-08 Werner Lemberg <wl@gnu.org>
2638
Werner Lemberg6812f172017-01-08 07:33:05 +01002639 [truetype] Adjust font variation flags for MVAR.
2640
2641 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
2642 Remove all flags related to MVAR; replace it with...
2643 (TT_FACE_FLAG_VAR_MVAR): ...this new macro.
2644 (TT_Face): Remove `mvar_support' field (which was still unused).
2645
Werner Lemberg8b755442017-01-06 11:47:55 +010026462017-01-06 Werner Lemberg <wl@gnu.org>
2647
Werner Lemberg02919132017-01-07 07:45:28 +01002648 [truetype] More GX code shuffling.
2649
2650 We need this later on for MVAR also.
2651
2652 * src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
2653 variation store into...
2654 (ft_var_done_item_variation_store): ...new function.
2655
26562017-01-06 Werner Lemberg <wl@gnu.org>
2657
Werner Lembergfb90f002017-01-06 22:23:52 +01002658 [truetype] More generalization of GX stuff.
2659
2660 We need this later on for MVAR also.
2661
2662 * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
2663 parameters for delta-set index mapping and item variation store.
2664 (ft_var_load_item_variation_store): Add parameter for item variation
2665 store.
2666 s/hvarData/varData/.
2667 Move allocation of `hvar_table' to...
2668 (ft_var_load_hvar): ...this function.
2669 Updated.
2670
26712017-01-06 Werner Lemberg <wl@gnu.org>
2672
Werner Lemberg0bd01122017-01-06 21:32:49 +01002673 [truetype] Some GX structure renames for generalization.
2674
2675 We need this later on for MVAR also.
2676
2677 * src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
2678 (GX_ItemVarData): ...this.
2679 (GX_HVarRegion): Renamed to...
2680 (GX_VarRegion): ...this.
2681 (GX_HVStore): Renamed to...
2682 (GX_ItemVarStore): ...this.
2683 (GX_WidthMap): Renamed to...
2684 (GX_DeltaSetIdxMap): ...this.
2685
2686 (GX_HVarTable): Updated.
2687
2688 * src/truetype/ttgxvar.c: Updated.
2689
26902017-01-06 Werner Lemberg <wl@gnu.org>
2691
Werner Lemberg9c814702017-01-06 21:13:36 +01002692 [truetype] Code shuffling.
2693
Werner Lemberg02919132017-01-07 07:45:28 +01002694 * src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
2695 item variation store and delta set index mapping into...
Werner Lemberg9c814702017-01-06 21:13:36 +01002696 (ft_var_load_item_variation_store,
Werner Lemberg02919132017-01-07 07:45:28 +01002697 ft_var_load_delta_set_index_mapping): ...new functions.
Werner Lemberg9c814702017-01-06 21:13:36 +01002698
26992017-01-06 Werner Lemberg <wl@gnu.org>
2700
Werner Lemberg7e1cce52017-01-06 20:31:22 +01002701 [truetype] Add HVAR access without advance width map.
2702
2703 * src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
2704 `offsetToAdvanceWidthMapping' is zero.
2705 (tt_hadvance_adjust): Implement direct deltaSet access by glyph
2706 index.
2707
27082017-01-06 Werner Lemberg <wl@gnu.org>
2709
Werner Lemberg8b755442017-01-06 11:47:55 +01002710 [pcf] Revise driver.
2711
2712 This commit improves tracing and handling of malformed fonts. In
2713 particular, the changes to `pcf_get_properties' fix
2714
2715 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
2716
2717 * src/pcf/pcfread.c (tableNames): Use long names for better
2718 readability.
2719 (pcf_read_TOC): Allow at most 9 tables.
2720 (pcf_get_properties): Allow at most 256 properties.
2721 Limit strings array length to 256 * (65536 + 1) bytes.
2722 Better tracing.
2723 (pcf_get_metric): Trace metric data.
2724 (pcf_get_metrics): Allow at most 65536 metrics.
2725 Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
2726 potential overflow.
2727 Better tracing.
2728 (pcf_get_bitmaps): Allow at most 65536 bitmaps.
2729 Better tracing.
2730 (pcf_get_encodings, pcf_get_accel): Better tracing.
2731
2732 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
2733 These are now shown by `pcf_get_bitmaps'.
2734
Werner Lemberg025226a2017-01-04 07:45:44 +010027352017-01-04 Werner Lemberg <wl@gnu.org>
2736
Werner Lemberga7c2f442017-01-04 13:12:03 +01002737 * src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
2738
27392017-01-04 Werner Lemberg <wl@gnu.org>
2740
Werner Lembergc9d47722017-01-04 10:00:49 +01002741 [cff] More consistency checks for pure CFFs.
2742
2743 Reported as
2744
2745 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
2746
2747 * src/cff/cffload.c (cff_font_load): Check element number and size
2748 of Name and Top DICT indices.
2749
27502017-01-04 Werner Lemberg <wl@gnu.org>
2751
Werner Lemberg025226a2017-01-04 07:45:44 +01002752 [cff, truetype] Minor tracing improvement.
2753
2754 * src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
2755 (tt_face_init): Indent first tracing message from SFNT driver.
2756
Werner Lemberg248eaa42017-01-03 00:27:07 +010027572017-01-03 Werner Lemberg <wl@gnu.org>
2758
Werner Lemberg89824052017-01-03 09:46:19 +01002759 [truetype] Various minor fixes.
2760
2761 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
2762 size only if we do native hinting.
2763 (TT_Load_Glyph): Trace returned error code.
2764
2765 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
2766 returned error code.
2767 (tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
2768 invalid.
2769
27702017-01-03 Werner Lemberg <wl@gnu.org>
2771
Werner Lemberg624b6802017-01-03 09:42:41 +01002772 [sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
2773
2774 These tables are optional.
2775
2776 * src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
2777
27782017-01-03 Werner Lemberg <wl@gnu.org>
2779
Werner Lemberg69414e72017-01-03 06:53:13 +01002780 * src/cff/cffparse.c (cff_parse_num): Simplify.
2781
27822017-01-03 Werner Lemberg <wl@gnu.org>
2783
Werner Lemberg248eaa42017-01-03 00:27:07 +01002784 Various fixes for clang's undefined behaviour sanitizer.
2785
2786 * src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
2787 (cff_blend_doBlend): Don't left-shift negative numbers.
2788 Handle 5-byte numbers byte by byte to avoid alignment issues.
2789
Werner Lemberg69414e72017-01-03 06:53:13 +01002790 * src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
2791 byte to avoid alignment issues.
Werner Lemberg248eaa42017-01-03 00:27:07 +01002792
2793 * src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
2794 subrs.
2795
2796 * src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
2797
2798 * src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
2799 definition of `ft_get_adobe_glyph_index'.
2800
2801 * src/psnames/pstables.h: Regenerated.
2802
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05002803 * src/psnames/psmodule.c: Include `pstables.h' twice to get both
Werner Lemberg248eaa42017-01-03 00:27:07 +01002804 declaration and definition.
2805
2806 * src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
2807 casting.
2808
Werner Lemberg63765a82017-01-01 10:43:41 +010028092017-01-01 Werner Lemberg <wl@gnu.org>
2810
Werner Lembergbdec1622017-01-01 20:51:55 +01002811 [cff] Handle multiple `blend' operators in a row correctly.
2812
2813 Reported as
2814
2815 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
2816
2817 * src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
2818 pointers into `subFont->blend_stack' after reallocation.
2819
28202017-01-01 Werner Lemberg <wl@gnu.org>
2821
Werner Lemberg63765a82017-01-01 10:43:41 +01002822 [sfnt] Return correct number of named instances for TTCs.
2823
2824 Without this patch, requesting information for face index N returned
2825 the data for face index N+1 (or index 0).
2826
2827 * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
2828 for negative `face_instance_index' values.
2829
Werner Lemberge9a154e2016-12-31 21:41:08 +010028302016-12-31 Werner Lemberg <wl@gnu.org>
2831
Werner Lemberg24be60b2017-01-01 08:20:38 +01002832 */*: Use hex numbers for errors in tracing messages.
2833
28342016-12-31 Werner Lemberg <wl@gnu.org>
2835
Werner Lemberge9a154e2016-12-31 21:41:08 +01002836 [truetype] Check axis count in HVAR table.
2837
2838 Reported as
2839
2840 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
2841
2842 * src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
2843 (ft_var_load_avar): Fix tracing message.
2844
28452016-12-30 Werner Lemberg <wl@gnu.org>
Werner Lemberg069083c2016-12-30 21:16:46 +01002846
2847 * Version 2.7.1 released.
2848 =========================
2849
2850
2851 Tag sources with `VER-2-7-1'.
2852
2853 * docs/VERSION.TXT: Add entry for version 2.7.1.
2854
2855 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
2856 builds/windows/vc2005/index.html,
2857 builds/windows/vc2008/freetype.vcproj,
2858 builds/windows/vc2008/index.html,
2859 builds/windows/vc2010/freetype.vcxproj,
2860 builds/windows/vc2010/index.html,
2861 builds/windows/visualc/freetype.dsp,
2862 builds/windows/visualc/freetype.vcproj,
2863 builds/windows/visualc/index.html,
2864 builds/windows/visualce/freetype.dsp,
2865 builds/windows/visualce/freetype.vcproj,
2866 builds/windows/visualce/index.html,
2867 builds/wince/vc2005-ce/freetype.vcproj,
2868 builds/wince/vc2005-ce/index.html,
2869 builds/wince/vc2008-ce/freetype.vcproj,
2870 builds/wince/vc2008-ce/index.html: s/2.7/2.7.1/, s/27/271/.
2871
2872 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
2873
2874 * builds/unix/configure.raw (version_info): Set to 19:0:13.
2875 * CMakeLists.txt (VERSION_PATCH): Set to 1.
2876
Werner Lemberg6b21d122016-12-30 10:00:54 +010028772016-12-30 Werner Lemberg <wl@gnu.org>
2878
Werner Lemberg8fb9d222016-12-30 19:51:37 +01002879 [ftfuzzer] Replace `rand' with an xorshift algorithm.
2880
2881 * src/tools/ftfuzzer/ftfuzzer.cc: Don't include `stdlib.h'.
2882 (Random): Implement and use a 32bit `xorshift' algorithm.
2883
28842016-12-30 Werner Lemberg <wl@gnu.org>
2885
Werner Lemberg6b21d122016-12-30 10:00:54 +01002886 [ftfuzzer] Restrict number of tested bitmap strikes.
2887
2888 Malformed fonts often have large values for the number of bitmap
2889 strikes, and FreeType doesn't check the validity of all bitmap
2890 strikes in advance.
2891
2892 Reported as
2893
2894 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=353
2895
2896 * src/tools/ftfuzzer/ftfuzzer.cc: Include `stdlib.h' for `rand'.
2897 (Random): Small class to provide n randomly selected numbers
Alexei Podtelezhnikovca472222017-01-17 23:45:08 -05002898 (without repetition) out of the value set [1,N].
Werner Lemberg6b21d122016-12-30 10:00:54 +01002899 (LLVMFuzzerTestOneInput): Use it to test only up to 10 bitmap
2900 strikes.
2901
Werner Lemberg346b1412016-12-29 06:03:40 +010029022016-12-29 Werner Lemberg <wl@gnu.org>
2903
Werner Lemberg7591bf12016-12-29 21:39:06 +01002904 [truetype] Variation font API stability issues.
2905
2906 Make some functions work before a call to `TT_Set_MM_Blend'.
2907
2908 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Exit immediately if
2909 we don't blend.
2910 (TT_Get_MM_Blend, TT_Get_Var_Design): Return default values if we
2911 don't blend.
2912
29132016-12-29 Werner Lemberg <wl@gnu.org>
2914
Werner Lemberg91fc3bd2016-12-29 21:34:46 +01002915 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis data.
2916
2917 Reported as
2918
2919 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=348
2920
29212016-12-29 Werner Lemberg <wl@gnu.org>
2922
Werner Lemberg18018512016-12-29 21:30:06 +01002923 [truetype] Tracing fixes.
2924
2925 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Emit correct
2926 information.
2927 (TT_Set_Var_Design): Fix typo.
2928 (TT_Get_Var_Design): Fix typos.
2929
29302016-12-29 Werner Lemberg <wl@gnu.org>
2931
Werner Lemberg84b0d992016-12-29 10:38:51 +01002932 */*: Use `0.5f' for tracing 16.16 numbers.
2933
29342016-12-29 Werner Lemberg <wl@gnu.org>
2935
Werner Lemberg346b1412016-12-29 06:03:40 +01002936 [pcf] Protect against gzip bombs.
2937
2938 Fix suggested by Kostya; reported as
2939
2940 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=345
2941
2942 * src/pcf/pcfread.c (pcf_read_TOC): Limit number of TOC entries to
2943 1024.
2944
Werner Lembergc4cd34a2016-12-28 08:33:35 +010029452016-12-28 Werner Lemberg <wl@gnu.org>
2946
Werner Lemberg6fb549d2016-12-28 22:23:33 +01002947 [psnames] Only declare, not define, data in `pstables.h' (#49949).
2948
2949 Pdfium includes `pstables.h' a second time; moving the definition
2950 from `pstables.h' to `psmodule.c' saves more than 60kByte data
2951 segment space for this case.
2952
2953 * src/tools/glnames.py (StringTable::dump,
2954 StringTable::dump_sublist, dump_encoding, dump_array): Emit
2955 additional code to only define tables if `DEFINE_PS_TABLES' is set.
2956
2957 * src/psnames/pstables.h: Regenerated.
2958 * src/psnames/psmodule.c (DEFINE_PS_TABLES): Define.
2959
29602016-12-28 Werner Lemberg <wl@gnu.org>
2961
Werner Lembergc4a1ef32016-12-28 21:22:45 +01002962 [cff] Catch `blend' op in non-variant fonts.
2963
2964 Reported as
2965
2966 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=334
2967
2968 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>: Don't
2969 allow `blend' op for non-variant fonts.
2970
29712016-12-28 Werner Lemberg <wl@gnu.org>
2972
Werner Lembergc4cd34a2016-12-28 08:33:35 +01002973 [cff] Better check of number of blends.
2974
2975 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>,
2976 src/cff/cffparse.c (cff_parse_blend): Compare number of blends with
2977 stack size.
2978
Werner Lemberge5e35562016-12-27 06:49:37 +010029792016-12-27 Werner Lemberg <wl@gnu.org>
2980
Werner Lemberg48fd5bb2016-12-27 10:20:23 +01002981 Documentation updates.
2982
2983 * docs/CHANGES: Add missing information.
2984
2985 * docs/formats.txt: Rewritten and updated.
2986
29872016-12-27 Werner Lemberg <wl@gnu.org>
2988
Werner Lemberge5e35562016-12-27 06:49:37 +01002989 [truetype, type1] Implement `FT_Get_Var_Design_Coordinates'.
2990
2991 * src/truetype/ttgxvar.c (TT_Get_Var_Design): Implement.
2992 (TT_Set_Var_Design): Fix tracing.
2993
2994 * src/type1/t1load.c (T1_Get_Var_Design): Implement.
2995
Werner Lemberg1fecdfe2016-12-24 07:50:45 +010029962016-12-24 Werner Lemberg <wl@gnu.org>
2997
Werner Lemberga300c1c2016-12-24 09:27:15 +01002998 * src/truetype/ttpload.c (tt_face_load_hdmx): Ignore `version'.
2999
3000 Problem reported by 張俊芝 <418092625@qq.com>.
3001
30022016-12-24 Werner Lemberg <wl@gnu.org>
3003
Werner Lembergd1db57c2016-12-24 09:05:16 +01003004 * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
3005
3006 Some fonts seem to have the `version' field in the wrong byte order.
3007
3008 Problem reported by 張俊芝 <418092625@qq.com>.
3009
30102016-12-24 Werner Lemberg <wl@gnu.org>
3011
Werner Lembergfde0b782016-12-24 08:17:19 +01003012 * src/truetype/ttpload.c (tt_face_load_loca): Sanitize table length.
3013
3014 This trivial fix allows us to accept more fonts.
3015
3016 Problem reported by 張俊芝 <418092625@qq.com>.
3017
30182016-12-24 Werner Lemberg <wl@gnu.org>
3019
Werner Lemberg1fecdfe2016-12-24 07:50:45 +01003020 * src/sfnt/sfobjs.c (sfnt_init_face): Fix tracing.
3021
Werner Lembergada82972016-12-22 08:25:42 +010030222016-12-22 Werner Lemberg <wl@gnu.org>
3023
Werner Lemberg18bd1762016-12-22 12:24:23 +01003024 * CMakeLists.txt: Make it work with cmake 2.8.11.2 (#49909).
3025
30262016-12-22 Werner Lemberg <wl@gnu.org>
3027
Werner Lemberg06d61b42016-12-22 10:43:46 +01003028 Ensure used preprocessor symbols are defined (#49790).
3029
3030 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
3031 include/freetype/config/ftconfig.h: Check `__GNUC__', `__IBMC__',
3032 and `__SUNPRO_C' correctly.
3033
30342016-12-22 Werner Lemberg <wl@gnu.org>
3035
Werner Lemberg7f733392016-12-22 10:12:17 +01003036 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Check `count'.
3037
3038 Reported as
3039
3040 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=308
3041
30422016-12-22 Werner Lemberg <wl@gnu.org>
3043
Werner Lembergb44e6c22016-12-22 08:30:15 +01003044 [cff] Protect against invalid `vsindex' and `blend' values.
3045
3046 Reported as
3047
3048 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=305
3049
3050 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVSINDEX,
3051 cf2_cmdBLEND>: Implement it.
3052
30532016-12-22 Werner Lemberg <wl@gnu.org>
3054
Werner Lembergada82972016-12-22 08:25:42 +01003055 [ftfuzzer] Always use Adobe CFF engine.
3056
3057 * src/tools/ftfuzzer/ftfuzzer.cc (FT_Global::FT_Global): Implement
3058 it.
3059
Werner Lemberg57a67332016-12-21 06:52:23 +010030602016-12-21 Werner Lemberg <wl@gnu.org>
3061
Werner Lembergd44daf92016-12-21 23:03:48 +01003062 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
3063
Werner Lemberg72091102016-12-21 23:46:29 +01003064 I should really stop coding late in the evening...
3065
3066 Thanks again to Ben for checking.
3067
30682016-12-21 Werner Lemberg <wl@gnu.org>
3069
Werner Lemberg8d37efb2016-12-22 20:48:28 +01003070 [autofit] Support variation fonts.
3071
3072 (This ChangeLog entry was added later on.)
3073
3074 * src/autofit/afglobal.c (af_face_globals_free): Remove useless
3075 code.
3076
3077 * src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
3078 * FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
3079 FT_Set_Var_Blend_Coordinates): Finalize
3080 auto-hinter data to enforce recomputation. Note that this is a
3081 brute-force method which should be improved.
3082
30832016-12-21 Werner Lemberg <wl@gnu.org>
3084
Werner Lemberg72091102016-12-21 23:46:29 +01003085 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
3086
Werner Lembergd44daf92016-12-21 23:03:48 +01003087 Don't apply deltas twice for non-phantom points.
3088
3089 Spotted by Ben Wagner.
3090
30912016-12-21 Werner Lemberg <wl@gnu.org>
3092
Werner Lemberge6a429e2016-12-21 20:27:48 +01003093 [cff, truetype] Another try for #49829.
3094
3095 * src/cff/cffdrivr.c: Don't include
3096 `FT_SERVICE_METRICS_VARIATIONS_H'.
3097 (cff_get_advances): Use `ttface->variation_support'.
3098
3099 * src/truetype/ttdriver.c (tt_get_advances): Use
3100 `ttface->variation_support'.
3101
3102 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
3103 load_truetype_glyph): Use `ttface->variation_support'.
3104
31052016-12-21 Werner Lemberg <wl@gnu.org>
3106
Werner Lemberg64a91132016-12-21 19:30:33 +01003107 [truetype, sfnt] Introduce font variation flags to `TT_Face'.
3108
3109 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
3110 New macros describing available functionality of various OpenType
3111 tables related to font variation.
3112 (TT_Face): New fields `variation_support' and `mvar_support',
3113 replacing and extending `use_fvar'.
3114
3115 * src/sfnt/sfobjs.c (sfnt_init_face, sfnt_load_face): Use
3116 `variation_support'.
3117
3118 * src/truetype/ttgxvar.c (ft_var_load_hvar): Set `variation_support'
3119 field.
3120 (TT_Vary_Apply_Glyph_Deltas): Updated.
3121
31222016-12-21 Werner Lemberg <wl@gnu.org>
3123
Werner Lemberg57a67332016-12-21 06:52:23 +01003124 [base] Improve sanity check for Mac resources (#49888).
3125
3126 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Abort if `rlen' is not
3127 positive.
3128
Werner Lemberg70704b32016-12-20 12:27:22 +010031292016-12-20 Werner Lemberg <wl@gnu.org>
3130
Werner Lembergded4bdb2016-12-20 23:26:38 +01003131 [base] More sanity checks for Mac resources.
3132
3133 We use
3134
3135 https://github.com/kreativekorp/ksfl/wiki/Macintosh-Resource-File-Format
3136
3137 and
3138
3139 https://developer.apple.com/legacy/library/documentation/mac/pdf/MoreMacintoshToolbox.pdf#page=151
3140
3141 as references.
3142
3143 * include/freetype/internal/ftrfork.h (FT_RFork_Ref): Use FT_Short
3144 for `res_id'.
3145
3146 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Extract map length
3147 and use it to improve sanity checks.
3148 Follow the specification more closely;in particular, all data types
3149 are signed, not unsigned.
3150 (FT_Raccess_Get_DataOffsets): Follow the specification more closely;
3151 in particular, all data types are signed, not unsigned.
3152 Add some sanity checks.
3153
31542016-12-20 Werner Lemberg <wl@gnu.org>
3155
Werner Lemberg70704b32016-12-20 12:27:22 +01003156 [truetype] Improve logic for getting fast advance widths.
3157
3158 * src/cff/cffdrivr.c (cff_get_advances), src/truetype/ttdriver.c
3159 (tt_get_advances): Use `is_default_instance' for test; this gets
3160 recomputed after changing blend coordinates.
3161
Ben Wagnercc576f82016-12-20 11:37:42 +010031622016-12-20 Ben Wagner <bungeman@google.com>
3163 Werner Lemberg <wl@gnu.org>
3164
Werner Lembergd678b372016-12-20 12:45:31 +01003165 [truetype] Fix linear metrics of GX variation fonts (#49829).
Ben Wagnercc576f82016-12-20 11:37:42 +01003166
3167 When asking for an unhinted non-default variations,
3168 `linearVertAdvance' is currently the value from the `hmtx' table
3169 instead of the actual value after applying the variation. `HVAR'
3170 support fixes this, but fonts will exist without that table and will
3171 need sane fallback.
3172
Werner Lembergd678b372016-12-20 12:45:31 +01003173 Problem also reported as
Werner Lemberg59b0b3a2016-12-20 11:39:52 +01003174
3175 https://bugs.chromium.org/p/skia/issues/detail?id=5917
3176
Ben Wagnercc576f82016-12-20 11:37:42 +01003177 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
3178 load_truetype_glyph): Implement linear advance adjustments if `HVAR'
3179 or `VVAR' tables are missing.
3180
Werner Lemberga1e85f12016-12-20 10:52:26 +010031812016-12-20 Werner Lemberg <wl@gnu.org>
3182
3183 [cff, truetype] Fast advance width retrieval for fonts with HVAR.
3184
3185 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
3186
3187 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Don't handle MM.
3188
3189 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
3190 (cff_get_advances): Test for HVAR and VVAR.
3191
3192 * src/truetype/ttdriver.c (tt_get_advances): Test for HVAR and VVAR.
3193
Werner Lemberg8f633a02016-12-18 06:42:31 +010031942016-12-18 Werner Lemberg <wl@gnu.org>
3195
Werner Lemberg5743df72016-12-18 21:01:03 +01003196 [base] Fix invalid mac font recursion.
3197
3198 Reported as
3199
3200 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=304
3201
3202 * src/base/ftobjs.c (FT_Open_Face): Code moved to...
3203 (ft_open_face_internal): ... this function.
3204 Add a parameter to control whether we try special Mac font handling
3205 in case of failure.
3206 (FT_Open_Face, FT_New_Face, FT_New_Memory_Face,
3207 open_face_from_buffer): Use `ft_open_face_internal'.
3208
32092016-12-18 Werner Lemberg <wl@gnu.org>
3210
Werner Lembergca3d4012016-12-18 18:23:19 +01003211 * src/cff/cffobjs.c (cff_face_init): Make named instances work.
3212
32132016-12-18 Werner Lemberg <wl@gnu.org>
3214
Werner Lemberga8652c52016-12-18 18:12:03 +01003215 [truetype, cff] Extend `get_var_blend' function of MM service.
3216
3217 In particular, we need access to named instance data.
3218
3219 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
3220 Add argument for `FT_MM_Var'.
3221
3222 * src/cff/cffload.c (cff_get_var_blend): Updated.
3223 * src/cff/cffload.h: Updated.
3224
3225 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
3226
3227 * src/truetype/ttgxvar.c (tt_get_var_blend): Updated.
3228 Accept value `NULL' for arguments.
3229 * src/truetype/ttgxvar.h: Updated.
3230
32312016-12-18 Werner Lemberg <wl@gnu.org>
3232
Werner Lemberg25f3ac22016-12-18 15:50:18 +01003233 [sfnt] Handle `fvar' with zero axes as a non-MM font.
3234
3235 This is better behaviour than exiting with an error.
3236
3237 * include/freetype/internal/tttypes.h (TT_Face): Add `use_fvar'
3238 field.
3239
3240 * src/sfnt/sfobjs.c (sfnt_init_face): Compute `use_fvar', also
3241 updating the validation code.
3242 Use `use_fvar' to compute FT_FACE_FLAG_MULTIPLE_MASTERS.
3243
3244 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Remove `fvar' validation
3245 code.
3246
32472016-12-18 Werner Lemberg <wl@gnu.org>
3248
Werner Lembergeb6d0202016-12-18 09:29:58 +01003249 Minor GX code shuffling.
3250
3251 * include/freetype/internal/tttypes.h (TT_Face): Move
3252 `is_default_instance' into TT_CONFIG_OPTION_GX_VAR_SUPPORT
3253 block.
3254
3255 * src/sfnt/sfobjs.c (sfnt_init_face): Updated.
3256 * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): New macro.
3257 (TT_Load_Glyph): Use it.
3258
32592016-12-18 Werner Lemberg <wl@gnu.org>
3260
Werner Lemberg8f633a02016-12-18 06:42:31 +01003261 [cff] Better handling of non-CFF font formats.
3262
3263 * src/cff/cffload.c (cff_font_load): Pure CFFs don't have a
3264 signature, so return `FT_Err_Unknown_File_Format' more often.
3265
Werner Lemberg50ff6c12016-12-17 07:44:46 +010032662016-12-17 Werner Lemberg <wl@gnu.org>
3267
Werner Lemberg4cd68172016-12-17 22:52:50 +01003268 * src/cff/cffload.c (cff_build_blend_vector): Remove redundant code.
3269
32702016-12-17 Werner Lemberg <wl@gnu.org>
3271
Werner Lembergdb17ceb2016-12-17 13:39:31 +01003272 * src/truetype/ttobjs.c (tt_face_init): Simplify conditional code.
3273
32742016-12-17 Werner Lemberg <wl@gnu.org>
3275
Werner Lemberg7c75b162016-12-17 13:28:24 +01003276 [sfnt, truetype] Various sanitizing fixes.
3277
3278 * src/sfnt/sfobjs.c (sfnt_init_face): If the axis count in `fvar' is
3279 zero, set `num_instances' to zero.
3280
3281 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Handle `fvar' table with
3282 zero axes as invalid.
3283
3284 * src/truetype/ttobjs.c (tt_face_init): Improve logic of loading
3285 `loca', `cvt', `fpgm', and `prep' table.
3286
32872016-12-17 Werner Lemberg <wl@gnu.org>
3288
Werner Lemberg3b125e92016-12-17 10:02:19 +01003289 Improve tracing of `FT_Open_Face'.
3290
3291 * src/base/ftobjs.c (FT_Open_Face): Return info on number of
3292 available faces and numbered instances, or the indices of the
3293 requested face and numbered instance.
3294
3295 * src/sfnt/sfobjs. (sfnt_open_font): Trace number of subfonts.
3296
32972016-12-17 Werner Lemberg <wl@gnu.org>
3298
Werner Lemberg50ff6c12016-12-17 07:44:46 +01003299 * src/cff/cffload.c (cff_load_private_dict): Always init `blend'.
3300
3301 Reported as
3302
3303 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=295
3304
Werner Lembergbeecf802016-12-16 08:52:03 +010033052016-12-16 Werner Lemberg <wl@gnu.org>
3306
Werner Lembergdf2cf432016-12-16 11:38:20 +01003307 [truetype] Fix `cvar' sanity test.
3308
3309 Reported by Dave Arnold.
3310
3311 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Use tuple count mask.
3312
33132016-12-16 Werner Lemberg <wl@gnu.org>
3314
Werner Lemberg68620242016-12-16 11:15:17 +01003315 [cff, truetype] Remove compiler warnings; fix `make multi'.
3316
3317 * src/cff/cf2font.h: Include `cffload.h'.
3318
3319 * src/cff/cffload.c: Include FT_MULTIPLE_MASTERS_H and
3320 FT_SERVICE_MULTIPLE_MASTERS_H.
3321 (cff_vstore_load): Eliminate `vsSize'.
3322 (cff_load_private_dict): Tag as `FT_LOCAL_DEF'.
3323
3324 * src/cff/cffload.h: Include `cffobjs.h'.
3325 Provide declaration for `cff_load_private_dict'.
3326
3327 * src/truetype/ttgxvar.c (ft_var_load_hvar): Eliminate
3328 `minorVersion' and `map_offset'.
3329
33302016-12-16 Werner Lemberg <wl@gnu.org>
3331
Werner Lembergbeecf802016-12-16 08:52:03 +01003332 [cff] Fix heap buffer overflow (#49858).
3333
3334 * src/cff/cffparse.c (cff_parser_run): Add one more stack size
3335 check.
3336
Werner Lemberg01658be2016-12-15 23:10:59 +010033372016-12-15 Werner Lemberg <wl@gnu.org>
3338
3339 Fix clang warnings.
3340
3341 * src/cff/cffload.c (cff_blend_doBlend): Add cast.
3342 (cff_subfont_load): Set `error' correctly.
3343
3344 * src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.
3345
Dave Arnold9f62d2c2016-12-15 20:27:47 +010033462016-12-15 Dave Arnold <darnold@adobe.com>
3347 Werner Lemberg <wl@gnu.org>
3348
Dave Arnoldedf40142016-12-15 21:56:44 +01003349 [cff] Implement CFF2 support (2/2).
3350
3351 The font variation code. All parts dependent on the GX code in the
Werner Lembergaddb2dd2017-06-03 21:05:42 +02003352 `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
Dave Arnoldedf40142016-12-15 21:56:44 +01003353 In other words, you can still compile the `cff' module without
3354 defining TT_CONFIG_OPTION_GX_VAR_SUPPORT (which brings you CFF2
3355 support without font variation).
3356
3357 * src/cff/cf2font.c (cf2_font_setup): Add support for font
3358 variation.
3359 * src/cff/cf2font.h (CF2_Font): Add fields for variation data.
3360
3361 * src/cff/cf2ft.c (cf2_free_instance): Free blend data.
3362 (cf2_getVStore, cf2_getNormalizedVector): New functions.
3363 * src/cff/cf2ft.h: Updated.
3364
3365 * src/cff/cf2intrp.c: Include `cffload.h'.
3366 (cf2_cmdRESERVED_15, cf2_cmdRESERVED_16): Replace with...
3367 (cf2_cmdVSINDEX, cf2_cmdBLEND): ... this new enum values.
3368 (cf2_doBlend): New function.
3369 (cf2_interpT2CharString): Handle `vsindex' and `blend' opcodes.
3370
3371 * src/cff/cffload.c (FT_fdot14ToFixed): New macro.
3372 (cff_vstore_done, cff_vstore_load): New functions.
3373 (cff_blend_clear, cff_blend_doBlend, cff_blend_build_vector,
3374 cff_blend_check_vector): New functions.
3375 (cff_load_private_dict): Add arguments for blend vector.
3376 Handle blend data.
3377 (cff_subfont_load, cff_subfont_done): Updated.
3378 (cff_font_load): Handle CFF2 variation store data.
3379 (cff_font_done): Updated.
3380 * src/cff/cffload.h: Include `cffparse.h'.
3381 Updated.
3382
3383 * src/cff/cffobjs.c (cff_face_done): Updated.
3384
3385 * src/cff/cffparse.c: Include `cffload.h'.
3386 (cff_parse_num): Handle internal value 255.
3387 (cff_parse_vsindex, cff_parse_blend): New functions.
3388 (CFF_FIELD_BLEND): New macro.
3389 (cff_parser_run): Updated.
3390 * src/cff/cffparse.h (cff_kind_blend): New enum value.
3391
3392 * src/cff/cfftoken.h: Handle `vstore', `vsindex', and `blend'
3393 dictionary values.
3394
3395 * src/cff/cfftypes.h (CFF_VarData, CFF_AxisCoords, CFF_VarRegion,
3396 CFF_VStore, CFF_Blend): New structures.
3397 (CFF_FontRecDict): Add `vstore_offset' field.
3398 (CFF_Private): Add `vsindex' field.
3399 (CFF_SubFont): Add fields for blend data.
3400 (CFF_Font): Add `vstore' field.
3401
3402 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `CFF2' is equal to `gvar',
3403 since glyph variation data is directly embedded.
3404 (TT_Set_MM_Blend): Don't load `gvar' table for CFF2 fonts.
3405
34062016-12-15 Dave Arnold <darnold@adobe.com>
3407 Werner Lemberg <wl@gnu.org>
3408
Dave Arnold9f62d2c2016-12-15 20:27:47 +01003409 [cff] Implement CFF2 support (1/2).
3410
3411 This commit does not contain the blend code for font variation
3412 support, which follows in another commit.
3413
3414 You should ignore whitespace while inspecting this commit.
3415
3416 * include/freetype/internal/tttypes.h (TT_Face): Add `isCFF2'
3417 member.
3418
3419 * src/cff/cf2font.h (CF2_Font): Add `isCFF2' member.
3420
3421 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Handle `isCFF2'
3422 flag.
3423 (cf2_getMaxstack): New function.
3424 * src/cff/cf2ft.h: Updated.
3425
3426 * src/cff/cf2intrp.c (cf2_escRESERVED_38): New enum.
3427 (cf2_interpT2CharString): Handle CFF2 differences.
3428 Add tracing message for errors.
3429
3430 * src/cff/cffdrivr.c (cff_get_glyph_name, cff_get_name_index):
3431 Update for CFF2.
3432
3433 * src/cff/cffload.c (FT_FIXED_ONE): New macro.
3434 (cff_index_init, cff_index_load_offsets, cff_index_access_element,
3435 cff_index_get_name, cff_ft_select_get, cff_load_private_dict,
3436 cff_subfont_load, cff_font_load): Handle CFF2.
3437 * src/cff/cffload.h: Updated.
3438
3439 * src/cff/cffobjs.c (cff_face_init): Handle CFF2.
3440
3441 * src/cff/cffparse.c (cff_parse_maxstack): New function.
3442 (CFFCODE_TOPDICT, CFFCODE_PRIVATE): Removed
3443 * src/cff/cffparse.h (CFF2_MAX_STACK, CFF2_DEFAULT_STACK): New
3444 macros.
3445 (CFF2_CODE_TOPDICT, CFF2_CODE_FONTDICT, CFF2_CODE_PRIVATE): New
3446 macros.
3447
3448 * src/cff/cfftoken.h: Add fields for CFF2 dictionaries (but no blend
3449 stuff).
3450
3451 * src/cff/cfftypes.h (CFF_Index): Add `hdr_size' field.
3452 (CFF_FontRecDict): Add `maxstack' field.
3453 (CFF_Private): Add `subfont' field.
3454 (CFF_Font): Add `top_dict_length' and `cff2' fields.
3455
3456 * src/sfnt/sfobjs.c (sfnt_load_face): Handle `CFF2' table.
3457
Werner Lemberg3bd79cc2016-12-15 14:34:57 +010034582016-12-15 Werner Lemberg <wl@gnu.org>
3459 Dave Arnold <darnold@adobe.com>
3460
3461 [truetype] Provide HVAR advance width variation as a service.
3462
3463 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
3464
3465 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
3466
3467 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Prevent
3468 double adjustment of advance width.
3469
3470 * src/sfnt/ttmtx.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
3471 (tt_face_get_metrics): Apply metrics variations.
3472
Dave Arnold41533b92016-12-15 00:00:45 +010034732016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold097cd872016-12-15 12:58:26 +01003474 Werner Lemberg <wl@gnu.org>
3475
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01003476 [truetype] Provide function to apply `HVAR' advance width variation.
3477
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01003478 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
3479
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01003480 * src/truetype/ttgxvar.c (tt_hadvance_adjust): New function.
3481 * src/truetype/ttgxvar.h: Updated.
3482
34832016-12-15 Dave Arnold <darnold@adobe.com>
3484 Werner Lemberg <wl@gnu.org>
3485
Dave Arnold097cd872016-12-15 12:58:26 +01003486 [truetype] Add `HVAR' table parsing.
3487
3488 Note that this is not complete yet; it only handles advance width
3489 variation.
3490
3491 Activation of the code follows in another commit.
3492
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01003493 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
3494
Dave Arnold097cd872016-12-15 12:58:26 +01003495 * include/freetype/ftmm.h (FT_Var_Named_Style): Add `psid' member.
3496
3497 * src/truetype/ttgxvar.h (GX_HVarData, GX_AxisCoords, GX_HVarRegion,
3498 GX_HVStore, GX_WidthMap): New auxiliary structures for...
3499 (GX_HVarTable): ... HVAR main structure.
3500 (GX_BlendRec): Add data for HVAR loading.
3501
3502 * src/truetype/ttgxvar.c (FT_FIXED_ONE, FT_fdot14ToFixed,
3503 FT_intToFixed, FT_fixedToInt): New macros.
3504 (ft_var_load_hvar): New function.
3505 (TT_Get_MM_Var): Updated.
3506 (tt_done_blend): Deallocate HVAR data.
3507
35082016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold010e0612016-12-15 11:22:15 +01003509
Dave Arnoldabd58582016-12-15 12:17:22 +01003510 [cff] Extend number parsing.
3511
3512 The forthcoming CFF2 support needs a dynamic parsing limit.
3513
3514 * src/cff/cffparse.c (cff_parse_num, do_fixed, cff_parse_fixed,
3515 cff_parse_fixed_scaled, cff_parse_fixed_dynamic): Add argument for
3516 parser.
3517 (cff_parse_font_matrix, cff_parse_font_bbox, cff_parse_private_dict,
3518 cff_parse_multiple_master, cff_parse_cid_ros, cff_parser_run): Updated.
3519
3520 * src/cff/cffparse.h (cff_parse_num): Export locally.
3521
35222016-12-15 Dave Arnold <darnold@adobe.com>
3523
Dave Arnold010e0612016-12-15 11:22:15 +01003524 [cff] Implement dynamic stack size for Adobe engine.
3525
3526 This also adds `cf2_stack_setReal' and `cf2_stack_pop', needed for
3527 the forthcoming CFF2 support.
3528
3529 * src/cff/cf2stack.c (cf2_stack_init): Add argument for stack size.
3530 (cf2_stack_free): Deallocate stack.
3531 (cf2_stack_count, cf2_stack_pushInt, cf2_stack_pushFixed,
3532 cf2_stack_popInt, cf2_stack_popFixed, cf2_stack_getReal,
3533 cf2_stack_clear): Updated.
3534 (cf2_stack_setReal, cf2_stack_pop): New functions.
3535
3536 * src/cff/cf2stack.h (CF2_Stack): Add `stackSize' member.
3537 Update function declarations.
3538
3539 * src/cff/cf2intrp.c (cf2_interpT2CharString): Updated.
3540
3541 * src/cff/cffparse.c (cff_parser_init): Add parameter for stack
3542 size; return error code.
3543 (cff_parser_done): New function.
3544 (cff_parser_run): Updated.
3545
3546 * src/cff/cffparse.h (CFF_Parser): Add `stackSize' member and make
3547 `stack' a pointer.
3548 Update function declarations.
3549
3550 * src/cff/cffload.c (cff_load_private_dict, cff_subfont_load):
3551 Updated.
3552
35532016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold41533b92016-12-15 00:00:45 +01003554 Werner Lemberg <wl@gnu.org>
3555
3556 [cff] Code shuffling.
3557
3558 * src/cff/cfftypes.h (CFF_Font): Add `library' and `base_offset'
3559 fields.
3560
3561 * src/cff/cffload.c (cff_subfont_load): Change last argument to
3562 `CFF_Font'
3563 Split off parsing of private dictionary into...
3564 (cff_load_private_dict): ...this new function.
3565 (cff_font_load): Updated.
3566
Werner Lembergab22b432016-12-14 18:34:55 +010035672016-12-14 Werner Lemberg <wl@gnu.org>
3568
Werner Lemberg09183252016-12-14 20:44:11 +01003569 [sfnt, truetype] Add framework for Metrics Variations service.
3570
3571 No effect yet; service functions will be implemented later on.
3572
3573 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
3574
3575 * include/freetype/internal/services/svmetric.h: New file.
3576
3577 * include/freetype/internal/ftserv.h
3578 (FT_SERVICE_METRICS_VARIATIONS_H): New macro.
3579
3580 * include/freetype/internal/tttypes.h (TT_Face): New field `var'.
3581
3582 * src/sfnt/sfobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
3583 (sfnt_init_face): Initialize `face->var'.
3584
3585 * src/truetype/ttdriver.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
3586 (tt_service_metrics_variations): New service.
3587 (tt_services): Updated.
3588
3589 * src/truetype/ttpic.h: Updated.
3590
35912016-12-14 Werner Lemberg <wl@gnu.org>
3592
Werner Lembergc628a7d2016-12-14 19:31:42 +01003593 [cff] Add Multiple Masters service.
3594
3595 The code simply uses the MM functions from the `truetype' module.
3596
3597 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
3598
3599 * include/freetype/internal/tttypes.h (TT_Face): New field `mm'.
3600
3601 * src/cff/cffdrivr.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
3602 (cff_set_mm_blend, cff_get_mm_blend, cff_get_mm_var,
3603 cff_set_var_design, cff_get_var_design): New functions.
3604 (cff_service_multi_masters): New service.
3605 (cff_services): Updated.
3606
3607 * src/cff/cffload.c (cff_get_var_blend, cff_done_blend): New
3608 functions.
3609 * src/cff/cffload.h: Updated.
3610
3611 * src/cff/cffpic.h (CFF_SERVICE_MULTI_MASTERS_GET): New macro.
3612
3613 * src/sfnt/sfobjs.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
3614 (sfnt_init_face): Initialize `face->mm'.
3615
36162016-12-14 Werner Lemberg <wl@gnu.org>
3617
Werner Lemberga7dc0c32016-12-14 18:54:21 +01003618 Extend functionality of `ft_module_get_service'.
3619
3620 It can now differentiate between local and global searches.
3621
3622 * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
3623 (FT_Get_TrueType_Engine_Type): Updated.
3624
3625 * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
3626
3627 * include/freetype/internal/ftobjs.h: Updated.
3628 * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
3629 Updated.
3630
36312016-12-14 Werner Lemberg <wl@gnu.org>
3632
Werner Lembergab22b432016-12-14 18:34:55 +01003633 * src/truetype/ttgxvar.c (tt_get_var_blend): Fix compiler warning.
3634
Werner Lemberg4e075162016-12-14 18:25:44 +010036352016-12-14 Dave Arnold <darnold@adobe.com>
3636 Werner Lemberg <wl@gnu.org>
3637
3638 [sfnt, cff] Minor preparations.
3639
3640 * include/freetype/tttags.h (TTAG_CFF2, TTAG_HVAR, TTAG_MVAR,
3641 TTAG_VVAR): New SFNT table tags.
3642
3643 * src/cff/cf2fixed.h (CF2_FIXED_ONE, CF2_FIXED_EPSILON): Add cast.
3644
Werner Lemberg27bdb362016-12-10 09:56:03 +010036452016-12-10 Werner Lemberg <wl@gnu.org>
3646
Werner Lemberg8b174b42016-12-11 09:16:52 +01003647 [truetype, type1] Add `get_var_blend' to MM service.
3648
3649 For internal use; we want to share code between the forthcoming CFF2
3650 support and TrueType.
3651
3652 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
3653 New typedef.
3654 (MultiMasters): Add `get_var_blend'.
3655 (FT_Service_MultiMasters): Updated.
3656
3657 * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
3658 * src/truetype/ttgxvar.h: Updated.
3659
3660 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
3661 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
3662
36632016-12-10 Werner Lemberg <wl@gnu.org>
3664
Werner Lemberg27bdb362016-12-10 09:56:03 +01003665 [truetype, type1] Add `done_blend' to MM service.
3666
3667 For internal use; we want to share code between the forthcoming CFF2
3668 support and TrueType.
3669
3670 * include/freetype/internal/services/svmm.h (FT_Done_Blend_Func):
3671 New typedef.
3672 (MultiMasters): Add `done_blend'.
3673 (FT_Service_MultiMasters): Updated.
3674
3675 * src/truetype/ttgxvar.c (tt_done_blend): Use `TT_Face' as argument.
3676 * src/truetype/ttgxvar.h: Updated.
3677
3678 * src/truetype/ttobjs.c (TT_Face_Done): Updated.
3679
3680 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
3681 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
3682
Werner Lemberg3205a442016-12-09 06:55:34 +010036832016-12-09 Werner Lemberg <wl@gnu.org>
3684
3685 [sfnt] Revert change from 2016-12-08.
3686
3687 I missed the functionality of `ft_module_get_service', which makes
3688 the change unnecessary.
3689
Werner Lemberg29aa9572016-12-08 08:59:34 +010036902016-12-08 Werner Lemberg <wl@gnu.org>
3691
Werner Lemberg4191b772016-12-08 22:33:46 +01003692 Add framework to support services with 8 functions.
3693
3694 We will need this for CFF variation font support.
3695
3696 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC8):
3697 New macro.
3698
36992016-12-08 Werner Lemberg <wl@gnu.org>
3700
Werner Lemberg29aa9572016-12-08 08:59:34 +01003701 [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
3702
3703 CFF2 fonts will need access to those two functions.
3704
3705 * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
3706 (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
3707 (FT_DEFINE_SFNT_INTERFACE): Updated.
3708
3709 * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
3710 Fix signatures to exactly correspond to the glyph dict service
3711 function typedefs.
3712 (sfnt_interface): Updated.
3713
Dave Arnoldbcae6572016-12-05 22:08:15 +010037142016-12-06 Dave Arnold <darnold@adobe.com>
3715
3716 Add `FT_Get_Var_Design_Coordinates' function.
3717
3718 Note that the low-level functions aren't implemented yet.
3719
3720 * include/freetype/ftmm.h: Declare.
3721
3722 * include/freetype/internal/services/svmm.h
3723 (FT_Get_Var_Design_Func): New typedef.
3724 (MultiMasters): New MM service function `get_var_design'.
3725 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
3726 Update all callers.
3727
3728 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
3729
3730 * src/truetype/ttdriver.c: Updated.
3731
3732 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
3733 handle `get_var_design' service.
3734 * src/truetype/ttgxvar.h: Updated.
3735
3736 * src/type1/t1driver.c: Updated.
3737
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05003738 * src/type1/t1load.c (T1_Get_Var_Design): New dump function to
Dave Arnoldbcae6572016-12-05 22:08:15 +01003739 handle `get_var_design' service.
3740 * src/type1/t1load.h: Updated.
3741
Werner Lembergc0fae7d2016-12-06 11:13:19 +010037422016-12-06 Werner Lemberg <wl@gnu.org>
3743
3744 * src/type1/t1load.c (parse_subrs): Fix memory leak.
3745
3746 The `subrs' keyword might erroneously occur multiple times.
3747
3748 Reported as
3749
3750 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
3751
Werner Lemberg602be7c2016-12-01 11:36:37 +010037522016-12-01 Werner Lemberg <wl@gnu.org>
3753
3754 [gzip] Improve building with external zlib (#49673).
3755
3756 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
3757 the following error.
3758
3759 ftgzip.c
3760 zlib-1.2.8\zlib.h(86): error C2061:
3761 syntax error: identifier 'z_const'
3762 zlib-1.2.8\zlib.h(94): error C2054:
3763 expected '(' to follow 'z_const'
3764 zlib-1.2.8\zlib.h(94): error C2085:
3765 'msg': not in formal parameter list
3766 ...
3767 zlib-1.2.8\zlib.h(877): fatal error C1003:
3768 error count exceeds 100; stopping compilation
3769
3770 The error happens because FreeType keeps an own copy of zlib-1.1.4
3771 under `src/gzip'. When building `src/gzip/ftgzip.c' with
3772 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
3773
3774 #include <zlib.h>
3775
3776 which correctly finds an external `zlib.h', but `zlib.h' itself has
3777 a line
3778
3779 #include "zconf.h"
3780
3781 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
3782 compiling the files in `src/gzip'.
3783
3784 * src/gzip/zconf.h: Rename to...
3785 * src/gzip/ftzconf.h: ... this.
3786 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
3787
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +010037882016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
3789
3790 [autofit] Fix Emscripten crash (patch #9180).
3791
3792 Function calls through pointers must use a matching signature to
3793 work on Emscripten, since such calls are dispatched through lookup
3794 tables grouped by signature.
3795
3796 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
3797 typedef.
3798
Werner Lembergd949a3d2016-11-29 12:09:56 +010037992016-11-29 Werner Lemberg <wl@gnu.org>
3800
Werner Lemberg1d28f692016-11-29 18:45:22 +01003801 [smooth] Revert previous commit. Already fixed with 6ca54c64.
3802
38032016-11-29 Werner Lemberg <wl@gnu.org>
3804
Werner Lembergd949a3d2016-11-29 12:09:56 +01003805 [smooth] Avoid conditional jump on uninitialized value (#49711).
3806
3807 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
3808
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +010038092016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
3810
3811 [autofit] Code shuffling.
3812
3813 Also improve some comments and remove unused code.
3814
3815 No functional change.
3816
3817 * src/autofit/afloader.c (af_loader_load_g): Merged with...
3818 (af_loader_load_glyph): ...this function.
3819 Split off emboldening code into...
3820 (af_loader_embolden_glyph_in_slot): ... this function.
3821
Werner Lemberg78150502016-11-17 12:00:20 +010038222016-11-17 Werner Lemberg <wl@gnu.org>
3823
3824 Better support of LLP64 systems with gcc (and clang).
3825
3826 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
3827
3828 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
3829 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
3830
Werner Lembergdd26e3d2016-11-10 12:03:32 +010038312016-11-10 Werner Lemberg <wl@gnu.org>
3832
3833 Fix `lcd_weights' array size.
3834
3835 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
3836
3837 Reported by Nikolaus.
3838
Werner Lemberg565db952016-11-06 12:33:51 +010038392016-11-06 Werner Lemberg <wl@gnu.org>
3840
Werner Lemberge1ee5472016-11-06 12:39:05 +01003841 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
3842
38432016-11-06 Werner Lemberg <wl@gnu.org>
3844
Werner Lemberg1c6fd992016-11-06 12:37:55 +01003845 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
3846
3847 It's unavoidable to call the PNG engine, but to get the metrics it
3848 is sufficient to read the PNG image's header only.
3849
3850 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
3851 allocation of the glyph slot.
3852 * src/sfnt/pngshim.h: Updated.
3853 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
3854 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
3855
38562016-11-06 Werner Lemberg <wl@gnu.org>
3857
Werner Lemberg565db952016-11-06 12:33:51 +01003858 [sfnt] Speed up `sbix' lookup.
3859
3860 This also fixes a bug introduced in 2016-10-01 which prevents
3861 display of embedded bitmap fonts that use the `sbix' format.
3862
3863 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
3864 offset also in `ebdt_size' and `ebdt_start', respectively. This
3865 makes the test for an embedded bitmap data table succeed for this
3866 format.
3867
3868 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
3869 `ebdt_size' and `ebdt_start'
3870 (tt_face_load_sbix_image): Ditto.
3871
Werner Lemberg37e193e2016-11-06 12:32:51 +010038722016-11-06 Seigo Nonaka <nona@google.com>
3873 Werner Lemberg <wl@gnu.org>
3874
3875 Introduce a way of quickly retrieving (embedded) bitmap metrics.
3876
3877 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
3878 until the user calls `FT_Render_Glyph'. However, it always
3879 allocates memory for bitmaps and copies or decodes the contents of a
3880 bitmap glyph, which can be quite slow for PNG data.
3881
3882 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
3883 macro.
3884
3885 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
3886 FT_LOAD_BITMAP_METRICS_ONLY is used.
3887
3888 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
3889 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
3890 the glyph slot.
3891 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
3892 tt_face_load_sbit_image): Updated.
3893
3894 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
3895 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
3896
3897 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
3898 argument to control allocation of the glyph slot.
3899 * src/pfr/pfrobjs (pfr_slot_load): Updated.
3900
3901 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
3902
3903 * docs/CHANGES: Updated.
3904
39052016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +01003906
3907 Synchronize with gnulib (#49448).
3908
3909 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
3910 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
3911 current version of `intprops.h'.
3912 Other minor synchronization to reduce code differences between the
3913 three files.
3914
Behdad Esfahbodb72858c2016-11-03 06:41:00 +010039152016-11-03 Behdad Esfahbod <behdad@behdad.org>
3916
3917 [truetype] Clamp variation requests to valid range.
3918
3919 This is required by OpenType 1.8; it also avoids rounding surprises.
3920
3921 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
3922 outside of the allowed range to always stay within the range instead
3923 of producing an error.
3924
Werner Lemberg328d6842016-10-29 00:18:56 +020039252016-10-29 Werner Lemberg <wl@gnu.org>
3926
3927 [truetype] Remove clang warnings.
3928
3929 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
3930 loop counter handling.
3931
3932 * src/truetype/ttinterp.c: Updated.
3933 (Ins_SCANTYPE): Use signed constant.
3934 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
3935
Werner Lembergddf38722016-10-27 07:27:27 +020039362016-10-27 Werner Lemberg <wl@gnu.org>
3937
3938 [truetype] Fix commit from 2014-11-24.
3939
3940 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
3941
3942 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
3943 logic.
3944
Werner Lemberg56140902016-10-26 08:10:59 +020039452016-10-26 Werner Lemberg <wl@gnu.org>
3946
Werner Lemberg9c45ac32016-10-26 16:00:00 +02003947 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
3948
3949 * include/freetype/ftmm.h: Declare.
3950
3951 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
3952 New typedef.
3953 (MultiMasters): New MM service function `get_mm_blend'.
3954 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
3955 Update all callers.
3956
3957 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
3958 FT_Get_Var_Blend_Coordinates): Implement.
3959
3960 * src/truetype/ttdriver.c: Updated.
3961
3962 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
3963 `get_mm_blend' service.
3964 * src/truetype/ttgxvar.h: Updated.
3965
3966 * src/type1/t1driver.c: Updated.
3967
3968 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
3969 `get_mm_blend' service.
3970 * src/type1/t1load.h: Updated.
3971
3972 * docs/CHANGES: Document.
3973
39742016-10-26 Werner Lemberg <wl@gnu.org>
3975
Werner Lemberg56140902016-10-26 08:10:59 +02003976 * src/type1/t1load.c (parse_subrs): Fix limit check.
3977
3978 Reported as
3979
3980 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
3981
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -040039822016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
3983
3984 [cff] Correct cmap format reporting (#24819).
3985
3986 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
3987 charmap instead of guessing its format and language.
3988
Werner Lemberg57741402016-10-22 18:34:48 +020039892016-10-22 Werner Lemberg <wl@gnu.org>
3990
Werner Lemberg50816742016-10-22 19:16:08 +02003991 [truetype] Fix SCANTYPE instruction (#49394).
3992
3993 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
3994
39952016-10-22 Werner Lemberg <wl@gnu.org>
3996
Werner Lemberg57741402016-10-22 18:34:48 +02003997 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
3998
3999 * src/sfnt/ttpost.c (load_format_25): We need at least a single
4000 table entry.
4001
Werner Lemberg7eeaf982016-10-14 08:58:17 +020040022016-10-14 Werner Lemberg <wl@gnu.org>
4003
4004 [truetype] Fix handling of `cvar' table data.
4005
4006 Reported as
4007
4008 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
4009
4010 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
4011 indices.
4012
Werner Lemberg92281222016-10-11 07:12:12 +020040132016-10-11 Werner Lemberg <wl@gnu.org>
4014
Werner Lemberg9c54d122016-10-11 08:57:55 +02004015 [psaux] Fix handling of invalid flex subrs.
4016
4017 Problem reported as
4018
4019 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
4020
4021 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
4022 <op_callothersubr>: Set `flex_state' after error checking.
4023
40242016-10-11 Werner Lemberg <wl@gnu.org>
4025
Werner Lemberg92281222016-10-11 07:12:12 +02004026 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
4027
Werner Lembergd61b0422016-10-08 19:20:33 +020040282016-10-08 Werner Lemberg <wl@gnu.org>
4029
Werner Lemberg6b354932016-10-08 20:26:59 +02004030 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
4031
40322016-10-08 Werner Lemberg <wl@gnu.org>
4033
Werner Lembergd61b0422016-10-08 19:20:33 +02004034 [cid] Fix parsing of subr offsets.
4035
4036 Bug introduced 2016-05-16.
4037
4038 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
4039
Werner Lembergfcc0ee82016-10-01 20:12:25 +020040402016-10-01 Werner Lemberg <wl@gnu.org>
4041
4042 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
4043
4044 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
4045 a bitmap data table.
4046
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -040040472016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
4048
4049 [smooth] Remove impossibility.
4050
4051 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
4052 (gray_convert_glyph): Remove impossible condition and clean up.
4053
Werner Lembergbf902392016-09-29 13:04:46 +020040542016-09-29 Werner Lemberg <wl@gnu.org>
4055
Werner Lemberg35764872016-09-30 08:11:52 +02004056 [pcf] Enrich family name with foundry name and glyph width info.
4057
4058 This is a very old patch from openSuSE (from 2006, submitted to
4059 FreeType in 2011) that I forgot to apply.
4060
4061 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
4062
4063 Prepend the foundry name plus a space to the family name. There are
4064 many fonts just called `Fixed' which look completely different, and
4065 which have nothing to do with each other. When selecting `Fixed' in
4066 KDE or Gnome one gets results that appear rather random, the style
4067 changes often if one changes the size and one cannot select some
4068 fonts at all.
4069
4070 We also check whether we have `wide' characters; all put together,
4071 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
4072
4073 * src/pcf/pcfread.c (pcf_load_font): Implement it.
4074
4075 * docs/CHANGES: Document it.
4076
40772016-09-29 Werner Lemberg <wl@gnu.org>
4078
Werner Lemberg71b617d2016-09-29 19:53:39 +02004079 [ftfuzzer] Speed up.
4080
4081 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
4082 check for embedded bitmaps if we have a non-default instance.
4083
40842016-09-29 Werner Lemberg <wl@gnu.org>
4085
Werner Lemberg9357ef82017-03-15 07:56:22 +01004086 [truetype] Disallow bitmap strikes for non-default instances.
Werner Lemberg2067c692016-09-29 19:49:07 +02004087
4088 Also speed up access of default instances if GX variations are
4089 active.
4090
4091 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
4092 `is_default_instance' member.
4093
4094 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
4095 `is_default_instance'.
4096
4097 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
4098 load_truetype_glyph): Add test for default instance.
4099 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
4100
4101 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
4102 `is_default_instance'.
4103
41042016-09-29 Werner Lemberg <wl@gnu.org>
4105
Werner Lembergbf902392016-09-29 13:04:46 +02004106 [truetype] Clean up `TT_Face' structure.
4107
4108 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
4109 fields `horz_metrics' and `vert_metrics'.
4110 Update documentation.
4111
4112 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
4113
Werner Lemberg2ecf89b2016-09-28 19:06:21 +020041142016-09-28 Werner Lemberg <wl@gnu.org>
4115
Werner Lemberg45cad2e2016-09-28 19:10:52 +02004116 More FT_ZERO usage.
4117
4118 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
4119 s/ft_memset/FT_MEM_ZERO/.
4120
4121 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
4122 s/ft_memset/FT_ARRAY_ZERO/.
4123
4124 * src/raster/ftraster.c (FT_ZERO): Define.
4125 (ft_black_new): Use it.
4126 * src/raster/ftrend1.c (ft_raster1_get_cbox):
4127 s/FT_MEM_ZERO/FT_ZERO/.
4128
4129 * src/smooth/ftgrays.c (FT_ZERO): Define.
4130 (gray_raster_new): Use it.
4131 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
4132 s/FT_MEM_ZERO/FT_ZERO/.
4133
41342016-09-28 Werner Lemberg <wl@gnu.org>
4135
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02004136 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
4137
Werner Lemberg0d945922016-09-27 08:44:31 +020041382016-09-27 Werner Lemberg <wl@gnu.org>
4139
Werner Lemberga3e2c832016-09-27 21:42:02 +02004140 [truetype] Trace number of executed opcodes.
4141
4142 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
4143
41442016-09-27 Werner Lemberg <wl@gnu.org>
4145
Werner Lemberge27b8a52016-09-27 21:21:01 +02004146 [truetype] Speed up `TT_Load_Glyph'.
4147
4148 This avoids additional calls to `tt_face_lookup_table' for the
4149 `glyf' table, which can be expensive.
4150
4151 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
4152 `glyf_offset' field to ...
4153 (TT_FaceRec): ... this structure.
4154 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
4155 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +02004156 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +02004157
41582016-09-27 Werner Lemberg <wl@gnu.org>
4159
Werner Lemberg0d945922016-09-27 08:44:31 +02004160 [truetype] Introduce dynamic limits for some bytecode opcodes.
4161
4162 This speeds up FreeType's handling of malformed fonts.
4163
4164 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
4165 of twilight points, the total number of negative jumps, and the
4166 total number of loops in LOOPCALL opcodes. The values are based on
4167 the number of points and entries in the CVT table.
4168 (Ins_JMPR): Test negative jump counter.
4169 (Ins_LOOPCALL): Test loopcall counter.
4170
4171 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
4172
4173 * docs/CHANGES: Updated.
4174
Werner Lembergd11e8b62016-09-25 15:32:04 +020041752016-09-25 Werner Lemberg <wl@gnu.org>
4176
Werner Lemberga7649632016-09-25 16:29:05 +02004177 [truetype] Sanitize only last entry of `loca' table.
4178
4179 Without this patch, a loca sequence like `0 100000 0 100000 ...',
4180 where value 100000 is larger than the `glyf' table size, makes
4181 FreeType handle the whole `glyf' table as a single glyph again and
4182 again, which is certainly invalid (and can be very slow, too).
4183
4184 * src/truetype/ttpload.c (tt_face_get_location): Implement.
4185 Improve tracing messages.
4186
41872016-09-25 Werner Lemberg <wl@gnu.org>
4188
Werner Lembergd11e8b62016-09-25 15:32:04 +02004189 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
4190
Werner Lemberg2f2e73c2016-09-24 22:42:58 +020041912016-09-24 Werner Lemberg <wl@gnu.org>
4192
4193 [autofit] Tracing fixes.
4194
4195 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
4196 functions only if we actually do tracing.
4197
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -040041982016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
4199
4200 [smooth] Reduce divisions in the line renderer.
4201
4202 We don't need some divisions if a line segments stays within a single
4203 row or a single column of pixels.
4204
4205 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
4206 conditional.
4207
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -040042082016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
4209
4210 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
4211
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -040042122016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
4213
4214 [smooth] Another tiny speed-up.
4215
4216 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
4217 (gray_record_cell): ... this function.
4218
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -040042192016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
4220
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -04004221 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
4222
42232016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
4224
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04004225 [smooth] Fix valgrind warning and reoptimize.
4226
4227 The algorithm calls `gray_set_cell' at the start of each new contour
4228 or when the contours cross the cell boundaries. Double-checking for
4229 that is wasteful.
4230
4231 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
4232 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
4233
Werner Lemberge421a0b2016-09-10 08:02:30 +020042342016-09-10 Werner Lemberg <wl@gnu.org>
4235
4236 [sfnt] Fix previous commit.
4237
4238 Problems reported as
4239
4240 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
4241
4242 We now map the strike index right before accessing the physical
4243 data, not earlier.
4244
4245 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
4246 after creating the map so that...
4247
4248 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
4249 can be used before and after setting up `sbit_strike_map'.
4250 (tt_face_set_sbit_strike): Revert change.
4251 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
4252
4253 * src/truetype/ttdriver.c (tt_size_select): Revert change.
4254
Werner Lembergd609b7c2016-09-09 22:11:07 +020042552016-09-09 Werner Lemberg <wl@gnu.org>
4256
Werner Lembergdeb26152016-09-09 22:13:33 +02004257 [ftfuzzer] Minor improvements.
4258
4259 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
4260 invalid strikes.
4261 Use better values for call to `FT_Set_Char_Size'.
4262
42632016-09-09 Werner Lemberg <wl@gnu.org>
4264
Werner Lembergd609b7c2016-09-09 22:11:07 +02004265 [sfnt] Don't provide (completely) broken strike data.
4266
4267 FreeType tries to sanitize strike header data; we now reject
4268 completely broken ones.
4269
4270 * include/freetype/internal/tttypes.h (TT_FaceRec): New
4271 `sbit_strike_map' array pointer.
4272
4273 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
4274 width or height would be zero.
4275 Add tracing message in case of error.
4276
4277 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
4278 only using (more or less) valid strike header data for
4279 FT_Face's `available_sizes' array.
4280 (sfnt_done_face): Updated.
4281
4282 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
4283 `sbit_strike_map'.
4284 (tt_face_load_strike_metrics): Improve tracing.
4285
4286 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
4287
Werner Lemberg9749f262016-09-08 07:51:03 +020042882016-09-08 Werner Lemberg <wl@gnu.org>
4289
Werner Lembergd2d59682016-09-08 09:04:32 +02004290 * Version 2.7 released.
4291 =======================
4292
4293
4294 Tag sources with `VER-2-7'.
4295
4296 * docs/VERSION.TXT: Add entry for version 2.7.
4297
4298 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
4299 builds/windows/vc2005/index.html,
4300 builds/windows/vc2008/freetype.vcproj,
4301 builds/windows/vc2008/index.html,
4302 builds/windows/vc2010/freetype.vcxproj,
4303 builds/windows/vc2010/index.html,
4304 builds/windows/visualc/freetype.dsp,
4305 builds/windows/visualc/freetype.vcproj,
4306 builds/windows/visualc/index.html,
4307 builds/windows/visualce/freetype.dsp,
4308 builds/windows/visualce/freetype.vcproj,
4309 builds/windows/visualce/index.html,
4310 builds/wince/vc2005-ce/freetype.vcproj,
4311 builds/wince/vc2005-ce/index.html,
4312 builds/wince/vc2008-ce/freetype.vcproj,
4313 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
4314
4315 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
4316 (FREETYPE_PATCH): Set to 0.
4317
4318 * builds/unix/configure.raw (version_info): Set to 18:6:12.
4319 * CMakeLists.txt (VERSION_MINOR): Set to 7.
4320 (VERSION_PATCH): Set to 0.
4321
4322 * docs/CHANGES: Updated.
4323
43242016-09-08 Werner Lemberg <wl@gnu.org>
4325
Werner Lembergb1e7b682016-09-08 08:56:34 +02004326 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
4327
4328 This fixes the `multi' build.
4329
43302016-09-08 Werner Lemberg <wl@gnu.org>
4331
Werner Lemberg9749f262016-09-08 07:51:03 +02004332 [autofit] Another improvement to Armenian support.
4333
4334 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
4335
4336 * src/autofit/afscript.h: Use better suited characters to derive
4337 default stem widths.
4338
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -040043392016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
4340
Alexei Podtelezhnikov15c6e8d2017-01-22 23:09:05 -05004341 * src/smooth/ftgrays.c (gray_hline): Micro-optimize.
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04004342
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -040043432016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
4344
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -04004345 [smooth] Operate in absolute bitmap coordinates.
4346
4347 Simpler bitmap addressing improves performance by 1.5%.
4348
4349 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
4350 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
4351 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
4352
43532016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
4354
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04004355 [smooth] Improve contour start (take 2).
4356
4357 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
4358 instead of...
4359 (gray_start_cell): ... this function, which is removed.
4360 (gray_convert_glyph): Make initial y-coordinate invalid.
4361
Werner Lembergebbb8b22016-09-06 16:28:57 +020043622016-09-06 Werner Lemberg <wl@gnu.org>
4363
4364 [type1] MM fonts support exactly zero named instances (#48748).
4365
4366 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
4367
Jonathan Kewa15133e2016-09-06 06:33:36 +020043682016-09-06 Jonathan Kew <jfkthame@gmail.com>
4369
4370 [cff] Fix uninitialized memory.
4371
4372 Problem reported as
4373
4374 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
4375
4376 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
4377 array to handle a `get' opcode without a previous `put'.
4378
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -040043792016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
4380
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -04004381 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
4382
43832016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
4384
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04004385 [smooth] Improve contour start.
4386
4387 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
4388 instead of...
4389 (gray_start_cell): ... this function, which is removed.
4390
Werner Lembergc9adf1a2016-09-05 07:32:37 +020043912016-09-05 Werner Lemberg <wl@gnu.org>
4392
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +02004393 [cff] Fix memory initialization.
4394
4395 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
4396 variants of FreeType's memory allocation macros don't do zeroing.
4397
43982016-09-05 Werner Lemberg <wl@gnu.org>
4399
Werner Lemberg1c8bb632016-09-05 08:13:42 +02004400 [ftrandom] Minor improvements.
4401
4402 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
4403 500.
4404
4405 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
4406 directories to ...
4407 (INCLUDES): ... this new variable.
4408 (LDFLAGS): New variable.
4409 (ftrandom.o, ftrandom): Updated.
4410
44112016-09-05 Werner Lemberg <wl@gnu.org>
4412
Werner Lembergc9adf1a2016-09-05 07:32:37 +02004413 [autofit] Improve Armenian support.
4414
4415 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
4416
4417 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
4418 selection of characters.
4419
4420 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
4421
Werner Lemberg4b28f6a2016-09-04 19:05:45 +020044222016-09-04 Werner Lemberg <wl@gnu.org>
4423
4424 [ftrandom] Improve Makefile.
4425
4426 It now supports both a normal build (`./configure && make') and a
4427 development build (`make devel').
4428
4429 * src/tools/ftrandom/Makefile (VPATH): Set it so that
4430 `libfreetype.a' gets searched in both `objs' (for the development
4431 build) and `objs/.libs' (for a normal build which uses libtool).
4432 (LIBS): Add missing libraries.
4433 (ftrandom.o): New rule.
4434 (ftrandom): Use automatic variables.
4435
Werner Lembergf0fa7a62016-09-03 06:33:36 +020044362016-09-03 Werner Lemberg <wl@gnu.org>
4437
Werner Lemberg4e659d72016-09-03 18:14:00 +02004438 [truetype] More fixes for handling of GX deltas.
4439
4440 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
4441
4442 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
4443 sanity test for glyph variation array header size.
4444 Always set stream position before reading packed x and y deltas.
4445 Fix thinko w.r.t. `localpoints' array.
4446
44472016-09-03 Werner Lemberg <wl@gnu.org>
4448
Werner Lembergca8e98d2016-09-03 13:06:16 +02004449 [ftrandom] Various fixes.
4450
4451 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
4452 default.
4453 (error_fraction): Make it of type `double' to work as advertized –
4454 this was completely broken.
4455 Update all related code.
4456 (error_count, fcnt): Make it unsigned to fix compiler warnings.
4457 Update all related code.
4458 (fontlist): Change `len' member to `long' to fix compiler warnings.
4459 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
4460 unused variables.
4461 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
4462 (ExecuteTest): Ditto.
4463 Call `FT_Done_FreeType'.
4464 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
4465 int'.
4466 (usage): Improve output.
4467 (main): Fix compiler warnings.
4468
4469 * src/tools/ftrandom/README: Updated.
4470
44712016-09-03 Werner Lemberg <wl@gnu.org>
4472
Werner Lemberg9357ef82017-03-15 07:56:22 +01004473 [base] Avoid negative bitmap strike dimensions (#48985).
Werner Lembergb98dfda2016-09-03 08:20:31 +02004474
4475 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
4476 actually successful. For example, this can fail for value
4477 -32768 if the type is `signed short'. If there are problems,
Werner Lemberg9357ef82017-03-15 07:56:22 +01004478 disable the strike.
Werner Lembergb98dfda2016-09-03 08:20:31 +02004479
44802016-09-03 Werner Lemberg <wl@gnu.org>
4481
Werner Lembergf0fa7a62016-09-03 06:33:36 +02004482 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
4483
4484 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
4485
Werner Lembergd8ef7262016-09-02 23:27:50 +020044862016-09-02 Werner Lemberg <wl@gnu.org>
4487
Werner Lembergd87bb912016-09-02 23:56:27 +02004488 [unix] Enable 64bit support in file system access (#48962).
4489
4490 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
4491
44922016-09-02 Werner Lemberg <wl@gnu.org>
4493
Werner Lembergd8ef7262016-09-02 23:27:50 +02004494 [sfnt] Avoid left shift of negative value (#48980).
4495
4496 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
4497 constant.
4498
44992016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +02004500
4501 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
4502
Werner Lemberg7a13dc02016-09-02 08:24:01 +020045032016-09-02 Werner Lemberg <wl@gnu.org>
4504
4505 Some preparations for the next release.
4506
4507 * include/freetype/config/ftoption.h
4508 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
4509
4510 * docs/CHANGES: Updated.
4511
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -040045122016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
4513
4514 [smooth] Simplify span rendering more.
4515
4516 It turns out that there is significant cost associated with `FT_Span'
Alexei Podtelezhnikov15c6e8d2017-01-22 23:09:05 -05004517 creation and calls to `gray_render_span' because it happens so
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04004518 frequently. This removes these steps from our internal use but leaves
4519 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
4520 is about 5%.
4521
4522 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
4523 migrated to...
4524 (gray_hline): ... here.
4525
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -040045262016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
4527
4528 [smooth] Streamline pixmap drawing a bit more.
4529
4530 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04004531 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04004532
4533 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
4534
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -040045352016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
4536
4537 [smooth] Streamline pixmap drawing.
4538
4539 This gives 2% speed improvement in rendering simple glyphs.
4540
4541 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
4542 pointer to its bottom-left and pitch to be used in...
4543 (gray_TWorker): ... here.
4544 (gray_render_span): Move pixmap flow check from here...
4545 (gray_raster_render): .. to here.
4546
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -040045472016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
4548
4549 [smooth] Reduce stack of band boundaries.
4550
4551 * src/smooth/ftgrays.c (gray_TBand): Removed.
4552 (gray_convert_glyph): Updated to stack band boundaries concisely.
4553
Werner Lembergf3e71ba2016-08-26 10:31:30 +020045542016-08-26 Werner Lemberg <wl@gnu.org>
4555
Werner Lemberg57aa8392016-08-26 11:59:50 +02004556 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
4557
45582016-08-26 Werner Lemberg <wl@gnu.org>
4559
Werner Lemberg3c61a2f2016-08-26 11:50:09 +02004560 [cid] Fix commit from 2016-05-16.
4561
4562 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
4563
45642016-08-26 Werner Lemberg <wl@gnu.org>
4565
Werner Lembergf3e71ba2016-08-26 10:31:30 +02004566 [sfnt] Cache offset and size to bitmap data table.
4567
4568 This commit avoids `EBDT' and friends being looked up again and
4569 again while loading a single embedded bitmap.
4570
4571 * include/freetype/internal/tttypes.h (TT_FaceRec)
4572 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
4573 `ebdt_size'.
4574
4575 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
4576 (tt_face_load_sbit): ... this function; also store the table size
4577 and offset.
4578
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -040045792016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
4580
4581 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
4582
Werner Lemberga660e3d2016-08-26 00:23:27 +020045832016-08-26 Werner Lemberg <wl@gnu.org>
4584
4585 [type1] Fix heap buffer overflow.
4586
4587 Reported as
4588
4589 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
4590
4591 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
4592 contain glyph names.
4593
Werner Lemberg327f2e32016-08-25 12:46:08 +020045942016-08-25 Werner Lemberg <wl@gnu.org>
4595
Werner Lemberg69ce9732016-08-25 19:49:52 +02004596 [sfnt] Fix previous commit (#48901).
4597
4598 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
4599
46002016-08-25 Werner Lemberg <wl@gnu.org>
4601
Werner Lembergacd18792016-08-25 17:12:46 +02004602 [sfnt] Speed up handling of invalid format 4 cmaps.
4603
4604 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
4605 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
4606
46072016-08-25 Werner Lemberg <wl@gnu.org>
4608
Werner Lemberg327f2e32016-08-25 12:46:08 +02004609 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
4610
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -040046112016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
4612
4613 [smooth] Simplify span rendering.
4614
4615 This removes unnecessary complexity of span merging and buffering.
4616 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04004617 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04004618
4619 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
4620 (gray_TWorker): Remove span buffer and related fields.
4621 (gray_sweep, gray_hline): Updated.
4622
4623 * include/freetype/ftimage.h: Remove documentation note about
4624 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
4625
Werner Lembergcf4224a2016-08-16 06:44:23 +020046262016-08-16 Werner Lemberg <wl@gnu.org>
4627
Werner Lemberga4c2a312016-08-22 19:32:34 +02004628 [truetype] Fix `MPS' instruction.
4629
4630 According to Greg Hitchcock, MPS in DWrite really returns the point
4631 size.
4632
4633 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
4634
4635 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
4636
4637 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
4638 member.
4639
4640 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
4641 (Ins_MPS): Fix instruction.
4642
46432016-08-16 Werner Lemberg <wl@gnu.org>
4644
Werner Lemberg8521ad92016-08-16 13:44:38 +02004645 [lzw] Optimize last commit.
4646
4647 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
4648 conditional clause.
4649
46502016-08-16 Werner Lemberg <wl@gnu.org>
4651
Werner Lemberg548f68d2016-08-16 09:46:40 +02004652 [lzw] Avoid invalid left shift.
4653
Werner Lemberg6df68332016-08-16 09:50:07 +02004654 Reported as
4655
4656 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
4657
Werner Lemberg548f68d2016-08-16 09:46:40 +02004658 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
4659
46602016-08-16 Werner Lemberg <wl@gnu.org>
4661
Werner Lemberg8d7b9192016-08-16 08:07:58 +02004662 [lzw] Avoid buffer overrun.
4663
4664 Reported as
4665
4666 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
4667
4668 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
4669 underflow.
4670
46712016-08-16 Werner Lemberg <wl@gnu.org>
4672
Werner Lembergcf4224a2016-08-16 06:44:23 +02004673 [truetype] Fix compiler warning.
4674
4675 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
4676
Werner Lemberg248f5622016-08-13 06:53:53 +020046772016-08-13 Werner Lemberg <wl@gnu.org>
4678
4679 [winfonts] Avoid zero bitmap width and height.
4680
4681 Reported as
4682
4683 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
4684
4685 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
4686 (FNT_Load_Glyph): Check for zero pitch.
4687
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +020046882016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
4689
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -04004690 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
4691
46922016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
4693
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -04004694 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
4695
46962016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
4697
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02004698 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
4699
Peter Klotz3b37bfc2016-08-10 22:38:08 -040047002016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
4701
4702 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
4703
Werner Lemberg5224aae2016-08-10 19:47:29 +020047042016-08-10 Werner Lemberg <wl@gnu.org>
4705
4706 [sfnt] Use correct type for `italicAngle' field (#48732).
4707
4708 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
4709
Werner Lemberg53059f92016-08-07 09:01:33 +020047102016-08-06 Jon Spencer <jon@jonspencer.ca>
4711
4712 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
4713
4714 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
4715 advance value from the font table and then scales it by the
4716 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
4717 set that value for bitmap fonts and the advance gets scaled to zero.
4718
4719 Taken from
4720
4721 https://github.com/behdad/harfbuzz/issues/252
4722
4723 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
4724 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
4725
47262016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02004727
4728 [truetype] Fix GX variation handling of composites.
4729
4730 * src/truetype/ttgload.c (load_truetype_glyph)
4731 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
4732
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040047332016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
4734
4735 [smooth] Minor refactoring.
4736
4737 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
4738 Updated.
4739
Werner Lembergfae4ec02016-07-29 06:43:32 +020047402016-07-29 Werner Lemberg <wl@gnu.org>
4741
4742 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
4743
4744 Since 2016-05-16 we detect infinite recursion directly.
4745
4746 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
4747 `maxComponentDepth'.
4748 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
4749 `maxComponentDepth' is not valid. Instead, simply adjust its value
4750 and emit a tracing message.
4751
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020047522016-07-26 Werner Lemberg <wl@gnu.org>
4753
4754 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
4755
4756 No functional change.
4757
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020047582016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
4759
4760 [truetype] Record the end of IDEFs.
4761
4762 To match the logic in FDEF. The value of the end is only used for
4763 bound-checking in `Ins_JMPR', so it may not have been obvious that
4764 it was not recorded. Tested (as part of Font Validator 2.0) all the
4765 fonts on Fedora and did not see any change.
4766
4767 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
4768
Werner Lemberge69f34b2016-07-19 07:06:19 +020047692016-07-19 Werner Lemberg <wl@gnu.org>
4770
Werner Lemberg7f631052016-07-19 21:35:58 +02004771 [truetype] Sanitizer fix, second try.
4772
4773 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
4774 tests and use only one slot more.
4775
47762016-07-19 Werner Lemberg <wl@gnu.org>
4777
Werner Lemberge69f34b2016-07-19 07:06:19 +02004778 [truetype] Sanitizer fix.
4779
4780 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
4781 to fix nested loops.
4782
Werner Lemberga3b70d72016-07-18 06:23:36 +020047832016-07-18 Werner Lemberg <wl@gnu.org>
4784
4785 [truetype] Make GETDATA work only for GX fonts.
4786
4787 * src/truetype/ttinterp.c (opcode_name): Updated.
4788 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
4789 (TT_RunIns): Updated.
4790
47912016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02004792
Werner Lemberg8c930132016-07-17 22:40:31 +02004793 [truetype] Add support for Apple's
4794
4795 GETDATA[], opcode 0x92
4796
4797 bytecode instruction. It always returns 17, and we have absolutely
4798 no idea what it is good for...
4799
4800 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
4801 (Ins_GETDATA): New function.
4802 (TT_RunIns): Add it.
4803
48042016-07-16 Werner Lemberg <wl@gnu.org>
4805
Werner Lemberge0843602016-07-16 18:46:28 +02004806 [truetype] Add bytecode support for GX variation fonts.
4807
4808 This commit implements undocumented (but confirmed) stuff from
4809 Apple's old bytecode engine.
4810
4811 GETVARIATION[], opcode 0x91
4812 This opcode pushes normalized variation coordinates for all axes
4813 onto the stack (in 2.14 format). Coordinate of first axis gets
4814 pushed first.
4815
4816 GETINFO[], selector bit 3
4817 If GX variation support is enabled, bit 10 of the result is set
4818 to 1.
4819
4820 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
4821 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
4822 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
4823 bit 3, checking support for variation glyph hinting.
4824 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
4825 to implement opcode 0x91.
4826 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
4827
48282016-07-16 Werner Lemberg <wl@gnu.org>
4829
Werner Lemberg32a32062016-07-16 16:39:26 +02004830 [truetype] Fix GETINFO bytecode instruction.
4831
4832 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
4833 stretching information.
4834
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020048352016-07-16 Behdad Esfahbod <behdad@behdad.org>
4836
4837 [truetype] Make all glyphs in `Zycon' GX font work.
4838
4839 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
4840 tests.
4841
Werner Lemberga3b61252016-07-16 08:16:16 +020048422016-07-16 Werner Lemberg <wl@gnu.org>
4843
4844 [truetype] Fix GX delta tracing.
4845
4846 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
4847 relative point movements.
4848
48492016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02004850
4851 [truetype] More fixes for GX.
4852
4853 This finally fixes the rendering of the cyclist and the lizard in
4854 the `Zycon' font.
4855
4856 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
4857 index is always cumulative.
4858
4859 (tt_handle_deltas): Rename to...
4860 (tt_interpolate_deltas): ... This.
4861 Add new parameter for output point array.
4862 Update caller.
4863
4864 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
4865 the intermediate results of `tt_interpolate_deltas' that are to be
4866 added to `outline->points'.
4867
Werner Lembergaafff572016-07-16 06:41:39 +020048682016-07-15 Werner Lemberg <wl@gnu.org>
4869
4870 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
4871
4872 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
4873
4874 Reported by Alexei.
4875
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020048762016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
4877
4878 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
4879
4880 Problem reported by Hin-Tak Leung.
4881
Werner Lemberg894c0222016-07-15 10:23:11 +020048822016-07-15 Werner Lemberg <wl@gnu.org>
4883
Werner Lemberg1831e6f2016-07-15 10:35:32 +02004884 [autofit] Update and improve segment and edge tracing.
4885
4886 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
4887 `delta' also.
4888 Don't show first point of segment as a replacement for `pos'; this
4889 is (a) misleading, since the difference to `pos' can be almost
4890 arbitrarily large in corner cases, and (b) it is better to have all
4891 segment data in font units instead of a single value given in output
4892 space coordinates.
4893 Improve layout.
4894 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
4895 values for convenience.
4896 Improve layout.
4897
48982016-07-15 Werner Lemberg <wl@gnu.org>
4899
Werner Lemberg894c0222016-07-15 10:23:11 +02004900 [autofit] For edges, reject segments wider than 1px (#41334).
4901
4902 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
4903
4904 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
4905 `delta'.
4906 (af_latin_hints_compute_edges): Reject segments with a delta larger
4907 than 0.5px.
4908
Werner Lemberg631e2182016-07-14 06:25:05 +020049092016-07-14 Werner Lemberg <wl@gnu.org>
4910
Werner Lembergff655432016-07-14 15:01:55 +02004911 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
4912
49132016-07-14 Werner Lemberg <wl@gnu.org>
4914
Werner Lembergee3f36f2016-07-14 10:25:20 +02004915 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
4916
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05004917 * src/sfnt/sfobjs.c (sfnt_init_face): Don't strip off higher 16bits.
Werner Lembergee3f36f2016-07-14 10:25:20 +02004918
49192016-07-14 Werner Lemberg <wl@gnu.org>
4920
Werner Lemberg631e2182016-07-14 06:25:05 +02004921 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
4922
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020049232016-07-14 Behdad Esfahbod <behdad@behdad.org>
4924
4925 [truetype] Fix gxvar delta interpolation.
4926
4927 The coordinates of the base font should be used for interpolation
4928 purposes, NOT the current points (i.e., the result of accumulation
4929 of previous deltas).
4930
4931 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
4932 `points_org' before looping over all tuples.
4933
Werner Lembergf6aa0892013-05-10 07:58:47 +02004934
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00004935----------------------------------------------------------------------------
4936
Werner Lemberg563ae782017-01-04 20:16:34 +01004937Copyright 2016-2017 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00004938David Turner, Robert Wilhelm, and Werner Lemberg.
4939
4940This file is part of the FreeType project, and may only be used, modified,
4941and distributed under the terms of the FreeType project license,
4942LICENSE.TXT. By continuing to use, modify, or distribute this file you
4943indicate that you have read the license and understand and accept it
4944fully.
4945
4946
4947Local Variables:
4948version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00004949coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00004950End: