blob: 9dc20c05038478c7041940efeef33ec9ca23579e [file] [log] [blame]
Werner Lemberg1ede3672017-03-30 00:26:31 +020012017-03-29 Werner Lemberg <wl@gnu.org>
2
3 [truetype] Fix thinko related to PS name of default named instance.
4
5 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `strid' and `psid' are
6 name ID values, not indices into the array of name entries.
7
Werner Lemberg208e7122017-03-27 20:56:23 +020082017-03-27 Werner Lemberg <wl@gnu.org>
9
10 [cid, truetype] Don't use `index' as a variable name.
11
12 At least on FreeBSD there is a global declaration of `index' in file
13 `/usr/include/strings.h'.
14
15 * src/cff/cf2intrp.c, src/truetype/ttgload.c: s/index/idx/ where
16 appropriate.
17
Wojciech Mamrak565f5a72017-03-27 09:19:14 +0200182017-03-27 Wojciech Mamrak <wmamrak@gmail.com>
19
20 [sfnt] Minor improvement for handling kern tables.
21
22 * src/sfnt/ttkern.c (tt_face_load_kern): Don't check for
23 cross-stream kerning tables since we reject format 2 tables later
24 on anyways.
25 Modify code for limit test...
26 (tt_face_get_kerning): ... to avoid a limit test here.
27
Werner Lembergc22a9aa2017-03-27 07:57:24 +0200282017-03-27 Werner Lemberg <wl@gnu.org>
29
30 [pcf] Fix compiler warnings.
31
32 Reported by Alexander Hedges <ahedges@student.ethz.ch>.
33
34 * src/pcf/pcfdrivr.c (pcf_property_set, pcf_property_get): Tag
35 `property_name' with `FT_UNUSED' where necessary.
36
Werner Lemberg3774fc02017-03-26 08:32:09 +0200372017-03-26 Werner Lemberg <wl@gnu.org>
38
39 * src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard.
40
41 Reported as
42
43 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941
44
Werner Lemberg67ff7662017-03-23 12:41:30 +0100452017-03-23 Werner Lemberg <wl@gnu.org>
46
Werner Lembergf958c482017-03-24 09:15:10 +010047 [psaux] Better protect `flex' handling.
48
49 Reported as
50
51 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935
52
53 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
54 <callothersubr>: Since there is not a single flex operator but a
55 series of subroutine calls, malformed fonts can call arbitrary other
56 operators after the start of a flex, possibly adding points. For
57 this reason we have to check the available number of points before
58 inserting a point.
59
602017-03-23 Werner Lemberg <wl@gnu.org>
61
Werner Lemberg913f4362017-03-23 18:37:06 +010062 [sfnt] Fix check for default named instance.
63
64 * src/sfnt/sfobjs.c (sfnt_init_face): A `fixed' number needs four
65 bytes, not two...
66
672017-03-23 Werner Lemberg <wl@gnu.org>
68
Werner Lemberg67ff7662017-03-23 12:41:30 +010069 Make MM fonts work (again).
70
71 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
72 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Ignore
73 return value of `ft_face_get_mvar_service'; instead, check whether a
74 service is actually returned.
75
Werner Lembergdd64a622017-03-20 05:34:02 +0100762017-03-20 Werner Lemberg <wl@gnu.org>
77
Werner Lemberg683e3ad2017-03-21 19:49:11 +010078 [truetype] Some variable renamings.
79
80 Too much local variables holding different structures were called
81 `metrics'.
82
83 * src/truetype/ttdriver.c (tt_size_select): s/metrics/size_metrics/.
84
85 * src/truetype/ttgload.c (tt_get_metrics_incr_overrids,
86 compute_glyph_metrics): s/metrics/incr_metrics/.
87 (load_sbit_image): s/metrics/sbit_metrics/.
88
89 * src/truetype/ttobjs.c (tt_size_run_fpgm): s/metrics/size_metrics/.
90 (tt_size_init_bytecode): s/metrics/tt_metrics/.
91 (tt_size_reset): s/metrics/size_metrics/.
92
932017-03-20 Werner Lemberg <wl@gnu.org>
94
Werner Lemberg6342da92017-03-20 05:36:41 +010095 [sfnt] Don't add instances to non-variation fonts.
96
97 * src/sfnt/sfobjs.c (sfnt_init_face): Fix it.
98
992017-03-20 Werner Lemberg <wl@gnu.org>
100
Werner Lembergdd64a622017-03-20 05:34:02 +0100101 * src/cff/cffgload.c (cff_builder_init): Add safety guard (#50578).
102
Werner Lembergab840e62017-03-18 08:50:42 +01001032017-03-18 Werner Lemberg <wl@gnu.org>
104
Werner Lemberg7aeee3c2017-03-18 17:30:42 +0100105 Introduce FT_UINT_TO_POINTER macro (#50560).
106
107 We have to make a separate case for Windows 64's LLP64 data model.
108
109 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
110 include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER): New macro.
111
112 * src/truetype/ttgload.c (load_truetype_glyph): Use it.
113
1142017-03-18 Werner Lemberg <wl@gnu.org>
115
Werner Lemberg3e792542017-03-18 10:06:15 +0100116 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#50573).
117
118 The problematic font that exceeds the old limit is Lato-Regular,
119 version 2.007, containing bytecode generated by a buggy version of
120 ttfautohint.
121
1222017-03-18 Werner Lemberg <wl@gnu.org>
123
Werner Lemberg13fa85a2017-03-18 09:42:58 +0100124 [truetype] Another limitation for bytecode loop count maximum.
125
126 Reported as
127
128 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=900
129
130 * src/truetype/ttinterp.c (TT_RunIns): Limit `loopcall_counter_max'
131 by number of glyphs also.
132
1332017-03-18 Werner Lemberg <wl@gnu.org>
134
Werner Lembergab840e62017-03-18 08:50:42 +0100135 [ftfuzzer] Minor improvement.
136
137 * src/tools/ftfuzzer/ftfuzzer.cc: Don't set intermediate axis if
138 bitmap strikes are active.
139
1402017-03-18 Werner Lemberg <wl@gnu.org>
Werner Lembergbffb7fe2017-03-17 07:52:30 +0100141
Werner Lemberg99311752017-03-18 07:06:49 +0100142 Improve `make multi'.
143
144 * src/autofit/aflatin2.c: Guard file with FT_OPTION_AUTOFIT2.
145
146 * src/base/ftmac.c: Guard more parts of the file with FT_MACINTOSH.
147
148 * src/psaux/afmparse.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
149
150 * src/sfnt/pngshim.c: Guard file with
151 TT_CONFIG_OPTION_EMBEDDED_BITMAPS also.
152
153 * src/sfnt/ttbdf.c: Avoid empty source file.
154 * src/sfnt/ttpost.c: Guard file with
155 TT_CONFIG_OPTION_POSTSCRIPT_NAMES.
156 * src/sfnt/ttsbit.c: Guard file with
157 TT_CONFIG_OPTION_EMBEDDED_BITMAPS.
158
159 * src/truetype/ttgxvar.c, src/truetype/ttinterp.c: Avoid empty
160 source file.
161
162 * src/truetype/ttsubpix.c: Guard file with
163 TT_USE_BYTECODE_INTERPRETER also.
164
165 * src/type1/t1afm.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
166
167 * src/autofit/autofit.c, src/base/ftbase.c, src/cache/ftcache.c,
168 src/cff/cff.c, src/cid/type1cid.c, src/gxvalid/gxvalid.c,
169 src/pcf/pcf.c, src/pfr/pfr.c, src/psaux/psaux.c,
170 src/pshinter/pshinter.c, src/psnames/psnames.c, src/raster/raster.c,
171 src/sfnt/sfnt.c, src/smooth/smooth.c, src/truetype/truetype.c,
172 src/type1/type1.c, src/type42/type42.c: Remove conditionals; sort
173 entries.
174
1752017-03-17 Werner Lemberg <wl@gnu.org>
176
Werner Lembergd5bfa052017-03-17 21:47:54 +0100177 Fixes for conditional compilation.
178
179 * src/autofit/afcjk.c, src/autofit/afindic.c: Include `afcjk.h'
180 earlier.
181
182 * src/sfnt/sfobjs.c (sfnt_init_face): Put `memory' variable into
183 TT_CONFIG_OPTION_GX_VAR_SUPPORT block.
184 (sfnt_done_face): Protect some code with
185 TT_CONFIG_OPTION_GX_VAR_SUPPORT.
186
187 * src/sfnt/ttsbit.c (tt_face_load_sbix_image): Remove compiler
188 warning.
189
190 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Put `tmp' variable
191 into TT_USE_BYTECODE_INTERPRETER block.
192
193 (tt_loader_init): Put `error' variable into
194 TT_USE_BYTECODE_INTERPRETER block.
195
1962017-03-17 Werner Lemberg <wl@gnu.org>
197
Werner Lemberge5595782017-03-17 21:34:08 +0100198 Fix preprocessor warning.
199
200 * devel/ftoption.h, include/freetype/config/ftoption.h: Test whether
201 TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined before checking its
202 value.
203
2042017-03-17 Werner Lemberg <wl@gnu.org>
205
Werner Lembergbffb7fe2017-03-17 07:52:30 +0100206 `make multi' fixes; compiler warnings.
207
208 * src/base/ftsnames.c: Include FT_INTERNAL_DEBUG_H.
209
210 * src/cff/cffobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
211 FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
212
213 * src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
214 FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
215 (get_win_string, get_apple_string): Initialize `result'.
216
Dave Arnold0bf95b52017-03-17 07:22:55 +01002172017-03-17 Dave Arnold <darnold@adobe.com>
218
Dave Arnoldfdbef532017-03-17 07:28:11 +0100219 [cff] Fix potential bugs in default NDV for CFF2.
220
221 * src/cff/cffload.c (cff_blend_build_vector): Explicitly build blend
222 vector when `lenNDV' is zero; don't rely on zero-init.
223 Save `lenNDV' as part of cache key even when `lenNDV' is zero.
224
2252017-03-17 Dave Arnold <darnold@adobe.com>
226
Dave Arnold0bf95b52017-03-17 07:22:55 +0100227 [cff] Fix CFF2 stack allocation.
228
229 * src/cff/cffparse.c (cff_parser_init) add 1 for operator.
230
Werner Lembergd9ff6f22017-03-16 20:20:51 +01002312017-03-16 Werner Lemberg <wl@gnu.org>
232
233 * src/truetype/ttgxvar.c (tt_done_blend): Free `vvar_table'.
234
235 Reported as
236
237 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=883
238
Werner Lembergf87269c2017-03-15 08:03:16 +01002392017-03-15 Werner Lemberg <wl@gnu.org>
240
Werner Lemberg981c23b2017-03-15 11:35:26 +0100241 Remove clang compiler warnings (#50548).
242
243 * include/freetype/internal/tttypes.h (TT_FaceRec): Make
244 `var_postscript_prefix_len' unsigned.
245
246 * src/autofit/afwarp.c (af_warper_compute_line_best): Remove
247 redundant assignment.
248
249 * src/cff/cffload.c (cff_subfont_load): Add casts.
250
251 * src/cff/cffparse.c (cff_parse_blend): Remove redundant assignment.
252
253 * src/sfnt/sfdriver.c (fmix32, murmur_hash_3_128): Add `static'
254 keyword.
255 Add casts.
256 (fixed2float): Add cast.
257 (sfnt_get_var_ps_name): Make `p' always initialized.
258 Add casts.
259
260 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Add casts.
261
2622017-03-15 Werner Lemberg <wl@gnu.org>
263
Werner Lemberg3f920482017-03-15 09:18:22 +0100264 [ftfuzzer] Limit number of tested faces and instances.
265
266 This is inspired by the discussion in and analysis of
267
268 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=859
269
270 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Use only
271 up to 20 face indices.
272 Use only up to 20 instance indices.
273
2742017-03-15 Werner Lemberg <wl@gnu.org>
275
Werner Lembergf87269c2017-03-15 08:03:16 +0100276 * src/tools/ftfuzzer/ftfuzzer.cc: Improve readability; formatting.
277
Werner Lemberg4a32dce2017-03-14 19:32:12 +01002782017-03-14 Werner Lemberg <wl@gnu.org>
279
Werner Lemberg34010f72017-03-14 21:50:22 +0100280 [sfnt] Implement PS names for font instances [3/3].
281
282 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
283
284 * include/freetype/internal/tttypes.h (TT_FaceRec): New fields
285 `var_postscript_prefix' and `var_postscript_prefix_len'.
286
287 * src/sfnt/sfdriver.c: Include FT_TRUETYPE_IDS_H.
288 (sfnt_is_alphanumeric): New wrapperfunction for `ft_isalnum'.
289 (get_win_string, get_apple_string): Remove `const' from return
290 value.
291 (MAX_VALUE_DESCRIPTOR_LEN, MAX_PS_NAME_LEN): New macros.
292 (hexdigits): New array.
293 (sfnt_get_var_ps_name): New function, implementing Adobe TechNote
294 5902 to construct a PS name for a variation font instance.
295 (sfnt_get_ps_name): Call `sfnt_get_var_ps_name' for font instances.
296
297 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
298
299 * src/truetype/ttgxvar.c (tt_set_mm_blend): Reset
300 `face->postscript_name' to trigger recalculation for new instance
301 parameters.
302
3032017-03-14 Werner Lemberg <wl@gnu.org>
304
Werner Lemberg4fd9cc72017-03-14 19:40:50 +0100305 [sfnt] Implement PS names for font instances [2/3].
306
307 * src/sfnt/sfdriver.c (fix2float) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
308 New function to find the shortest representation of a 16.16
309 fractional number.
310
3112017-03-14 Werner Lemberg <wl@gnu.org>
312
Werner Lemberg4a32dce2017-03-14 19:32:12 +0100313 [sfnt] Implement PS names for font instances [1/3].
314
315 Add 128bit MurmurHash 3 function.
316
317 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
318
319 * src/sfnt/sfdriver.c (ROTL32): New macro.
320 (fmix32, murmur_hash_3_128): New functions.
321
Werner Lemberg447a0b62017-03-13 07:42:34 +01003222017-03-13 Werner Lemberg <wl@gnu.org>
323
324 [truetype] Ignore invalid MVAR tags.
325
326 Reported as
327
328 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838
329
330 * src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit
331 warning for invalid tags.
332 (tt_apply_mvar): Ignore invalid tags.
333
Werner Lemberg4a629222017-03-12 10:19:53 +01003342017-03-12 Werner Lemberg <wl@gnu.org>
335
Werner Lemberg5eb0fd52017-03-12 20:46:56 +0100336 [truetype] Store and use design coordinates also.
337
338 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
339 Add `normalizedcoords' argument.
340
341 * src/truetype/ttgxvar.h (GX_BlendRec): Add `coords' field to store
342 the design coordinates of the current instance.
343 Updated.
344
345 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Move functionality to...
346 (tt_set_mm_blend): ... New function.
347 Convert data in `normalizedcoords' array to `coords' array on
348 demand.
349 (TT_Set_Var_Design): Store argument data in `coords' array.
350 (TT_Get_Var_Design): Get data from `coords' array.
351 (tt_get_var_blend): Updated.
352 (tt_done_blend): Updated.
353
354 * src/cff/cffload.c, src/cff/cffload.h (cff_get_var_blend): Updated.
355
356 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
357
358 * src/cff/cffobjs.c (cff_face_init): Updated.
359
3602017-03-12 Werner Lemberg <wl@gnu.org>
361
Werner Lemberg4a629222017-03-12 10:19:53 +0100362 src/truetype/ttgxvar.[ch]: s/avar_checked/avar_loaded/.
363
Werner Lemberg7bbb91f2017-03-08 15:09:41 +01003642017-03-08 Werner Lemberg <wl@gnu.org>
365
366 [sfnt] Another fix for buggy variation fonts.
367
368 Reported as
369
370 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=759
371
372 * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
373 instances to zero for `CFF' fonts table, ensure that there is no
374 `CFF2' present also (which gets priority).
375
Werner Lemberg77930972017-03-07 17:27:58 +01003762017-03-07 Werner Lemberg <wl@gnu.org>
377
378 [sfnt] Improve handling for buggy variation fonts.
379
380 Reported as
381
382 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=738
383
384 * src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
Werner Lemberg34010f72017-03-14 21:50:22 +0100385 instances to zero for `CFF' fonts table, ensure that there is no
386 `glyf' table present also (which gets priority).
Werner Lemberg77930972017-03-07 17:27:58 +0100387
Werner Lemberg27fee7f2017-03-06 20:45:44 +01003882017-03-06 Werner Lemberg <wl@gnu.org>
389
390 [sfnt, truetype] Always provide default instance.
391
392 As documented in the OpenType specification, an entry for the
393 default instance may be omitted in the named instance table. In
394 particular this means that even if there is no named instance table
395 in the font we actually do have a named instance, namely the default
396 instance.
397
398 For consistency, we always want the default instance in our list of
399 named instances. If it is missing, we try to synthesize it.
400
401 * src/sfnt/sfobjs.c (sfnt_init_face): Check whether the default
402 instance is in the table of named instances. Otherwise adjust
403 number of instances.
404
405 * src/truetype/ttgxvar.c: Include FT_TRUETYPE_IDS_H.
406 (TT_Get_MM_Var): Use `face->root.style_flags' as the number of named
407 instances.
408 Sythesize a named instance entry if necessary.
409 (tt_done_blend): Free `normalized_stylecoords'.
410
Werner Lembergc1b000d2017-03-05 20:23:35 +01004112017-03-05 Werner Lemberg <wl@gnu.org>
412
413 [sfnt] Remove redundant code.
414
415 * src/sfnt/sfobjs.c (sfnt_init_face): Remove second test for
416 `num_instances', which will always succeed.
417
Werner Lemberg588e38e2017-03-04 11:04:24 +01004182017-03-04 Werner Lemberg <wl@gnu.org>
419
Werner Lemberg0c7fb432017-03-05 19:06:41 +0100420 [sfnt] Add `get_name_id' service.
421
422 * include/freetype/internal/sfnt.h (TT_Get_Name_ID_Func): New
423 typedef.
424 (SFNT_Interface): Add `get_name_id' field.
425 (FT_DEFINE_SFNT_INTERFACE): Updated.
426
427 * src/sfnt/sfdriver.c (search_name_id): Rename to...
428 (sfnt_get_name_id): ... this.
429 (sfnt_get_ps_name, sfnt_interface): Udpated.
430
4312017-03-04 Werner Lemberg <wl@gnu.org>
432
Werner Lemberg588e38e2017-03-04 11:04:24 +0100433 [truetype] Make `TT_Set_MM_Blend' set named instance index.
434
435 * src/truetype/ttgxvar.h (GX_Blend): New array
436 `normalized_stylecoords'.
437
438 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Allocate and fill
439 `normalized_stylecoords'.
440 (TT_Set_MM_Blend): Check instance tuple and adjust `face_index'
441 accordingly.
442
Werner Lemberg47176962017-03-02 21:42:14 +01004432017-03-02 Werner Lemberg <wl@gnu.org>
444
445 [truetype] Split off designer/normalized conversion routines.
446
447 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Split off conversion
448 code designer->normalized coordinates to...
449 (ft_var_to_normalized): ... New function.
450 (TT_Get_Var_Design): Split off conversion code normalized->designer
451 coordinates to...
452 (ft_var_to_design): ... New function.
453
4542017-02-28 Werner Lemberg <wl@gnu.org>
Werner Lembergf0cee1a2017-02-23 08:23:39 +0100455
Werner Lembergb553fcb2017-02-28 15:11:21 +0100456 [sfnt] Further generalize `sfnt_get_ps_name'; report invalid data.
457
458 * src/sfnt/sfdriver.c (sfnt_ps_map): New array.
459 (sfnt_is_postscript): New function.
460 (char_type_func): New typedef.
461 (get_win_string, get_apple_string): Add argument to specify
462 character checking function.
463 Add argument whether argument checking failures should be reported.
464 Update callers.
465 (search_name_id): Fix return value.
466
4672017-02-23 Werner Lemberg <wl@gnu.org>
468
Werner Lembergb653a232017-02-26 11:23:07 +0100469 [sfnt] Split off another bit of `sfnt_get_ps_name'.
470
471 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
472 functionality into...
473 (search_name_id): ... New function.
474
4752017-02-23 Werner Lemberg <wl@gnu.org>
476
Werner Lembergc1abd6a2017-02-23 22:58:14 +0100477 [sfnt] Modularize `sfnt_get_ps_name'.
478
479 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
480 functionality into...
481 (IS_WIN, IS_APPLE): ... New macros.
482 (get_win_string, get_apple_string): ... New functions.
483
4842017-02-23 Werner Lemberg <wl@gnu.org>
485
Werner Lemberg01f315f2017-02-23 14:24:01 +0100486 [truetype] Minor improvement.
487
488 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
489 load_truetype_glyph): Remove unnecessary tests.
490
4912017-02-23 Werner Lemberg <wl@gnu.org>
492
Werner Lembergf0cee1a2017-02-23 08:23:39 +0100493 * include/freetype/internal/tttypes.h (TT_Face): s/isCFF2/is_cff2/.
494
495 For orthogonality with other structure field names.
496
497 Update all users.
498
Alexei Podtelezhnikov761d9e42017-02-22 22:41:36 -05004992017-02-22 Alexei Podtelezhnikov <apodtele@gmail.com>
500
501 * src/smooth/ftgrays.c (gray_hline): Improve code.
502
Dominik Röttschesb3105342017-02-20 12:29:59 +01005032017-02-20 Dominik Röttsches <drott@google.com>
504
505 Fix some `ttnameid.h' entries (#50313).
506
507 * include/freetype/ttnameid.h:
508 s/TT_MS_LANGID_SPANISH_INTERNATIONAL_SORT/TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT/,
509 s/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIA/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN/.
510
Werner Lembergca1486c2017-02-20 08:55:26 +01005112017-02-20 Werner Lemberg <wl@gnu.org>
512
Werner Lemberge7067982017-02-20 09:15:13 +0100513 [cff] Finish support for `random' operator.
514
515 * src/cff/cfftypes.h (CFF_SubFontRec): Add `random' field.
516
517 * src/cff/cffobjs.c: Updated.
518 (cff_driver_init): Initialize random seed value.
519
520 * src/cff/cffload.c (cff_random): New function.
521 (cff_subfont_load): Add `face' argument.
522 Update all callers.
523 Initialize random number generator with a proper seed value.
524 (cff_font_load): Add `face' argument.
525 Update all callers.
526
527 * src/cff/cffload.h: Updated.
528
529 * src/cff/cf2intrp.c (CF2_FIXME): Removed.
530 (cf2_interpT2CharString) <cf2_escRANDOM>: Implement opcode.
531
532 * src/cff/cffgload.c (cff_decoder_parse_charstrings): Don't
533 initialize random seed value.
534 <cff_op_random>: Use new random seed framework.
535
5362017-02-20 Werner Lemberg <wl@gnu.org>
537
Werner Lemberg156b30b2017-02-20 09:06:22 +0100538 [cff] Sanitize `initialRandomSeed'.
539
540 * src/cff/cffload.c (cff_load_private_dict): Make
541 `initial_random_seed' value always positive.
542
5432017-02-20 Werner Lemberg <wl@gnu.org>
544
Werner Lemberg753e1132017-02-20 09:01:14 +0100545 [cff] Introduce `random-seed' property (2/2).
546
547 * src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
548 (open_face): Initialize `face->internal->random_seed'.
549 (FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.
550
551 * src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
552 property.
553
5542017-02-20 Werner Lemberg <wl@gnu.org>
555
Werner Lembergca1486c2017-02-20 08:55:26 +0100556 [cff] Introduce `random-seed' property (1/2).
557
558 We need this for support of the `random' operator.
559
560 * include/freetype/ftcffdrv.h (FT_PARAM_TAG_RANDOM_SEED): New macro.
561
562 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
563 field `random_seed'.
564
565 * src/cff/cffobjs.h (CFF_DriverRec): New field `random_seed'.
566
Werner Lemberg467b0262017-02-18 10:42:48 +01005672017-02-17 Werner Lemberg <wl@gnu.org>
568
569 Remove clang warnings.
570
571 * src/autofit/aflatin.c (af_latin_sort_blue): Add missing `static'
572 keyword.
573
574 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
575 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
576 Initialize some variables.
577
Nikolaus Waxweiler2e951982017-02-16 20:45:45 +01005782017-02-16 Nikolaus Waxweiler <madigens@gmail.com>
579 Werner Lemberg <wl@gnu.org>
580
Nikolaus Waxweiler2b0ac182017-02-18 10:42:23 +0100581 Add face property for stem darkening.
582
583 * include/freetype/ftautoh.h (FT_PARAM_TAG_STEM_DARKENING): New
584 macro.
585
586 * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
587 `no_stem_darkening' field.
588
589 * src/autofit/afloader.c (af_loader_load_glyph),
590 src/autofit/afmodule.c (af_property_set): Updated.
591
592 * src/base/ftobjs.c: Include FT_AUTOHINTER_H.
593 (ft_open_face_internal): Updated.
594 (FT_Face_Properties): Handle FT_PARAM_TAG_STEM_DARKENING.
595
596 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Updated.
597
598 * src/cff/cffdrivr.c (cff_property_set): Updated.
599
6002017-02-16 Nikolaus Waxweiler <madigens@gmail.com>
601 Werner Lemberg <wl@gnu.org>
602
Nikolaus Waxweiler2e951982017-02-16 20:45:45 +0100603 Add face property for LCD filter weights.
604
605 * include/freetype/ftlcdfil.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS,
606 FT_LCD_FILTER_FIVE_TAPS): New macros.
607 (FT_LcdFiveTapFilter): New typedef.
608
609 * include/freetype/ftobjs.h (FT_Face_InternalRec)
610 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add `lcd_weights' field.
611 (FT_Bitmap_LcdFilterFunc): Change third argument to weights array.
612 (ft_lcd_filter_fir): New prototype.
613 (FT_LibraryRec): Updated.
614
615 * src/base/ftlcdfil.c (_ft_lcd_filter_fir): Renamed to...
616 (ft_lcd_filter_dir): ... this base function.
617 Updated.
618 (_ft_lcd_filter_legacy): Updated.
619 (FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated.
620
621 * src/base/ftobjs.c (ft_open_face_internal): Updated.
622 (FT_Face_Properties): Handle FT_PARAM_TAG_LCD_FILTER_WEIGHTS.
623
624 * src/smooth/ftsmooth.c (ft_smooth_render_generic)
Alexei Podtelezhnikov7d7aae12017-03-07 22:21:26 -0500625 [FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Handle LCD weights from
Nikolaus Waxweiler2e951982017-02-16 20:45:45 +0100626 `FT_Face_Internal'.
627
Nikolaus Waxweiler64cdee72017-02-15 08:06:35 +01006282017-02-14 Nikolaus Waxweiler <madigens@gmail.com>
629 Werner Lemberg <wl@gnu.org>
630
631 Add new function `FT_Face_Properties'.
632
633 This commit provides the framework, to be filled with something
634 useful in the next commits.
635
636 * include/freetype/freetype.h (FT_Face_Properties): Declare.
637
638 * src/base/ftobjs.c (FT_Face_Properties): New function.
639
Werner Lemberg319125d2017-02-13 09:34:17 +01006402017-02-13 Werner Lemberg <wl@gnu.org>
641
642 [autofit] Prevent overlapping blue zones.
643
644 Problem reported as
645
646 https://github.com/google/fonts/issues/632
647
648 The font in question (Nunito) has values 705 and 713 for the
649 reference and overshoot values, respectively, of the first blue
650 zone. Blue zone 2, however, has value 710 for both the reference
651 and overshoot. At 12ppem, reference and overshoot of blue zone 0
652 becomes 8px, while blue zone 2 becomes 9px.
653
654 A peculiarity of this font is that the tops of isolated vertical
655 stems like `N' have a slight overshoot also. The auto-hinter tries
656 to find the nearest blue zone using the *original* coordinates. For
657 vertical stems, this is value 713. For normal horizontal tops like
658 in character `E', this is value 710. Since value 713 is mapped to
659 8px but value 710 to 9px, `N' and similar characters are one pixel
660 higher than `E', which looks very bad.
661
662 This commit sanitizes blue zones to avoid such a behaviour.
663
664 * src/autofit/aflatin.c (af_latin_sort_blue): New function.
665 (af_latin_metrics_init_blues): Sort blue values and remove overlaps.
666
Alexei Podtelezhnikovfcd47b32017-02-12 23:07:29 -05006672017-02-12 Alexei Podtelezhnikov <apodtele@gmail.com>
668
669 * src/smooth/ftgrays.c (gray_sweep): Improve code.
670
Werner Lembergfaa3c882017-02-06 13:13:02 +01006712017-02-06 Werner Lemberg <wl@gnu.org>
672
673 [truetype] Implement `VVAR' table support.
674
675 * src/truetype/ttgxvar.h (GX_HVarTable): Renamed to...
676 (GX_HVVarTable): ...This.
677 (GX_Blend): Add fields for `VVAR' table handling.
678 Other minor updates.
679
680 * src/truetype/ttgxvar.c (ft_var_load_hvar): Renamed to...
681 (ft_var_load_hvvar): ...This.
682 Handle VVAR loading also (controlled by an additional parameter).
683 (tt_hadvance_adjust): Renamed to...
684 (tt_hvadvance_adjust): ...This.
685 Handle application of advance height also (controlled by an
686 additional parameter).
687 (tt_hadvance_adjust, tt_vadvance_adjust): Wrappers for
688 `tt_hvadvance_adjust'.
689
690 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
691
Werner Lemberg1dee4bf2017-02-05 08:33:10 +01006922017-02-05 Werner Lemberg <wl@gnu.org>
693
694 [autofit] Use better blue zone characters for lowercase latin.
695
696 The number of lowercase characters for computing the top flat blue
697 zone value was too small (in most cases only `x' and `z'). If one
698 of the two characters has a large serif, say, it can happen that
699 FreeType must select between two different values, having a 50%
700 chance to use the wrong one. As a result, rendering at larger PPEM
701 values could yield uneven lowercase glyph heights.
702
703 Problem reported by Christoph Koeberlin <christoph@koe.berlin>.
704
705 * src/autofit/afblue.dat (AF_BLUE_STRING_LATIN_SMALL): Replaced
706 with...
707 (AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_STRING_LATIN_SMALL_BOTTOM):
708 ... New, extended sets.
709 (AF_BLUE_STRINGSET_LATN): Updated.
710
711 * src/autofit/afblue.c, scr/autofit/afblue.h: Regenerated.
712
Werner Lemberg79042892017-02-04 16:08:08 +01007132017-02-04 Werner Lemberg <wl@gnu.org>
714
Werner Lemberg1c513fb2017-02-04 20:30:40 +0100715 Make `freetype-config' a wrapper of `pkg-config' if possible.
716
717 Based on ideas taken from
718
719 http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
720 http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch
721
722 * builds/unix/freetype-config.in: Rewritten. Use `pkg-config' to
723 set output variables if program is available.
724
725 * docs/CHANGES, docs/freetype-config.1: Updated.
726
7272017-02-04 Werner Lemberg <wl@gnu.org>
728
Werner Lemberg79042892017-02-04 16:08:08 +0100729 * builds/unix/unix-def.in (freetype-config): Fix permissions.
730
Werner Lemberg5a7f2ff2017-02-03 08:31:18 +01007312017-02-03 Werner Lemberg <wl@gnu.org>
732
Werner Lemberg0a1169f2017-02-03 19:38:20 +0100733 * src/autofit/afglobal.c (af_face_globals_free): Erase useless code.
734
7352017-02-03 Werner Lemberg <wl@gnu.org>
736
Werner Lemberg5a7f2ff2017-02-03 08:31:18 +0100737 * include/freetype/ftgasp.h (FT_GASP_SYMMETRIC_GRIDFIT): Fix value.
738
739 Reported by Behdad.
740
Werner Lembergdadc50a2017-02-02 07:13:29 +01007412017-02-02 Werner Lemberg <wl@gnu.org>
742
Werner Lemberge6699592017-02-02 11:38:04 +0100743 [truetype] Fix MVAR post-action handling.
744
745 Reported as
746
747 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=509
748
749 * src/truetype/ttobjs.c (tt_size_reset): Do nothing for CFF2. This
750 is important to make `tt_size_reset_iterator' (called in
751 `tt_apply_mvar') always work.
752
7532017-02-02 Werner Lemberg <wl@gnu.org>
754
Werner Lembergdadc50a2017-02-02 07:13:29 +0100755 Make compilation with FT_CONFIG_OPTION_PIC work again.
756
757 All code committed here is guarded with `FT_CONFIG_OPTION_PIC'.
758
759 * include/freetype/internal/services/svmetric.h
760 (FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Remove trailing semicolon.
761
762 * src/autofit/aflatin.c (af_latin_hints_compute_edges,
763 af_latin_hint_edges): Provide `globals' variable.
764
765 * src/autofit/afloader.c (af_loader_load_glyph): Remove shadowing
766 variable.
767
768 * src/autofit/afmodule.c (AF_SCRIPT_CLASSES_GET,
769 AF_STYLE_CLASSES_GET): Redefine.
770
771 * src/autofit/aftypes.h (AF_DEFINE_WRITING_SYSTEM_CLASS): Fix typo.
772
773 * src/cff/cffparse.c (CFF_FIELD_BLEND): Provide it.
774
775 * src/cff/cffpic.h (CffModulePIC): Fix typo.
776
Alexei Podtelezhnikov2ca5b072017-01-31 23:13:50 -05007772017-01-31 Alexei Podtelezhnikov <apodtele@gmail.com>
778
779 * src/smooth/ftgrays.c (gray_render_scanline): Improve code.
780
Werner Lemberg31f80552017-01-31 08:10:04 +01007812017-01-31 Werner Lemberg <wl@gnu.org>
782
Werner Lembergfa437d82017-01-31 23:06:38 +0100783 [cff] Provide metrics variation service interface (#50196).
784
785 Only now I've got an OTF with an HVAR table for testing...
786
787 The code in `ftmm.c' uses `FT_FACE_LOOKUP_SERVICE' to get the
788 metrics variations interface. However, this didn't work with
789 `FT_FACE_FIND_GLOBAL_SERVICE' used in `sfnt_init_face'.
790
791 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
792 (cff_hadvance_adjust, cff_metrics_adjust): Wrapper functions for
793 metric service functions from the `truetype' module.
794 (cff_service_metrics_variations): New service.
795 (cff_services): Updated.
796
797 * src/cff/cffpic.h (CFF_SERVICE_METRICS_VAR_GET): New macro.
798 [FT_CONFIG_OPTION_PIC]: Synchronize code.
799
800 * src/sfnt/sfobjs.c (sfnt_init_face): Replace call to
801 FT_FACE_FIND_GLOBAL_SERVICE with `ft_module_get_service' to always
802 load the service from the `truetype' module.
803
8042017-01-31 Werner Lemberg <wl@gnu.org>
805
Werner Lemberg40589392017-01-31 19:11:56 +0100806 Add framework to support services with 9 functions.
807
808 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC9):
809 New macro.
810
8112017-01-31 Werner Lemberg <wl@gnu.org>
812
Werner Lemberg1e550602017-01-31 18:47:10 +0100813 [base] Fix error handing in MM functions.
814
815 * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
816 FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
817 Implement it.
818
8192017-01-31 Werner Lemberg <wl@gnu.org>
820
Werner Lemberge80e4d82017-01-31 08:32:07 +0100821 [truetype] Fix sanity check for `gvar' table (#50184).
822
823 * src/truetype/ttgxvar.c (ft_var_load_gvar): There might be missing
824 variation data for some glyphs.
825
8262017-01-31 Werner Lemberg <wl@gnu.org>
827
Werner Lemberg31f80552017-01-31 08:10:04 +0100828 [autofit] Avoid uninitialized jumps (#50191).
829
830 * src/autofit/afcjk.c (af_cjk_metrics_check_digits),
831 src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize
832 `advance'.
833
Werner Lemberg464b16b2017-01-27 08:45:46 +01008342017-01-27 Werner Lemberg <wl@gnu.org>
835
836 s/GB2312/PRC/.
837
838 * include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
839 (FT_ENCODING_GB2312): Deprecated.
840
841 * include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
842 (TT_MS_ID_GB2312): Deprecated.
843
844 * src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.
845
846 * docs/CHANGES: Updated.
847
Werner Lemberg939df422017-01-26 21:41:38 +01008482017-01-26 Werner Lemberg <wl@gnu.org>
849
Werner Lembergf4253362017-01-27 00:06:52 +0100850 [base] Add `FT_Get_Sfnt_LangTag' function.
851
852 * include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
853 (FT_Get_Sfnt_LangTag): New declaration.
854
855 * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New funtion.
856
857 * docs/CHANGES: Updated.
858
8592017-01-26 Werner Lemberg <wl@gnu.org>
860
Werner Lemberg939df422017-01-26 21:41:38 +0100861 [sfnt] Support `name' table format 1.
862
863 * include/freetype/internal/tttypes.h (TT_LangTagRec): New
864 structure.
865 (TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.
866
867 * src/sfnt/ttload.c (tt_face_load_name): Add support for language
868 tags.
869 Reduce array size of name strings in case of invalid entries.
870 (tt_face_free_name): Updated.
871
872 * docs/CHANGES: Updated.
873
Werner Lembergf4e56962017-01-25 15:08:41 +01008742017-01-25 Werner Lemberg <wl@gnu.org>
875
876 [sfnt] s/TT_NameEntry/TT_Name/.
877
878 * include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
879 to...
880 (TT_NameRec): This.
881 (TT_NameTableRec): Updated.
882
883 * src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.
884
885 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated.
886
887 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
888 tt_name_entry_ascii_from_other): Renamed to...
889 (tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
890 respectively.
891 (TT_NameEntry_ConvertFunc): Renamed to...
892 (TT_Name_ConvertFunc): This.
893 (tt_face_get_name): Updated.
894
895 * src/sfnt/ttload.c (tt_face_load_name, tt_face_free_names):
896 Updated.
897
Werner Lemberg141f0ea2017-01-24 17:00:36 +01008982017-01-24 Werner Lemberg <wl@gnu.org>
899
Werner Lemberg14397122017-01-24 20:48:50 +0100900 [sfnt] Fix Postscript name service for symbol fonts.
901
902 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
903 entries also.
904
9052017-01-24 Werner Lemberg <wl@gnu.org>
906
Werner Lemberg141f0ea2017-01-24 17:00:36 +0100907 [truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.
908
909 * include/freetype/ftsnames.h
910 (FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
911 FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
912 (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
913 FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.
914
915 * include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
916 TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
917 (TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
918 Deprecated.
919
920 * src/sfnt/sfobjs.c (sfnt_load_face): Updated.
921
922 * docs/CHANGES: Updated.
923
Werner Lemberg79d52b92017-01-23 07:43:56 +01009242017-01-23 Werner Lemberg <wl@gnu.org>
925
Werner Lemberg693f56f2017-01-23 12:53:18 +0100926 [base] Add `FT_Set_Default_Properties' (#49187).
927
928 * include/freetype/ftmodapi.h: Add declaration.
929
930 * src/base/ftinit.c (ft_set_default_properties): Renamed to...
931 (FT_Set_Default_Properties): ... this.
932 (FT_Init_FreeType): Updated.
933
934 * docs/CHANGES: Updated.
935
9362017-01-23 Werner Lemberg <wl@gnu.org>
937
Werner Lembergf5020922017-01-23 11:47:40 +0100938 [truetype] Minor updates for OpenType 1.8.1.
939
940 * src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
Alexei Podtelezhnikov983fb0d2017-01-24 23:56:59 -0500941 removed from the specification; it is now reserved.
Werner Lembergf5020922017-01-23 11:47:40 +0100942
943 * src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
944 (GX_FVar_Head): Remove `countSizePairs'; the corresponding data
945 field in the `MVAR' table is now reserved.
946 (fvar_fields): Updated.
947
9482017-01-23 Werner Lemberg <wl@gnu.org>
949
Werner Lemberg79d52b92017-01-23 07:43:56 +0100950 [truetype] Avoid segfault for invalid variation data.
951
952 * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
953 `itemCount' is not zero.
954
955 Reported as
956
957 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441
958
Werner Lemberg43061d62017-01-20 10:16:38 +01009592017-01-20 Werner Lemberg <wl@gnu.org>
960
961 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
962
Werner Lembergba6f3e12017-01-17 11:50:09 +01009632017-01-17 Werner Lemberg <wl@gnu.org>
964
965 * include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
966
967 (TT_APPLE_ID_FULL_UNICODE): New macro.
968
969 (TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
970 TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
971 TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
972 TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
973 TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
974 TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
975 TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
976 TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
977 TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
978 TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
979 TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
980 macros.
981
982 (TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
983
984 (TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
985 TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
986 TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
987 TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
988 TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
989 TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
990 TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
991 TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
992 TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
993 TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
994 TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
995 TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
996 TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
997 TT_MS_LANGID_UIGHUR_PRC): New aliases.
998
999 Remove commented out code.
1000
1001 (TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
1002 TT_NAME_ID_VARIATIONS_PREFIX): New macros.
1003
1004 (HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
1005 years), use guarded long macros by default and define short versions
1006 as aliases for the long ones.
1007
Werner Lemberg322b3be2017-01-15 13:57:25 +010010082017-01-15 Werner Lemberg <wl@gnu.org>
1009
1010 * src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
1011 also.
1012
Werner Lemberg8ab08cf2017-01-11 10:05:27 +010010132017-01-11 Werner Lemberg <wl@gnu.org>
1014
Werner Lembergc5298852017-01-12 08:42:55 +01001015 * src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
1016
10172017-01-11 Werner Lemberg <wl@gnu.org>
1018
Werner Lemberg723aafb2017-01-11 14:21:26 +01001019 [truetype] Actually use metrics variation service.
1020
1021 * src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1022 (ft_face_get_mvar_service): New auxiliary function to look up
1023 metrics variation service.
1024 (FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
1025 FT_Set_Var_Blend_Coordinates): Call metrics variation service.
1026
1027 * src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
1028 named instances.
1029
10302017-01-11 Werner Lemberg <wl@gnu.org>
1031
Werner Lembergd718ac42017-01-11 14:12:34 +01001032 [truetype] Provide metrics variation service.
1033
1034 * include/freetype/internal/services/svmetric.h
1035 (FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
1036
1037 * src/truetype/ttgxvar.c: Include FT_LIST_H.
1038 (tt_size_reset_iterator): New auxiliary function for...
1039 (tt_apply_var): New function.
1040
1041 * src/truetype/ttgxvar.h: Updated.
1042
1043 * src/truetype/ttdriver.c (tt_service_metrics_variations): Add
1044 `tt_apply_mvar'.
1045
1046 * include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
1047 variation service.
1048
10492017-01-11 Werner Lemberg <wl@gnu.org>
1050
Werner Lemberg07ee1d22017-01-11 12:50:51 +01001051 [truetype] Parse `MVAR' table.
1052
1053 * src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
1054 (GX_Value, GX_MVarTable): New structures.
1055 (GX_Blend): Add it.
1056
1057 * src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
1058 GX_GASP_CASE): New macros.
1059 (ft_var_get_value_pointer): New auxiliary function to get a pointer
1060 to a value from various SFNT tables already stored in `TT_Face'.
1061 (ft_var_load_mvar): New function.
1062 (TT_Get_MM_Var): Call it.
1063 (tt_done_blend): Updated.
1064
10652017-01-11 Werner Lemberg <wl@gnu.org>
1066
Werner Lemberg8ab08cf2017-01-11 10:05:27 +01001067 [truetype] More preparations for MVAR support.
1068
1069 * src/truetype/ttobjs.c (tt_size_reset): Add argument to make
1070 function only recompute ascender, descender, and height.
1071
1072 * src/truetype/ttobjs.h: Updated.
1073
1074 * src/truetype/ttdriver.c (tt_size_select, tt_size_request):
1075 Updated.
1076
Werner Lembergf837a502017-01-09 10:49:03 +010010772017-01-09 Werner Lemberg <wl@gnu.org>
1078
Werner Lemberg7ccca6a2017-01-09 19:54:44 +01001079 [pcf] Disable long family names by default.
1080
1081 * include/freetype/config/ftoption.h
1082 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
1083
10842017-01-09 Werner Lemberg <wl@gnu.org>
1085
Werner Lemberg08fd2502017-01-09 11:30:32 +01001086 [pcf] Make long family names configurable.
1087
1088 The change from 2016-09-29 was too radical (except for people using
1089 the openSuSE GNU/Linux distribution). To ameliorate the situation,
1090 PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
1091 the feature; if set, a new PCF property option
1092 `no-long-family-names' can be used to switch this feature off.
1093
1094 * include/freetype/config/ftoption.h, devel/ftoption.h
1095 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
1096
1097 * include/freetype/ftpcfdrv.h: New header file (only containing
1098 comments currently, used for building the documentation).
1099
1100 * include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
1101
1102 * src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
1103
1104 * src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
1105 FT_PCF_DRIVER_H.
1106 (pcf_property_set, pcf_property_get): New functions.
1107 (pcf_service_properties): New service.
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05001108 (pcf_services): Updated.
Werner Lemberg08fd2502017-01-09 11:30:32 +01001109 (pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
1110 `no_long_family_names'.
1111
1112 * src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
1113 and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
1114
1115 * docs/CHANGES: Updated.
1116
11172017-01-09 Werner Lemberg <wl@gnu.org>
1118
Werner Lembergf837a502017-01-09 10:49:03 +01001119 [pcf] Introduce a driver structure.
1120
1121 To be filled later on with something useful.
1122
1123 * src/pcf/pcf.h (PCF_Driver): New structure.
1124
1125 * src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
1126 functions.
1127 (pcf_driver_class): Updated.
1128
Werner Lemberg6812f172017-01-08 07:33:05 +010011292017-01-08 Werner Lemberg <wl@gnu.org>
1130
Werner Lemberg469ced72017-01-08 09:28:34 +01001131 [truetype] Again some GX code shuffling.
1132
1133 We need this later on for MVAR also.
1134
1135 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
1136 an item store variation delta into...
1137 (ft_var_get_item_delta): ...new function.
1138
11392017-01-08 Werner Lemberg <wl@gnu.org>
1140
Werner Lemberg6812f172017-01-08 07:33:05 +01001141 [truetype] Adjust font variation flags for MVAR.
1142
1143 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
1144 Remove all flags related to MVAR; replace it with...
1145 (TT_FACE_FLAG_VAR_MVAR): ...this new macro.
1146 (TT_Face): Remove `mvar_support' field (which was still unused).
1147
Werner Lemberg8b755442017-01-06 11:47:55 +010011482017-01-06 Werner Lemberg <wl@gnu.org>
1149
Werner Lemberg02919132017-01-07 07:45:28 +01001150 [truetype] More GX code shuffling.
1151
1152 We need this later on for MVAR also.
1153
1154 * src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
1155 variation store into...
1156 (ft_var_done_item_variation_store): ...new function.
1157
11582017-01-06 Werner Lemberg <wl@gnu.org>
1159
Werner Lembergfb90f002017-01-06 22:23:52 +01001160 [truetype] More generalization of GX stuff.
1161
1162 We need this later on for MVAR also.
1163
1164 * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
1165 parameters for delta-set index mapping and item variation store.
1166 (ft_var_load_item_variation_store): Add parameter for item variation
1167 store.
1168 s/hvarData/varData/.
1169 Move allocation of `hvar_table' to...
1170 (ft_var_load_hvar): ...this function.
1171 Updated.
1172
11732017-01-06 Werner Lemberg <wl@gnu.org>
1174
Werner Lemberg0bd01122017-01-06 21:32:49 +01001175 [truetype] Some GX structure renames for generalization.
1176
1177 We need this later on for MVAR also.
1178
1179 * src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
1180 (GX_ItemVarData): ...this.
1181 (GX_HVarRegion): Renamed to...
1182 (GX_VarRegion): ...this.
1183 (GX_HVStore): Renamed to...
1184 (GX_ItemVarStore): ...this.
1185 (GX_WidthMap): Renamed to...
1186 (GX_DeltaSetIdxMap): ...this.
1187
1188 (GX_HVarTable): Updated.
1189
1190 * src/truetype/ttgxvar.c: Updated.
1191
11922017-01-06 Werner Lemberg <wl@gnu.org>
1193
Werner Lemberg9c814702017-01-06 21:13:36 +01001194 [truetype] Code shuffling.
1195
Werner Lemberg02919132017-01-07 07:45:28 +01001196 * src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
1197 item variation store and delta set index mapping into...
Werner Lemberg9c814702017-01-06 21:13:36 +01001198 (ft_var_load_item_variation_store,
Werner Lemberg02919132017-01-07 07:45:28 +01001199 ft_var_load_delta_set_index_mapping): ...new functions.
Werner Lemberg9c814702017-01-06 21:13:36 +01001200
12012017-01-06 Werner Lemberg <wl@gnu.org>
1202
Werner Lemberg7e1cce52017-01-06 20:31:22 +01001203 [truetype] Add HVAR access without advance width map.
1204
1205 * src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
1206 `offsetToAdvanceWidthMapping' is zero.
1207 (tt_hadvance_adjust): Implement direct deltaSet access by glyph
1208 index.
1209
12102017-01-06 Werner Lemberg <wl@gnu.org>
1211
Werner Lemberg8b755442017-01-06 11:47:55 +01001212 [pcf] Revise driver.
1213
1214 This commit improves tracing and handling of malformed fonts. In
1215 particular, the changes to `pcf_get_properties' fix
1216
1217 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
1218
1219 * src/pcf/pcfread.c (tableNames): Use long names for better
1220 readability.
1221 (pcf_read_TOC): Allow at most 9 tables.
1222 (pcf_get_properties): Allow at most 256 properties.
1223 Limit strings array length to 256 * (65536 + 1) bytes.
1224 Better tracing.
1225 (pcf_get_metric): Trace metric data.
1226 (pcf_get_metrics): Allow at most 65536 metrics.
1227 Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
1228 potential overflow.
1229 Better tracing.
1230 (pcf_get_bitmaps): Allow at most 65536 bitmaps.
1231 Better tracing.
1232 (pcf_get_encodings, pcf_get_accel): Better tracing.
1233
1234 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
1235 These are now shown by `pcf_get_bitmaps'.
1236
Werner Lemberg025226a2017-01-04 07:45:44 +010012372017-01-04 Werner Lemberg <wl@gnu.org>
1238
Werner Lemberga7c2f442017-01-04 13:12:03 +01001239 * src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
1240
12412017-01-04 Werner Lemberg <wl@gnu.org>
1242
Werner Lembergc9d47722017-01-04 10:00:49 +01001243 [cff] More consistency checks for pure CFFs.
1244
1245 Reported as
1246
1247 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
1248
1249 * src/cff/cffload.c (cff_font_load): Check element number and size
1250 of Name and Top DICT indices.
1251
12522017-01-04 Werner Lemberg <wl@gnu.org>
1253
Werner Lemberg025226a2017-01-04 07:45:44 +01001254 [cff, truetype] Minor tracing improvement.
1255
1256 * src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
1257 (tt_face_init): Indent first tracing message from SFNT driver.
1258
Werner Lemberg248eaa42017-01-03 00:27:07 +010012592017-01-03 Werner Lemberg <wl@gnu.org>
1260
Werner Lemberg89824052017-01-03 09:46:19 +01001261 [truetype] Various minor fixes.
1262
1263 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
1264 size only if we do native hinting.
1265 (TT_Load_Glyph): Trace returned error code.
1266
1267 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
1268 returned error code.
1269 (tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
1270 invalid.
1271
12722017-01-03 Werner Lemberg <wl@gnu.org>
1273
Werner Lemberg624b6802017-01-03 09:42:41 +01001274 [sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
1275
1276 These tables are optional.
1277
1278 * src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
1279
12802017-01-03 Werner Lemberg <wl@gnu.org>
1281
Werner Lemberg69414e72017-01-03 06:53:13 +01001282 * src/cff/cffparse.c (cff_parse_num): Simplify.
1283
12842017-01-03 Werner Lemberg <wl@gnu.org>
1285
Werner Lemberg248eaa42017-01-03 00:27:07 +01001286 Various fixes for clang's undefined behaviour sanitizer.
1287
1288 * src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
1289 (cff_blend_doBlend): Don't left-shift negative numbers.
1290 Handle 5-byte numbers byte by byte to avoid alignment issues.
1291
Werner Lemberg69414e72017-01-03 06:53:13 +01001292 * src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
1293 byte to avoid alignment issues.
Werner Lemberg248eaa42017-01-03 00:27:07 +01001294
1295 * src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
1296 subrs.
1297
1298 * src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
1299
1300 * src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
1301 definition of `ft_get_adobe_glyph_index'.
1302
1303 * src/psnames/pstables.h: Regenerated.
1304
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05001305 * src/psnames/psmodule.c: Include `pstables.h' twice to get both
Werner Lemberg248eaa42017-01-03 00:27:07 +01001306 declaration and definition.
1307
1308 * src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
1309 casting.
1310
Werner Lemberg63765a82017-01-01 10:43:41 +010013112017-01-01 Werner Lemberg <wl@gnu.org>
1312
Werner Lembergbdec1622017-01-01 20:51:55 +01001313 [cff] Handle multiple `blend' operators in a row correctly.
1314
1315 Reported as
1316
1317 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
1318
1319 * src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
1320 pointers into `subFont->blend_stack' after reallocation.
1321
13222017-01-01 Werner Lemberg <wl@gnu.org>
1323
Werner Lemberg63765a82017-01-01 10:43:41 +01001324 [sfnt] Return correct number of named instances for TTCs.
1325
1326 Without this patch, requesting information for face index N returned
1327 the data for face index N+1 (or index 0).
1328
1329 * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
1330 for negative `face_instance_index' values.
1331
Werner Lemberge9a154e2016-12-31 21:41:08 +010013322016-12-31 Werner Lemberg <wl@gnu.org>
1333
Werner Lemberg24be60b2017-01-01 08:20:38 +01001334 */*: Use hex numbers for errors in tracing messages.
1335
13362016-12-31 Werner Lemberg <wl@gnu.org>
1337
Werner Lemberge9a154e2016-12-31 21:41:08 +01001338 [truetype] Check axis count in HVAR table.
1339
1340 Reported as
1341
1342 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
1343
1344 * src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
1345 (ft_var_load_avar): Fix tracing message.
1346
13472016-12-30 Werner Lemberg <wl@gnu.org>
Werner Lemberg069083c2016-12-30 21:16:46 +01001348
1349 * Version 2.7.1 released.
1350 =========================
1351
1352
1353 Tag sources with `VER-2-7-1'.
1354
1355 * docs/VERSION.TXT: Add entry for version 2.7.1.
1356
1357 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1358 builds/windows/vc2005/index.html,
1359 builds/windows/vc2008/freetype.vcproj,
1360 builds/windows/vc2008/index.html,
1361 builds/windows/vc2010/freetype.vcxproj,
1362 builds/windows/vc2010/index.html,
1363 builds/windows/visualc/freetype.dsp,
1364 builds/windows/visualc/freetype.vcproj,
1365 builds/windows/visualc/index.html,
1366 builds/windows/visualce/freetype.dsp,
1367 builds/windows/visualce/freetype.vcproj,
1368 builds/windows/visualce/index.html,
1369 builds/wince/vc2005-ce/freetype.vcproj,
1370 builds/wince/vc2005-ce/index.html,
1371 builds/wince/vc2008-ce/freetype.vcproj,
1372 builds/wince/vc2008-ce/index.html: s/2.7/2.7.1/, s/27/271/.
1373
1374 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
1375
1376 * builds/unix/configure.raw (version_info): Set to 19:0:13.
1377 * CMakeLists.txt (VERSION_PATCH): Set to 1.
1378
Werner Lemberg6b21d122016-12-30 10:00:54 +010013792016-12-30 Werner Lemberg <wl@gnu.org>
1380
Werner Lemberg8fb9d222016-12-30 19:51:37 +01001381 [ftfuzzer] Replace `rand' with an xorshift algorithm.
1382
1383 * src/tools/ftfuzzer/ftfuzzer.cc: Don't include `stdlib.h'.
1384 (Random): Implement and use a 32bit `xorshift' algorithm.
1385
13862016-12-30 Werner Lemberg <wl@gnu.org>
1387
Werner Lemberg6b21d122016-12-30 10:00:54 +01001388 [ftfuzzer] Restrict number of tested bitmap strikes.
1389
1390 Malformed fonts often have large values for the number of bitmap
1391 strikes, and FreeType doesn't check the validity of all bitmap
1392 strikes in advance.
1393
1394 Reported as
1395
1396 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=353
1397
1398 * src/tools/ftfuzzer/ftfuzzer.cc: Include `stdlib.h' for `rand'.
1399 (Random): Small class to provide n randomly selected numbers
Alexei Podtelezhnikovca472222017-01-17 23:45:08 -05001400 (without repetition) out of the value set [1,N].
Werner Lemberg6b21d122016-12-30 10:00:54 +01001401 (LLVMFuzzerTestOneInput): Use it to test only up to 10 bitmap
1402 strikes.
1403
Werner Lemberg346b1412016-12-29 06:03:40 +010014042016-12-29 Werner Lemberg <wl@gnu.org>
1405
Werner Lemberg7591bf12016-12-29 21:39:06 +01001406 [truetype] Variation font API stability issues.
1407
1408 Make some functions work before a call to `TT_Set_MM_Blend'.
1409
1410 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Exit immediately if
1411 we don't blend.
1412 (TT_Get_MM_Blend, TT_Get_Var_Design): Return default values if we
1413 don't blend.
1414
14152016-12-29 Werner Lemberg <wl@gnu.org>
1416
Werner Lemberg91fc3bd2016-12-29 21:34:46 +01001417 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis data.
1418
1419 Reported as
1420
1421 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=348
1422
14232016-12-29 Werner Lemberg <wl@gnu.org>
1424
Werner Lemberg18018512016-12-29 21:30:06 +01001425 [truetype] Tracing fixes.
1426
1427 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Emit correct
1428 information.
1429 (TT_Set_Var_Design): Fix typo.
1430 (TT_Get_Var_Design): Fix typos.
1431
14322016-12-29 Werner Lemberg <wl@gnu.org>
1433
Werner Lemberg84b0d992016-12-29 10:38:51 +01001434 */*: Use `0.5f' for tracing 16.16 numbers.
1435
14362016-12-29 Werner Lemberg <wl@gnu.org>
1437
Werner Lemberg346b1412016-12-29 06:03:40 +01001438 [pcf] Protect against gzip bombs.
1439
1440 Fix suggested by Kostya; reported as
1441
1442 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=345
1443
1444 * src/pcf/pcfread.c (pcf_read_TOC): Limit number of TOC entries to
1445 1024.
1446
Werner Lembergc4cd34a2016-12-28 08:33:35 +010014472016-12-28 Werner Lemberg <wl@gnu.org>
1448
Werner Lemberg6fb549d2016-12-28 22:23:33 +01001449 [psnames] Only declare, not define, data in `pstables.h' (#49949).
1450
1451 Pdfium includes `pstables.h' a second time; moving the definition
1452 from `pstables.h' to `psmodule.c' saves more than 60kByte data
1453 segment space for this case.
1454
1455 * src/tools/glnames.py (StringTable::dump,
1456 StringTable::dump_sublist, dump_encoding, dump_array): Emit
1457 additional code to only define tables if `DEFINE_PS_TABLES' is set.
1458
1459 * src/psnames/pstables.h: Regenerated.
1460 * src/psnames/psmodule.c (DEFINE_PS_TABLES): Define.
1461
14622016-12-28 Werner Lemberg <wl@gnu.org>
1463
Werner Lembergc4a1ef32016-12-28 21:22:45 +01001464 [cff] Catch `blend' op in non-variant fonts.
1465
1466 Reported as
1467
1468 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=334
1469
1470 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>: Don't
1471 allow `blend' op for non-variant fonts.
1472
14732016-12-28 Werner Lemberg <wl@gnu.org>
1474
Werner Lembergc4cd34a2016-12-28 08:33:35 +01001475 [cff] Better check of number of blends.
1476
1477 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>,
1478 src/cff/cffparse.c (cff_parse_blend): Compare number of blends with
1479 stack size.
1480
Werner Lemberge5e35562016-12-27 06:49:37 +010014812016-12-27 Werner Lemberg <wl@gnu.org>
1482
Werner Lemberg48fd5bb2016-12-27 10:20:23 +01001483 Documentation updates.
1484
1485 * docs/CHANGES: Add missing information.
1486
1487 * docs/formats.txt: Rewritten and updated.
1488
14892016-12-27 Werner Lemberg <wl@gnu.org>
1490
Werner Lemberge5e35562016-12-27 06:49:37 +01001491 [truetype, type1] Implement `FT_Get_Var_Design_Coordinates'.
1492
1493 * src/truetype/ttgxvar.c (TT_Get_Var_Design): Implement.
1494 (TT_Set_Var_Design): Fix tracing.
1495
1496 * src/type1/t1load.c (T1_Get_Var_Design): Implement.
1497
Werner Lemberg1fecdfe2016-12-24 07:50:45 +010014982016-12-24 Werner Lemberg <wl@gnu.org>
1499
Werner Lemberga300c1c2016-12-24 09:27:15 +01001500 * src/truetype/ttpload.c (tt_face_load_hdmx): Ignore `version'.
1501
1502 Problem reported by 張俊芝 <418092625@qq.com>.
1503
15042016-12-24 Werner Lemberg <wl@gnu.org>
1505
Werner Lembergd1db57c2016-12-24 09:05:16 +01001506 * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
1507
1508 Some fonts seem to have the `version' field in the wrong byte order.
1509
1510 Problem reported by 張俊芝 <418092625@qq.com>.
1511
15122016-12-24 Werner Lemberg <wl@gnu.org>
1513
Werner Lembergfde0b782016-12-24 08:17:19 +01001514 * src/truetype/ttpload.c (tt_face_load_loca): Sanitize table length.
1515
1516 This trivial fix allows us to accept more fonts.
1517
1518 Problem reported by 張俊芝 <418092625@qq.com>.
1519
15202016-12-24 Werner Lemberg <wl@gnu.org>
1521
Werner Lemberg1fecdfe2016-12-24 07:50:45 +01001522 * src/sfnt/sfobjs.c (sfnt_init_face): Fix tracing.
1523
Werner Lembergada82972016-12-22 08:25:42 +010015242016-12-22 Werner Lemberg <wl@gnu.org>
1525
Werner Lemberg18bd1762016-12-22 12:24:23 +01001526 * CMakeLists.txt: Make it work with cmake 2.8.11.2 (#49909).
1527
15282016-12-22 Werner Lemberg <wl@gnu.org>
1529
Werner Lemberg06d61b42016-12-22 10:43:46 +01001530 Ensure used preprocessor symbols are defined (#49790).
1531
1532 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
1533 include/freetype/config/ftconfig.h: Check `__GNUC__', `__IBMC__',
1534 and `__SUNPRO_C' correctly.
1535
15362016-12-22 Werner Lemberg <wl@gnu.org>
1537
Werner Lemberg7f733392016-12-22 10:12:17 +01001538 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Check `count'.
1539
1540 Reported as
1541
1542 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=308
1543
15442016-12-22 Werner Lemberg <wl@gnu.org>
1545
Werner Lembergb44e6c22016-12-22 08:30:15 +01001546 [cff] Protect against invalid `vsindex' and `blend' values.
1547
1548 Reported as
1549
1550 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=305
1551
1552 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVSINDEX,
1553 cf2_cmdBLEND>: Implement it.
1554
15552016-12-22 Werner Lemberg <wl@gnu.org>
1556
Werner Lembergada82972016-12-22 08:25:42 +01001557 [ftfuzzer] Always use Adobe CFF engine.
1558
1559 * src/tools/ftfuzzer/ftfuzzer.cc (FT_Global::FT_Global): Implement
1560 it.
1561
Werner Lemberg57a67332016-12-21 06:52:23 +010015622016-12-21 Werner Lemberg <wl@gnu.org>
1563
Werner Lembergd44daf92016-12-21 23:03:48 +01001564 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
1565
Werner Lemberg72091102016-12-21 23:46:29 +01001566 I should really stop coding late in the evening...
1567
1568 Thanks again to Ben for checking.
1569
15702016-12-21 Werner Lemberg <wl@gnu.org>
1571
Werner Lemberg8d37efb2016-12-22 20:48:28 +01001572 [autofit] Support variation fonts.
1573
1574 (This ChangeLog entry was added later on.)
1575
1576 * src/autofit/afglobal.c (af_face_globals_free): Remove useless
1577 code.
1578
1579 * src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
1580 * FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
1581 FT_Set_Var_Blend_Coordinates): Finalize
1582 auto-hinter data to enforce recomputation. Note that this is a
1583 brute-force method which should be improved.
1584
15852016-12-21 Werner Lemberg <wl@gnu.org>
1586
Werner Lemberg72091102016-12-21 23:46:29 +01001587 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
1588
Werner Lembergd44daf92016-12-21 23:03:48 +01001589 Don't apply deltas twice for non-phantom points.
1590
1591 Spotted by Ben Wagner.
1592
15932016-12-21 Werner Lemberg <wl@gnu.org>
1594
Werner Lemberge6a429e2016-12-21 20:27:48 +01001595 [cff, truetype] Another try for #49829.
1596
1597 * src/cff/cffdrivr.c: Don't include
1598 `FT_SERVICE_METRICS_VARIATIONS_H'.
1599 (cff_get_advances): Use `ttface->variation_support'.
1600
1601 * src/truetype/ttdriver.c (tt_get_advances): Use
1602 `ttface->variation_support'.
1603
1604 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
1605 load_truetype_glyph): Use `ttface->variation_support'.
1606
16072016-12-21 Werner Lemberg <wl@gnu.org>
1608
Werner Lemberg64a91132016-12-21 19:30:33 +01001609 [truetype, sfnt] Introduce font variation flags to `TT_Face'.
1610
1611 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
1612 New macros describing available functionality of various OpenType
1613 tables related to font variation.
1614 (TT_Face): New fields `variation_support' and `mvar_support',
1615 replacing and extending `use_fvar'.
1616
1617 * src/sfnt/sfobjs.c (sfnt_init_face, sfnt_load_face): Use
1618 `variation_support'.
1619
1620 * src/truetype/ttgxvar.c (ft_var_load_hvar): Set `variation_support'
1621 field.
1622 (TT_Vary_Apply_Glyph_Deltas): Updated.
1623
16242016-12-21 Werner Lemberg <wl@gnu.org>
1625
Werner Lemberg57a67332016-12-21 06:52:23 +01001626 [base] Improve sanity check for Mac resources (#49888).
1627
1628 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Abort if `rlen' is not
1629 positive.
1630
Werner Lemberg70704b32016-12-20 12:27:22 +010016312016-12-20 Werner Lemberg <wl@gnu.org>
1632
Werner Lembergded4bdb2016-12-20 23:26:38 +01001633 [base] More sanity checks for Mac resources.
1634
1635 We use
1636
1637 https://github.com/kreativekorp/ksfl/wiki/Macintosh-Resource-File-Format
1638
1639 and
1640
1641 https://developer.apple.com/legacy/library/documentation/mac/pdf/MoreMacintoshToolbox.pdf#page=151
1642
1643 as references.
1644
1645 * include/freetype/internal/ftrfork.h (FT_RFork_Ref): Use FT_Short
1646 for `res_id'.
1647
1648 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Extract map length
1649 and use it to improve sanity checks.
1650 Follow the specification more closely;in particular, all data types
1651 are signed, not unsigned.
1652 (FT_Raccess_Get_DataOffsets): Follow the specification more closely;
1653 in particular, all data types are signed, not unsigned.
1654 Add some sanity checks.
1655
16562016-12-20 Werner Lemberg <wl@gnu.org>
1657
Werner Lemberg70704b32016-12-20 12:27:22 +01001658 [truetype] Improve logic for getting fast advance widths.
1659
1660 * src/cff/cffdrivr.c (cff_get_advances), src/truetype/ttdriver.c
1661 (tt_get_advances): Use `is_default_instance' for test; this gets
1662 recomputed after changing blend coordinates.
1663
Ben Wagnercc576f82016-12-20 11:37:42 +010016642016-12-20 Ben Wagner <bungeman@google.com>
1665 Werner Lemberg <wl@gnu.org>
1666
Werner Lembergd678b372016-12-20 12:45:31 +01001667 [truetype] Fix linear metrics of GX variation fonts (#49829).
Ben Wagnercc576f82016-12-20 11:37:42 +01001668
1669 When asking for an unhinted non-default variations,
1670 `linearVertAdvance' is currently the value from the `hmtx' table
1671 instead of the actual value after applying the variation. `HVAR'
1672 support fixes this, but fonts will exist without that table and will
1673 need sane fallback.
1674
Werner Lembergd678b372016-12-20 12:45:31 +01001675 Problem also reported as
Werner Lemberg59b0b3a2016-12-20 11:39:52 +01001676
1677 https://bugs.chromium.org/p/skia/issues/detail?id=5917
1678
Ben Wagnercc576f82016-12-20 11:37:42 +01001679 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
1680 load_truetype_glyph): Implement linear advance adjustments if `HVAR'
1681 or `VVAR' tables are missing.
1682
Werner Lemberga1e85f12016-12-20 10:52:26 +010016832016-12-20 Werner Lemberg <wl@gnu.org>
1684
1685 [cff, truetype] Fast advance width retrieval for fonts with HVAR.
1686
1687 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1688
1689 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Don't handle MM.
1690
1691 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1692 (cff_get_advances): Test for HVAR and VVAR.
1693
1694 * src/truetype/ttdriver.c (tt_get_advances): Test for HVAR and VVAR.
1695
Werner Lemberg8f633a02016-12-18 06:42:31 +010016962016-12-18 Werner Lemberg <wl@gnu.org>
1697
Werner Lemberg5743df72016-12-18 21:01:03 +01001698 [base] Fix invalid mac font recursion.
1699
1700 Reported as
1701
1702 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=304
1703
1704 * src/base/ftobjs.c (FT_Open_Face): Code moved to...
1705 (ft_open_face_internal): ... this function.
1706 Add a parameter to control whether we try special Mac font handling
1707 in case of failure.
1708 (FT_Open_Face, FT_New_Face, FT_New_Memory_Face,
1709 open_face_from_buffer): Use `ft_open_face_internal'.
1710
17112016-12-18 Werner Lemberg <wl@gnu.org>
1712
Werner Lembergca3d4012016-12-18 18:23:19 +01001713 * src/cff/cffobjs.c (cff_face_init): Make named instances work.
1714
17152016-12-18 Werner Lemberg <wl@gnu.org>
1716
Werner Lemberga8652c52016-12-18 18:12:03 +01001717 [truetype, cff] Extend `get_var_blend' function of MM service.
1718
1719 In particular, we need access to named instance data.
1720
1721 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
1722 Add argument for `FT_MM_Var'.
1723
1724 * src/cff/cffload.c (cff_get_var_blend): Updated.
1725 * src/cff/cffload.h: Updated.
1726
1727 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
1728
1729 * src/truetype/ttgxvar.c (tt_get_var_blend): Updated.
1730 Accept value `NULL' for arguments.
1731 * src/truetype/ttgxvar.h: Updated.
1732
17332016-12-18 Werner Lemberg <wl@gnu.org>
1734
Werner Lemberg25f3ac22016-12-18 15:50:18 +01001735 [sfnt] Handle `fvar' with zero axes as a non-MM font.
1736
1737 This is better behaviour than exiting with an error.
1738
1739 * include/freetype/internal/tttypes.h (TT_Face): Add `use_fvar'
1740 field.
1741
1742 * src/sfnt/sfobjs.c (sfnt_init_face): Compute `use_fvar', also
1743 updating the validation code.
1744 Use `use_fvar' to compute FT_FACE_FLAG_MULTIPLE_MASTERS.
1745
1746 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Remove `fvar' validation
1747 code.
1748
17492016-12-18 Werner Lemberg <wl@gnu.org>
1750
Werner Lembergeb6d0202016-12-18 09:29:58 +01001751 Minor GX code shuffling.
1752
1753 * include/freetype/internal/tttypes.h (TT_Face): Move
1754 `is_default_instance' into TT_CONFIG_OPTION_GX_VAR_SUPPORT
1755 block.
1756
1757 * src/sfnt/sfobjs.c (sfnt_init_face): Updated.
1758 * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): New macro.
1759 (TT_Load_Glyph): Use it.
1760
17612016-12-18 Werner Lemberg <wl@gnu.org>
1762
Werner Lemberg8f633a02016-12-18 06:42:31 +01001763 [cff] Better handling of non-CFF font formats.
1764
1765 * src/cff/cffload.c (cff_font_load): Pure CFFs don't have a
1766 signature, so return `FT_Err_Unknown_File_Format' more often.
1767
Werner Lemberg50ff6c12016-12-17 07:44:46 +010017682016-12-17 Werner Lemberg <wl@gnu.org>
1769
Werner Lemberg4cd68172016-12-17 22:52:50 +01001770 * src/cff/cffload.c (cff_build_blend_vector): Remove redundant code.
1771
17722016-12-17 Werner Lemberg <wl@gnu.org>
1773
Werner Lembergdb17ceb2016-12-17 13:39:31 +01001774 * src/truetype/ttobjs.c (tt_face_init): Simplify conditional code.
1775
17762016-12-17 Werner Lemberg <wl@gnu.org>
1777
Werner Lemberg7c75b162016-12-17 13:28:24 +01001778 [sfnt, truetype] Various sanitizing fixes.
1779
1780 * src/sfnt/sfobjs.c (sfnt_init_face): If the axis count in `fvar' is
1781 zero, set `num_instances' to zero.
1782
1783 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Handle `fvar' table with
1784 zero axes as invalid.
1785
1786 * src/truetype/ttobjs.c (tt_face_init): Improve logic of loading
1787 `loca', `cvt', `fpgm', and `prep' table.
1788
17892016-12-17 Werner Lemberg <wl@gnu.org>
1790
Werner Lemberg3b125e92016-12-17 10:02:19 +01001791 Improve tracing of `FT_Open_Face'.
1792
1793 * src/base/ftobjs.c (FT_Open_Face): Return info on number of
1794 available faces and numbered instances, or the indices of the
1795 requested face and numbered instance.
1796
1797 * src/sfnt/sfobjs. (sfnt_open_font): Trace number of subfonts.
1798
17992016-12-17 Werner Lemberg <wl@gnu.org>
1800
Werner Lemberg50ff6c12016-12-17 07:44:46 +01001801 * src/cff/cffload.c (cff_load_private_dict): Always init `blend'.
1802
1803 Reported as
1804
1805 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=295
1806
Werner Lembergbeecf802016-12-16 08:52:03 +010018072016-12-16 Werner Lemberg <wl@gnu.org>
1808
Werner Lembergdf2cf432016-12-16 11:38:20 +01001809 [truetype] Fix `cvar' sanity test.
1810
1811 Reported by Dave Arnold.
1812
1813 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Use tuple count mask.
1814
18152016-12-16 Werner Lemberg <wl@gnu.org>
1816
Werner Lemberg68620242016-12-16 11:15:17 +01001817 [cff, truetype] Remove compiler warnings; fix `make multi'.
1818
1819 * src/cff/cf2font.h: Include `cffload.h'.
1820
1821 * src/cff/cffload.c: Include FT_MULTIPLE_MASTERS_H and
1822 FT_SERVICE_MULTIPLE_MASTERS_H.
1823 (cff_vstore_load): Eliminate `vsSize'.
1824 (cff_load_private_dict): Tag as `FT_LOCAL_DEF'.
1825
1826 * src/cff/cffload.h: Include `cffobjs.h'.
1827 Provide declaration for `cff_load_private_dict'.
1828
1829 * src/truetype/ttgxvar.c (ft_var_load_hvar): Eliminate
1830 `minorVersion' and `map_offset'.
1831
18322016-12-16 Werner Lemberg <wl@gnu.org>
1833
Werner Lembergbeecf802016-12-16 08:52:03 +01001834 [cff] Fix heap buffer overflow (#49858).
1835
1836 * src/cff/cffparse.c (cff_parser_run): Add one more stack size
1837 check.
1838
Werner Lemberg01658be2016-12-15 23:10:59 +010018392016-12-15 Werner Lemberg <wl@gnu.org>
1840
1841 Fix clang warnings.
1842
1843 * src/cff/cffload.c (cff_blend_doBlend): Add cast.
1844 (cff_subfont_load): Set `error' correctly.
1845
1846 * src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.
1847
Dave Arnold9f62d2c2016-12-15 20:27:47 +010018482016-12-15 Dave Arnold <darnold@adobe.com>
1849 Werner Lemberg <wl@gnu.org>
1850
Dave Arnoldedf40142016-12-15 21:56:44 +01001851 [cff] Implement CFF2 support (2/2).
1852
1853 The font variation code. All parts dependent on the GX code in the
1854 `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1855 In other words, you can still compile the `cff' module without
1856 defining TT_CONFIG_OPTION_GX_VAR_SUPPORT (which brings you CFF2
1857 support without font variation).
1858
1859 * src/cff/cf2font.c (cf2_font_setup): Add support for font
1860 variation.
1861 * src/cff/cf2font.h (CF2_Font): Add fields for variation data.
1862
1863 * src/cff/cf2ft.c (cf2_free_instance): Free blend data.
1864 (cf2_getVStore, cf2_getNormalizedVector): New functions.
1865 * src/cff/cf2ft.h: Updated.
1866
1867 * src/cff/cf2intrp.c: Include `cffload.h'.
1868 (cf2_cmdRESERVED_15, cf2_cmdRESERVED_16): Replace with...
1869 (cf2_cmdVSINDEX, cf2_cmdBLEND): ... this new enum values.
1870 (cf2_doBlend): New function.
1871 (cf2_interpT2CharString): Handle `vsindex' and `blend' opcodes.
1872
1873 * src/cff/cffload.c (FT_fdot14ToFixed): New macro.
1874 (cff_vstore_done, cff_vstore_load): New functions.
1875 (cff_blend_clear, cff_blend_doBlend, cff_blend_build_vector,
1876 cff_blend_check_vector): New functions.
1877 (cff_load_private_dict): Add arguments for blend vector.
1878 Handle blend data.
1879 (cff_subfont_load, cff_subfont_done): Updated.
1880 (cff_font_load): Handle CFF2 variation store data.
1881 (cff_font_done): Updated.
1882 * src/cff/cffload.h: Include `cffparse.h'.
1883 Updated.
1884
1885 * src/cff/cffobjs.c (cff_face_done): Updated.
1886
1887 * src/cff/cffparse.c: Include `cffload.h'.
1888 (cff_parse_num): Handle internal value 255.
1889 (cff_parse_vsindex, cff_parse_blend): New functions.
1890 (CFF_FIELD_BLEND): New macro.
1891 (cff_parser_run): Updated.
1892 * src/cff/cffparse.h (cff_kind_blend): New enum value.
1893
1894 * src/cff/cfftoken.h: Handle `vstore', `vsindex', and `blend'
1895 dictionary values.
1896
1897 * src/cff/cfftypes.h (CFF_VarData, CFF_AxisCoords, CFF_VarRegion,
1898 CFF_VStore, CFF_Blend): New structures.
1899 (CFF_FontRecDict): Add `vstore_offset' field.
1900 (CFF_Private): Add `vsindex' field.
1901 (CFF_SubFont): Add fields for blend data.
1902 (CFF_Font): Add `vstore' field.
1903
1904 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `CFF2' is equal to `gvar',
1905 since glyph variation data is directly embedded.
1906 (TT_Set_MM_Blend): Don't load `gvar' table for CFF2 fonts.
1907
19082016-12-15 Dave Arnold <darnold@adobe.com>
1909 Werner Lemberg <wl@gnu.org>
1910
Dave Arnold9f62d2c2016-12-15 20:27:47 +01001911 [cff] Implement CFF2 support (1/2).
1912
1913 This commit does not contain the blend code for font variation
1914 support, which follows in another commit.
1915
1916 You should ignore whitespace while inspecting this commit.
1917
1918 * include/freetype/internal/tttypes.h (TT_Face): Add `isCFF2'
1919 member.
1920
1921 * src/cff/cf2font.h (CF2_Font): Add `isCFF2' member.
1922
1923 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Handle `isCFF2'
1924 flag.
1925 (cf2_getMaxstack): New function.
1926 * src/cff/cf2ft.h: Updated.
1927
1928 * src/cff/cf2intrp.c (cf2_escRESERVED_38): New enum.
1929 (cf2_interpT2CharString): Handle CFF2 differences.
1930 Add tracing message for errors.
1931
1932 * src/cff/cffdrivr.c (cff_get_glyph_name, cff_get_name_index):
1933 Update for CFF2.
1934
1935 * src/cff/cffload.c (FT_FIXED_ONE): New macro.
1936 (cff_index_init, cff_index_load_offsets, cff_index_access_element,
1937 cff_index_get_name, cff_ft_select_get, cff_load_private_dict,
1938 cff_subfont_load, cff_font_load): Handle CFF2.
1939 * src/cff/cffload.h: Updated.
1940
1941 * src/cff/cffobjs.c (cff_face_init): Handle CFF2.
1942
1943 * src/cff/cffparse.c (cff_parse_maxstack): New function.
1944 (CFFCODE_TOPDICT, CFFCODE_PRIVATE): Removed
1945 * src/cff/cffparse.h (CFF2_MAX_STACK, CFF2_DEFAULT_STACK): New
1946 macros.
1947 (CFF2_CODE_TOPDICT, CFF2_CODE_FONTDICT, CFF2_CODE_PRIVATE): New
1948 macros.
1949
1950 * src/cff/cfftoken.h: Add fields for CFF2 dictionaries (but no blend
1951 stuff).
1952
1953 * src/cff/cfftypes.h (CFF_Index): Add `hdr_size' field.
1954 (CFF_FontRecDict): Add `maxstack' field.
1955 (CFF_Private): Add `subfont' field.
1956 (CFF_Font): Add `top_dict_length' and `cff2' fields.
1957
1958 * src/sfnt/sfobjs.c (sfnt_load_face): Handle `CFF2' table.
1959
Werner Lemberg3bd79cc2016-12-15 14:34:57 +010019602016-12-15 Werner Lemberg <wl@gnu.org>
1961 Dave Arnold <darnold@adobe.com>
1962
1963 [truetype] Provide HVAR advance width variation as a service.
1964
1965 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1966
1967 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
1968
1969 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Prevent
1970 double adjustment of advance width.
1971
1972 * src/sfnt/ttmtx.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1973 (tt_face_get_metrics): Apply metrics variations.
1974
Dave Arnold41533b92016-12-15 00:00:45 +010019752016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold097cd872016-12-15 12:58:26 +01001976 Werner Lemberg <wl@gnu.org>
1977
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01001978 [truetype] Provide function to apply `HVAR' advance width variation.
1979
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01001980 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1981
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01001982 * src/truetype/ttgxvar.c (tt_hadvance_adjust): New function.
1983 * src/truetype/ttgxvar.h: Updated.
1984
19852016-12-15 Dave Arnold <darnold@adobe.com>
1986 Werner Lemberg <wl@gnu.org>
1987
Dave Arnold097cd872016-12-15 12:58:26 +01001988 [truetype] Add `HVAR' table parsing.
1989
1990 Note that this is not complete yet; it only handles advance width
1991 variation.
1992
1993 Activation of the code follows in another commit.
1994
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01001995 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1996
Dave Arnold097cd872016-12-15 12:58:26 +01001997 * include/freetype/ftmm.h (FT_Var_Named_Style): Add `psid' member.
1998
1999 * src/truetype/ttgxvar.h (GX_HVarData, GX_AxisCoords, GX_HVarRegion,
2000 GX_HVStore, GX_WidthMap): New auxiliary structures for...
2001 (GX_HVarTable): ... HVAR main structure.
2002 (GX_BlendRec): Add data for HVAR loading.
2003
2004 * src/truetype/ttgxvar.c (FT_FIXED_ONE, FT_fdot14ToFixed,
2005 FT_intToFixed, FT_fixedToInt): New macros.
2006 (ft_var_load_hvar): New function.
2007 (TT_Get_MM_Var): Updated.
2008 (tt_done_blend): Deallocate HVAR data.
2009
20102016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold010e0612016-12-15 11:22:15 +01002011
Dave Arnoldabd58582016-12-15 12:17:22 +01002012 [cff] Extend number parsing.
2013
2014 The forthcoming CFF2 support needs a dynamic parsing limit.
2015
2016 * src/cff/cffparse.c (cff_parse_num, do_fixed, cff_parse_fixed,
2017 cff_parse_fixed_scaled, cff_parse_fixed_dynamic): Add argument for
2018 parser.
2019 (cff_parse_font_matrix, cff_parse_font_bbox, cff_parse_private_dict,
2020 cff_parse_multiple_master, cff_parse_cid_ros, cff_parser_run): Updated.
2021
2022 * src/cff/cffparse.h (cff_parse_num): Export locally.
2023
20242016-12-15 Dave Arnold <darnold@adobe.com>
2025
Dave Arnold010e0612016-12-15 11:22:15 +01002026 [cff] Implement dynamic stack size for Adobe engine.
2027
2028 This also adds `cf2_stack_setReal' and `cf2_stack_pop', needed for
2029 the forthcoming CFF2 support.
2030
2031 * src/cff/cf2stack.c (cf2_stack_init): Add argument for stack size.
2032 (cf2_stack_free): Deallocate stack.
2033 (cf2_stack_count, cf2_stack_pushInt, cf2_stack_pushFixed,
2034 cf2_stack_popInt, cf2_stack_popFixed, cf2_stack_getReal,
2035 cf2_stack_clear): Updated.
2036 (cf2_stack_setReal, cf2_stack_pop): New functions.
2037
2038 * src/cff/cf2stack.h (CF2_Stack): Add `stackSize' member.
2039 Update function declarations.
2040
2041 * src/cff/cf2intrp.c (cf2_interpT2CharString): Updated.
2042
2043 * src/cff/cffparse.c (cff_parser_init): Add parameter for stack
2044 size; return error code.
2045 (cff_parser_done): New function.
2046 (cff_parser_run): Updated.
2047
2048 * src/cff/cffparse.h (CFF_Parser): Add `stackSize' member and make
2049 `stack' a pointer.
2050 Update function declarations.
2051
2052 * src/cff/cffload.c (cff_load_private_dict, cff_subfont_load):
2053 Updated.
2054
20552016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold41533b92016-12-15 00:00:45 +01002056 Werner Lemberg <wl@gnu.org>
2057
2058 [cff] Code shuffling.
2059
2060 * src/cff/cfftypes.h (CFF_Font): Add `library' and `base_offset'
2061 fields.
2062
2063 * src/cff/cffload.c (cff_subfont_load): Change last argument to
2064 `CFF_Font'
2065 Split off parsing of private dictionary into...
2066 (cff_load_private_dict): ...this new function.
2067 (cff_font_load): Updated.
2068
Werner Lembergab22b432016-12-14 18:34:55 +010020692016-12-14 Werner Lemberg <wl@gnu.org>
2070
Werner Lemberg09183252016-12-14 20:44:11 +01002071 [sfnt, truetype] Add framework for Metrics Variations service.
2072
2073 No effect yet; service functions will be implemented later on.
2074
2075 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
2076
2077 * include/freetype/internal/services/svmetric.h: New file.
2078
2079 * include/freetype/internal/ftserv.h
2080 (FT_SERVICE_METRICS_VARIATIONS_H): New macro.
2081
2082 * include/freetype/internal/tttypes.h (TT_Face): New field `var'.
2083
2084 * src/sfnt/sfobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
2085 (sfnt_init_face): Initialize `face->var'.
2086
2087 * src/truetype/ttdriver.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
2088 (tt_service_metrics_variations): New service.
2089 (tt_services): Updated.
2090
2091 * src/truetype/ttpic.h: Updated.
2092
20932016-12-14 Werner Lemberg <wl@gnu.org>
2094
Werner Lembergc628a7d2016-12-14 19:31:42 +01002095 [cff] Add Multiple Masters service.
2096
2097 The code simply uses the MM functions from the `truetype' module.
2098
2099 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
2100
2101 * include/freetype/internal/tttypes.h (TT_Face): New field `mm'.
2102
2103 * src/cff/cffdrivr.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
2104 (cff_set_mm_blend, cff_get_mm_blend, cff_get_mm_var,
2105 cff_set_var_design, cff_get_var_design): New functions.
2106 (cff_service_multi_masters): New service.
2107 (cff_services): Updated.
2108
2109 * src/cff/cffload.c (cff_get_var_blend, cff_done_blend): New
2110 functions.
2111 * src/cff/cffload.h: Updated.
2112
2113 * src/cff/cffpic.h (CFF_SERVICE_MULTI_MASTERS_GET): New macro.
2114
2115 * src/sfnt/sfobjs.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
2116 (sfnt_init_face): Initialize `face->mm'.
2117
21182016-12-14 Werner Lemberg <wl@gnu.org>
2119
Werner Lemberga7dc0c32016-12-14 18:54:21 +01002120 Extend functionality of `ft_module_get_service'.
2121
2122 It can now differentiate between local and global searches.
2123
2124 * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
2125 (FT_Get_TrueType_Engine_Type): Updated.
2126
2127 * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
2128
2129 * include/freetype/internal/ftobjs.h: Updated.
2130 * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
2131 Updated.
2132
21332016-12-14 Werner Lemberg <wl@gnu.org>
2134
Werner Lembergab22b432016-12-14 18:34:55 +01002135 * src/truetype/ttgxvar.c (tt_get_var_blend): Fix compiler warning.
2136
Werner Lemberg4e075162016-12-14 18:25:44 +010021372016-12-14 Dave Arnold <darnold@adobe.com>
2138 Werner Lemberg <wl@gnu.org>
2139
2140 [sfnt, cff] Minor preparations.
2141
2142 * include/freetype/tttags.h (TTAG_CFF2, TTAG_HVAR, TTAG_MVAR,
2143 TTAG_VVAR): New SFNT table tags.
2144
2145 * src/cff/cf2fixed.h (CF2_FIXED_ONE, CF2_FIXED_EPSILON): Add cast.
2146
Werner Lemberg27bdb362016-12-10 09:56:03 +010021472016-12-10 Werner Lemberg <wl@gnu.org>
2148
Werner Lemberg8b174b42016-12-11 09:16:52 +01002149 [truetype, type1] Add `get_var_blend' to MM service.
2150
2151 For internal use; we want to share code between the forthcoming CFF2
2152 support and TrueType.
2153
2154 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
2155 New typedef.
2156 (MultiMasters): Add `get_var_blend'.
2157 (FT_Service_MultiMasters): Updated.
2158
2159 * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
2160 * src/truetype/ttgxvar.h: Updated.
2161
2162 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
2163 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
2164
21652016-12-10 Werner Lemberg <wl@gnu.org>
2166
Werner Lemberg27bdb362016-12-10 09:56:03 +01002167 [truetype, type1] Add `done_blend' to MM service.
2168
2169 For internal use; we want to share code between the forthcoming CFF2
2170 support and TrueType.
2171
2172 * include/freetype/internal/services/svmm.h (FT_Done_Blend_Func):
2173 New typedef.
2174 (MultiMasters): Add `done_blend'.
2175 (FT_Service_MultiMasters): Updated.
2176
2177 * src/truetype/ttgxvar.c (tt_done_blend): Use `TT_Face' as argument.
2178 * src/truetype/ttgxvar.h: Updated.
2179
2180 * src/truetype/ttobjs.c (TT_Face_Done): Updated.
2181
2182 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
2183 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
2184
Werner Lemberg3205a442016-12-09 06:55:34 +010021852016-12-09 Werner Lemberg <wl@gnu.org>
2186
2187 [sfnt] Revert change from 2016-12-08.
2188
2189 I missed the functionality of `ft_module_get_service', which makes
2190 the change unnecessary.
2191
Werner Lemberg29aa9572016-12-08 08:59:34 +010021922016-12-08 Werner Lemberg <wl@gnu.org>
2193
Werner Lemberg4191b772016-12-08 22:33:46 +01002194 Add framework to support services with 8 functions.
2195
2196 We will need this for CFF variation font support.
2197
2198 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC8):
2199 New macro.
2200
22012016-12-08 Werner Lemberg <wl@gnu.org>
2202
Werner Lemberg29aa9572016-12-08 08:59:34 +01002203 [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
2204
2205 CFF2 fonts will need access to those two functions.
2206
2207 * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
2208 (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
2209 (FT_DEFINE_SFNT_INTERFACE): Updated.
2210
2211 * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
2212 Fix signatures to exactly correspond to the glyph dict service
2213 function typedefs.
2214 (sfnt_interface): Updated.
2215
Dave Arnoldbcae6572016-12-05 22:08:15 +010022162016-12-06 Dave Arnold <darnold@adobe.com>
2217
2218 Add `FT_Get_Var_Design_Coordinates' function.
2219
2220 Note that the low-level functions aren't implemented yet.
2221
2222 * include/freetype/ftmm.h: Declare.
2223
2224 * include/freetype/internal/services/svmm.h
2225 (FT_Get_Var_Design_Func): New typedef.
2226 (MultiMasters): New MM service function `get_var_design'.
2227 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
2228 Update all callers.
2229
2230 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
2231
2232 * src/truetype/ttdriver.c: Updated.
2233
2234 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
2235 handle `get_var_design' service.
2236 * src/truetype/ttgxvar.h: Updated.
2237
2238 * src/type1/t1driver.c: Updated.
2239
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05002240 * src/type1/t1load.c (T1_Get_Var_Design): New dump function to
Dave Arnoldbcae6572016-12-05 22:08:15 +01002241 handle `get_var_design' service.
2242 * src/type1/t1load.h: Updated.
2243
Werner Lembergc0fae7d2016-12-06 11:13:19 +010022442016-12-06 Werner Lemberg <wl@gnu.org>
2245
2246 * src/type1/t1load.c (parse_subrs): Fix memory leak.
2247
2248 The `subrs' keyword might erroneously occur multiple times.
2249
2250 Reported as
2251
2252 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
2253
Werner Lemberg602be7c2016-12-01 11:36:37 +010022542016-12-01 Werner Lemberg <wl@gnu.org>
2255
2256 [gzip] Improve building with external zlib (#49673).
2257
2258 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
2259 the following error.
2260
2261 ftgzip.c
2262 zlib-1.2.8\zlib.h(86): error C2061:
2263 syntax error: identifier 'z_const'
2264 zlib-1.2.8\zlib.h(94): error C2054:
2265 expected '(' to follow 'z_const'
2266 zlib-1.2.8\zlib.h(94): error C2085:
2267 'msg': not in formal parameter list
2268 ...
2269 zlib-1.2.8\zlib.h(877): fatal error C1003:
2270 error count exceeds 100; stopping compilation
2271
2272 The error happens because FreeType keeps an own copy of zlib-1.1.4
2273 under `src/gzip'. When building `src/gzip/ftgzip.c' with
2274 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
2275
2276 #include <zlib.h>
2277
2278 which correctly finds an external `zlib.h', but `zlib.h' itself has
2279 a line
2280
2281 #include "zconf.h"
2282
2283 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
2284 compiling the files in `src/gzip'.
2285
2286 * src/gzip/zconf.h: Rename to...
2287 * src/gzip/ftzconf.h: ... this.
2288 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
2289
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +010022902016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
2291
2292 [autofit] Fix Emscripten crash (patch #9180).
2293
2294 Function calls through pointers must use a matching signature to
2295 work on Emscripten, since such calls are dispatched through lookup
2296 tables grouped by signature.
2297
2298 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
2299 typedef.
2300
Werner Lembergd949a3d2016-11-29 12:09:56 +010023012016-11-29 Werner Lemberg <wl@gnu.org>
2302
Werner Lemberg1d28f692016-11-29 18:45:22 +01002303 [smooth] Revert previous commit. Already fixed with 6ca54c64.
2304
23052016-11-29 Werner Lemberg <wl@gnu.org>
2306
Werner Lembergd949a3d2016-11-29 12:09:56 +01002307 [smooth] Avoid conditional jump on uninitialized value (#49711).
2308
2309 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
2310
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +010023112016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
2312
2313 [autofit] Code shuffling.
2314
2315 Also improve some comments and remove unused code.
2316
2317 No functional change.
2318
2319 * src/autofit/afloader.c (af_loader_load_g): Merged with...
2320 (af_loader_load_glyph): ...this function.
2321 Split off emboldening code into...
2322 (af_loader_embolden_glyph_in_slot): ... this function.
2323
Werner Lemberg78150502016-11-17 12:00:20 +010023242016-11-17 Werner Lemberg <wl@gnu.org>
2325
2326 Better support of LLP64 systems with gcc (and clang).
2327
2328 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
2329
2330 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
2331 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
2332
Werner Lembergdd26e3d2016-11-10 12:03:32 +010023332016-11-10 Werner Lemberg <wl@gnu.org>
2334
2335 Fix `lcd_weights' array size.
2336
2337 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
2338
2339 Reported by Nikolaus.
2340
Werner Lemberg565db952016-11-06 12:33:51 +010023412016-11-06 Werner Lemberg <wl@gnu.org>
2342
Werner Lemberge1ee5472016-11-06 12:39:05 +01002343 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
2344
23452016-11-06 Werner Lemberg <wl@gnu.org>
2346
Werner Lemberg1c6fd992016-11-06 12:37:55 +01002347 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
2348
2349 It's unavoidable to call the PNG engine, but to get the metrics it
2350 is sufficient to read the PNG image's header only.
2351
2352 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
2353 allocation of the glyph slot.
2354 * src/sfnt/pngshim.h: Updated.
2355 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
2356 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
2357
23582016-11-06 Werner Lemberg <wl@gnu.org>
2359
Werner Lemberg565db952016-11-06 12:33:51 +01002360 [sfnt] Speed up `sbix' lookup.
2361
2362 This also fixes a bug introduced in 2016-10-01 which prevents
2363 display of embedded bitmap fonts that use the `sbix' format.
2364
2365 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
2366 offset also in `ebdt_size' and `ebdt_start', respectively. This
2367 makes the test for an embedded bitmap data table succeed for this
2368 format.
2369
2370 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
2371 `ebdt_size' and `ebdt_start'
2372 (tt_face_load_sbix_image): Ditto.
2373
Werner Lemberg37e193e2016-11-06 12:32:51 +010023742016-11-06 Seigo Nonaka <nona@google.com>
2375 Werner Lemberg <wl@gnu.org>
2376
2377 Introduce a way of quickly retrieving (embedded) bitmap metrics.
2378
2379 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
2380 until the user calls `FT_Render_Glyph'. However, it always
2381 allocates memory for bitmaps and copies or decodes the contents of a
2382 bitmap glyph, which can be quite slow for PNG data.
2383
2384 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
2385 macro.
2386
2387 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
2388 FT_LOAD_BITMAP_METRICS_ONLY is used.
2389
2390 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
2391 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
2392 the glyph slot.
2393 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
2394 tt_face_load_sbit_image): Updated.
2395
2396 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
2397 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
2398
2399 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
2400 argument to control allocation of the glyph slot.
2401 * src/pfr/pfrobjs (pfr_slot_load): Updated.
2402
2403 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
2404
2405 * docs/CHANGES: Updated.
2406
24072016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +01002408
2409 Synchronize with gnulib (#49448).
2410
2411 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
2412 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
2413 current version of `intprops.h'.
2414 Other minor synchronization to reduce code differences between the
2415 three files.
2416
Behdad Esfahbodb72858c2016-11-03 06:41:00 +010024172016-11-03 Behdad Esfahbod <behdad@behdad.org>
2418
2419 [truetype] Clamp variation requests to valid range.
2420
2421 This is required by OpenType 1.8; it also avoids rounding surprises.
2422
2423 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
2424 outside of the allowed range to always stay within the range instead
2425 of producing an error.
2426
Werner Lemberg328d6842016-10-29 00:18:56 +020024272016-10-29 Werner Lemberg <wl@gnu.org>
2428
2429 [truetype] Remove clang warnings.
2430
2431 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
2432 loop counter handling.
2433
2434 * src/truetype/ttinterp.c: Updated.
2435 (Ins_SCANTYPE): Use signed constant.
2436 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
2437
Werner Lembergddf38722016-10-27 07:27:27 +020024382016-10-27 Werner Lemberg <wl@gnu.org>
2439
2440 [truetype] Fix commit from 2014-11-24.
2441
2442 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
2443
2444 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
2445 logic.
2446
Werner Lemberg56140902016-10-26 08:10:59 +020024472016-10-26 Werner Lemberg <wl@gnu.org>
2448
Werner Lemberg9c45ac32016-10-26 16:00:00 +02002449 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
2450
2451 * include/freetype/ftmm.h: Declare.
2452
2453 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
2454 New typedef.
2455 (MultiMasters): New MM service function `get_mm_blend'.
2456 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
2457 Update all callers.
2458
2459 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
2460 FT_Get_Var_Blend_Coordinates): Implement.
2461
2462 * src/truetype/ttdriver.c: Updated.
2463
2464 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
2465 `get_mm_blend' service.
2466 * src/truetype/ttgxvar.h: Updated.
2467
2468 * src/type1/t1driver.c: Updated.
2469
2470 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
2471 `get_mm_blend' service.
2472 * src/type1/t1load.h: Updated.
2473
2474 * docs/CHANGES: Document.
2475
24762016-10-26 Werner Lemberg <wl@gnu.org>
2477
Werner Lemberg56140902016-10-26 08:10:59 +02002478 * src/type1/t1load.c (parse_subrs): Fix limit check.
2479
2480 Reported as
2481
2482 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
2483
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -040024842016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
2485
2486 [cff] Correct cmap format reporting (#24819).
2487
2488 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
2489 charmap instead of guessing its format and language.
2490
Werner Lemberg57741402016-10-22 18:34:48 +020024912016-10-22 Werner Lemberg <wl@gnu.org>
2492
Werner Lemberg50816742016-10-22 19:16:08 +02002493 [truetype] Fix SCANTYPE instruction (#49394).
2494
2495 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
2496
24972016-10-22 Werner Lemberg <wl@gnu.org>
2498
Werner Lemberg57741402016-10-22 18:34:48 +02002499 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
2500
2501 * src/sfnt/ttpost.c (load_format_25): We need at least a single
2502 table entry.
2503
Werner Lemberg7eeaf982016-10-14 08:58:17 +020025042016-10-14 Werner Lemberg <wl@gnu.org>
2505
2506 [truetype] Fix handling of `cvar' table data.
2507
2508 Reported as
2509
2510 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
2511
2512 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
2513 indices.
2514
Werner Lemberg92281222016-10-11 07:12:12 +020025152016-10-11 Werner Lemberg <wl@gnu.org>
2516
Werner Lemberg9c54d122016-10-11 08:57:55 +02002517 [psaux] Fix handling of invalid flex subrs.
2518
2519 Problem reported as
2520
2521 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
2522
2523 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
2524 <op_callothersubr>: Set `flex_state' after error checking.
2525
25262016-10-11 Werner Lemberg <wl@gnu.org>
2527
Werner Lemberg92281222016-10-11 07:12:12 +02002528 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
2529
Werner Lembergd61b0422016-10-08 19:20:33 +020025302016-10-08 Werner Lemberg <wl@gnu.org>
2531
Werner Lemberg6b354932016-10-08 20:26:59 +02002532 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
2533
25342016-10-08 Werner Lemberg <wl@gnu.org>
2535
Werner Lembergd61b0422016-10-08 19:20:33 +02002536 [cid] Fix parsing of subr offsets.
2537
2538 Bug introduced 2016-05-16.
2539
2540 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
2541
Werner Lembergfcc0ee82016-10-01 20:12:25 +020025422016-10-01 Werner Lemberg <wl@gnu.org>
2543
2544 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
2545
2546 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
2547 a bitmap data table.
2548
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -040025492016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
2550
2551 [smooth] Remove impossibility.
2552
2553 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
2554 (gray_convert_glyph): Remove impossible condition and clean up.
2555
Werner Lembergbf902392016-09-29 13:04:46 +020025562016-09-29 Werner Lemberg <wl@gnu.org>
2557
Werner Lemberg35764872016-09-30 08:11:52 +02002558 [pcf] Enrich family name with foundry name and glyph width info.
2559
2560 This is a very old patch from openSuSE (from 2006, submitted to
2561 FreeType in 2011) that I forgot to apply.
2562
2563 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
2564
2565 Prepend the foundry name plus a space to the family name. There are
2566 many fonts just called `Fixed' which look completely different, and
2567 which have nothing to do with each other. When selecting `Fixed' in
2568 KDE or Gnome one gets results that appear rather random, the style
2569 changes often if one changes the size and one cannot select some
2570 fonts at all.
2571
2572 We also check whether we have `wide' characters; all put together,
2573 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
2574
2575 * src/pcf/pcfread.c (pcf_load_font): Implement it.
2576
2577 * docs/CHANGES: Document it.
2578
25792016-09-29 Werner Lemberg <wl@gnu.org>
2580
Werner Lemberg71b617d2016-09-29 19:53:39 +02002581 [ftfuzzer] Speed up.
2582
2583 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
2584 check for embedded bitmaps if we have a non-default instance.
2585
25862016-09-29 Werner Lemberg <wl@gnu.org>
2587
Werner Lemberg9357ef82017-03-15 07:56:22 +01002588 [truetype] Disallow bitmap strikes for non-default instances.
Werner Lemberg2067c692016-09-29 19:49:07 +02002589
2590 Also speed up access of default instances if GX variations are
2591 active.
2592
2593 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
2594 `is_default_instance' member.
2595
2596 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
2597 `is_default_instance'.
2598
2599 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
2600 load_truetype_glyph): Add test for default instance.
2601 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
2602
2603 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
2604 `is_default_instance'.
2605
26062016-09-29 Werner Lemberg <wl@gnu.org>
2607
Werner Lembergbf902392016-09-29 13:04:46 +02002608 [truetype] Clean up `TT_Face' structure.
2609
2610 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
2611 fields `horz_metrics' and `vert_metrics'.
2612 Update documentation.
2613
2614 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
2615
Werner Lemberg2ecf89b2016-09-28 19:06:21 +020026162016-09-28 Werner Lemberg <wl@gnu.org>
2617
Werner Lemberg45cad2e2016-09-28 19:10:52 +02002618 More FT_ZERO usage.
2619
2620 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
2621 s/ft_memset/FT_MEM_ZERO/.
2622
2623 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
2624 s/ft_memset/FT_ARRAY_ZERO/.
2625
2626 * src/raster/ftraster.c (FT_ZERO): Define.
2627 (ft_black_new): Use it.
2628 * src/raster/ftrend1.c (ft_raster1_get_cbox):
2629 s/FT_MEM_ZERO/FT_ZERO/.
2630
2631 * src/smooth/ftgrays.c (FT_ZERO): Define.
2632 (gray_raster_new): Use it.
2633 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
2634 s/FT_MEM_ZERO/FT_ZERO/.
2635
26362016-09-28 Werner Lemberg <wl@gnu.org>
2637
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02002638 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
2639
Werner Lemberg0d945922016-09-27 08:44:31 +020026402016-09-27 Werner Lemberg <wl@gnu.org>
2641
Werner Lemberga3e2c832016-09-27 21:42:02 +02002642 [truetype] Trace number of executed opcodes.
2643
2644 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
2645
26462016-09-27 Werner Lemberg <wl@gnu.org>
2647
Werner Lemberge27b8a52016-09-27 21:21:01 +02002648 [truetype] Speed up `TT_Load_Glyph'.
2649
2650 This avoids additional calls to `tt_face_lookup_table' for the
2651 `glyf' table, which can be expensive.
2652
2653 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
2654 `glyf_offset' field to ...
2655 (TT_FaceRec): ... this structure.
2656 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
2657 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +02002658 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +02002659
26602016-09-27 Werner Lemberg <wl@gnu.org>
2661
Werner Lemberg0d945922016-09-27 08:44:31 +02002662 [truetype] Introduce dynamic limits for some bytecode opcodes.
2663
2664 This speeds up FreeType's handling of malformed fonts.
2665
2666 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
2667 of twilight points, the total number of negative jumps, and the
2668 total number of loops in LOOPCALL opcodes. The values are based on
2669 the number of points and entries in the CVT table.
2670 (Ins_JMPR): Test negative jump counter.
2671 (Ins_LOOPCALL): Test loopcall counter.
2672
2673 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
2674
2675 * docs/CHANGES: Updated.
2676
Werner Lembergd11e8b62016-09-25 15:32:04 +020026772016-09-25 Werner Lemberg <wl@gnu.org>
2678
Werner Lemberga7649632016-09-25 16:29:05 +02002679 [truetype] Sanitize only last entry of `loca' table.
2680
2681 Without this patch, a loca sequence like `0 100000 0 100000 ...',
2682 where value 100000 is larger than the `glyf' table size, makes
2683 FreeType handle the whole `glyf' table as a single glyph again and
2684 again, which is certainly invalid (and can be very slow, too).
2685
2686 * src/truetype/ttpload.c (tt_face_get_location): Implement.
2687 Improve tracing messages.
2688
26892016-09-25 Werner Lemberg <wl@gnu.org>
2690
Werner Lembergd11e8b62016-09-25 15:32:04 +02002691 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
2692
Werner Lemberg2f2e73c2016-09-24 22:42:58 +020026932016-09-24 Werner Lemberg <wl@gnu.org>
2694
2695 [autofit] Tracing fixes.
2696
2697 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
2698 functions only if we actually do tracing.
2699
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -040027002016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
2701
2702 [smooth] Reduce divisions in the line renderer.
2703
2704 We don't need some divisions if a line segments stays within a single
2705 row or a single column of pixels.
2706
2707 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
2708 conditional.
2709
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -040027102016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
2711
2712 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
2713
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -040027142016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
2715
2716 [smooth] Another tiny speed-up.
2717
2718 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
2719 (gray_record_cell): ... this function.
2720
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -040027212016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2722
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -04002723 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
2724
27252016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2726
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04002727 [smooth] Fix valgrind warning and reoptimize.
2728
2729 The algorithm calls `gray_set_cell' at the start of each new contour
2730 or when the contours cross the cell boundaries. Double-checking for
2731 that is wasteful.
2732
2733 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
2734 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
2735
Werner Lemberge421a0b2016-09-10 08:02:30 +020027362016-09-10 Werner Lemberg <wl@gnu.org>
2737
2738 [sfnt] Fix previous commit.
2739
2740 Problems reported as
2741
2742 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
2743
2744 We now map the strike index right before accessing the physical
2745 data, not earlier.
2746
2747 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
2748 after creating the map so that...
2749
2750 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
2751 can be used before and after setting up `sbit_strike_map'.
2752 (tt_face_set_sbit_strike): Revert change.
2753 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
2754
2755 * src/truetype/ttdriver.c (tt_size_select): Revert change.
2756
Werner Lembergd609b7c2016-09-09 22:11:07 +020027572016-09-09 Werner Lemberg <wl@gnu.org>
2758
Werner Lembergdeb26152016-09-09 22:13:33 +02002759 [ftfuzzer] Minor improvements.
2760
2761 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
2762 invalid strikes.
2763 Use better values for call to `FT_Set_Char_Size'.
2764
27652016-09-09 Werner Lemberg <wl@gnu.org>
2766
Werner Lembergd609b7c2016-09-09 22:11:07 +02002767 [sfnt] Don't provide (completely) broken strike data.
2768
2769 FreeType tries to sanitize strike header data; we now reject
2770 completely broken ones.
2771
2772 * include/freetype/internal/tttypes.h (TT_FaceRec): New
2773 `sbit_strike_map' array pointer.
2774
2775 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
2776 width or height would be zero.
2777 Add tracing message in case of error.
2778
2779 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
2780 only using (more or less) valid strike header data for
2781 FT_Face's `available_sizes' array.
2782 (sfnt_done_face): Updated.
2783
2784 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
2785 `sbit_strike_map'.
2786 (tt_face_load_strike_metrics): Improve tracing.
2787
2788 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
2789
Werner Lemberg9749f262016-09-08 07:51:03 +020027902016-09-08 Werner Lemberg <wl@gnu.org>
2791
Werner Lembergd2d59682016-09-08 09:04:32 +02002792 * Version 2.7 released.
2793 =======================
2794
2795
2796 Tag sources with `VER-2-7'.
2797
2798 * docs/VERSION.TXT: Add entry for version 2.7.
2799
2800 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
2801 builds/windows/vc2005/index.html,
2802 builds/windows/vc2008/freetype.vcproj,
2803 builds/windows/vc2008/index.html,
2804 builds/windows/vc2010/freetype.vcxproj,
2805 builds/windows/vc2010/index.html,
2806 builds/windows/visualc/freetype.dsp,
2807 builds/windows/visualc/freetype.vcproj,
2808 builds/windows/visualc/index.html,
2809 builds/windows/visualce/freetype.dsp,
2810 builds/windows/visualce/freetype.vcproj,
2811 builds/windows/visualce/index.html,
2812 builds/wince/vc2005-ce/freetype.vcproj,
2813 builds/wince/vc2005-ce/index.html,
2814 builds/wince/vc2008-ce/freetype.vcproj,
2815 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
2816
2817 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
2818 (FREETYPE_PATCH): Set to 0.
2819
2820 * builds/unix/configure.raw (version_info): Set to 18:6:12.
2821 * CMakeLists.txt (VERSION_MINOR): Set to 7.
2822 (VERSION_PATCH): Set to 0.
2823
2824 * docs/CHANGES: Updated.
2825
28262016-09-08 Werner Lemberg <wl@gnu.org>
2827
Werner Lembergb1e7b682016-09-08 08:56:34 +02002828 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
2829
2830 This fixes the `multi' build.
2831
28322016-09-08 Werner Lemberg <wl@gnu.org>
2833
Werner Lemberg9749f262016-09-08 07:51:03 +02002834 [autofit] Another improvement to Armenian support.
2835
2836 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
2837
2838 * src/autofit/afscript.h: Use better suited characters to derive
2839 default stem widths.
2840
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -040028412016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
2842
Alexei Podtelezhnikov15c6e8d2017-01-22 23:09:05 -05002843 * src/smooth/ftgrays.c (gray_hline): Micro-optimize.
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04002844
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -040028452016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
2846
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -04002847 [smooth] Operate in absolute bitmap coordinates.
2848
2849 Simpler bitmap addressing improves performance by 1.5%.
2850
2851 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
2852 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
2853 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
2854
28552016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
2856
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04002857 [smooth] Improve contour start (take 2).
2858
2859 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
2860 instead of...
2861 (gray_start_cell): ... this function, which is removed.
2862 (gray_convert_glyph): Make initial y-coordinate invalid.
2863
Werner Lembergebbb8b22016-09-06 16:28:57 +020028642016-09-06 Werner Lemberg <wl@gnu.org>
2865
2866 [type1] MM fonts support exactly zero named instances (#48748).
2867
2868 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
2869
Jonathan Kewa15133e2016-09-06 06:33:36 +020028702016-09-06 Jonathan Kew <jfkthame@gmail.com>
2871
2872 [cff] Fix uninitialized memory.
2873
2874 Problem reported as
2875
2876 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
2877
2878 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
2879 array to handle a `get' opcode without a previous `put'.
2880
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -040028812016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2882
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -04002883 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
2884
28852016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2886
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04002887 [smooth] Improve contour start.
2888
2889 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
2890 instead of...
2891 (gray_start_cell): ... this function, which is removed.
2892
Werner Lembergc9adf1a2016-09-05 07:32:37 +020028932016-09-05 Werner Lemberg <wl@gnu.org>
2894
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +02002895 [cff] Fix memory initialization.
2896
2897 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
2898 variants of FreeType's memory allocation macros don't do zeroing.
2899
29002016-09-05 Werner Lemberg <wl@gnu.org>
2901
Werner Lemberg1c8bb632016-09-05 08:13:42 +02002902 [ftrandom] Minor improvements.
2903
2904 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
2905 500.
2906
2907 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
2908 directories to ...
2909 (INCLUDES): ... this new variable.
2910 (LDFLAGS): New variable.
2911 (ftrandom.o, ftrandom): Updated.
2912
29132016-09-05 Werner Lemberg <wl@gnu.org>
2914
Werner Lembergc9adf1a2016-09-05 07:32:37 +02002915 [autofit] Improve Armenian support.
2916
2917 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
2918
2919 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
2920 selection of characters.
2921
2922 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2923
Werner Lemberg4b28f6a2016-09-04 19:05:45 +020029242016-09-04 Werner Lemberg <wl@gnu.org>
2925
2926 [ftrandom] Improve Makefile.
2927
2928 It now supports both a normal build (`./configure && make') and a
2929 development build (`make devel').
2930
2931 * src/tools/ftrandom/Makefile (VPATH): Set it so that
2932 `libfreetype.a' gets searched in both `objs' (for the development
2933 build) and `objs/.libs' (for a normal build which uses libtool).
2934 (LIBS): Add missing libraries.
2935 (ftrandom.o): New rule.
2936 (ftrandom): Use automatic variables.
2937
Werner Lembergf0fa7a62016-09-03 06:33:36 +020029382016-09-03 Werner Lemberg <wl@gnu.org>
2939
Werner Lemberg4e659d72016-09-03 18:14:00 +02002940 [truetype] More fixes for handling of GX deltas.
2941
2942 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
2943
2944 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
2945 sanity test for glyph variation array header size.
2946 Always set stream position before reading packed x and y deltas.
2947 Fix thinko w.r.t. `localpoints' array.
2948
29492016-09-03 Werner Lemberg <wl@gnu.org>
2950
Werner Lembergca8e98d2016-09-03 13:06:16 +02002951 [ftrandom] Various fixes.
2952
2953 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
2954 default.
2955 (error_fraction): Make it of type `double' to work as advertized –
2956 this was completely broken.
2957 Update all related code.
2958 (error_count, fcnt): Make it unsigned to fix compiler warnings.
2959 Update all related code.
2960 (fontlist): Change `len' member to `long' to fix compiler warnings.
2961 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
2962 unused variables.
2963 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
2964 (ExecuteTest): Ditto.
2965 Call `FT_Done_FreeType'.
2966 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
2967 int'.
2968 (usage): Improve output.
2969 (main): Fix compiler warnings.
2970
2971 * src/tools/ftrandom/README: Updated.
2972
29732016-09-03 Werner Lemberg <wl@gnu.org>
2974
Werner Lemberg9357ef82017-03-15 07:56:22 +01002975 [base] Avoid negative bitmap strike dimensions (#48985).
Werner Lembergb98dfda2016-09-03 08:20:31 +02002976
2977 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
2978 actually successful. For example, this can fail for value
2979 -32768 if the type is `signed short'. If there are problems,
Werner Lemberg9357ef82017-03-15 07:56:22 +01002980 disable the strike.
Werner Lembergb98dfda2016-09-03 08:20:31 +02002981
29822016-09-03 Werner Lemberg <wl@gnu.org>
2983
Werner Lembergf0fa7a62016-09-03 06:33:36 +02002984 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
2985
2986 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
2987
Werner Lembergd8ef7262016-09-02 23:27:50 +020029882016-09-02 Werner Lemberg <wl@gnu.org>
2989
Werner Lembergd87bb912016-09-02 23:56:27 +02002990 [unix] Enable 64bit support in file system access (#48962).
2991
2992 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
2993
29942016-09-02 Werner Lemberg <wl@gnu.org>
2995
Werner Lembergd8ef7262016-09-02 23:27:50 +02002996 [sfnt] Avoid left shift of negative value (#48980).
2997
2998 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
2999 constant.
3000
30012016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +02003002
3003 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
3004
Werner Lemberg7a13dc02016-09-02 08:24:01 +020030052016-09-02 Werner Lemberg <wl@gnu.org>
3006
3007 Some preparations for the next release.
3008
3009 * include/freetype/config/ftoption.h
3010 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
3011
3012 * docs/CHANGES: Updated.
3013
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -040030142016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
3015
3016 [smooth] Simplify span rendering more.
3017
3018 It turns out that there is significant cost associated with `FT_Span'
Alexei Podtelezhnikov15c6e8d2017-01-22 23:09:05 -05003019 creation and calls to `gray_render_span' because it happens so
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04003020 frequently. This removes these steps from our internal use but leaves
3021 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
3022 is about 5%.
3023
3024 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
3025 migrated to...
3026 (gray_hline): ... here.
3027
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -040030282016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
3029
3030 [smooth] Streamline pixmap drawing a bit more.
3031
3032 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04003033 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04003034
3035 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
3036
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -040030372016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
3038
3039 [smooth] Streamline pixmap drawing.
3040
3041 This gives 2% speed improvement in rendering simple glyphs.
3042
3043 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
3044 pointer to its bottom-left and pitch to be used in...
3045 (gray_TWorker): ... here.
3046 (gray_render_span): Move pixmap flow check from here...
3047 (gray_raster_render): .. to here.
3048
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -040030492016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
3050
3051 [smooth] Reduce stack of band boundaries.
3052
3053 * src/smooth/ftgrays.c (gray_TBand): Removed.
3054 (gray_convert_glyph): Updated to stack band boundaries concisely.
3055
Werner Lembergf3e71ba2016-08-26 10:31:30 +020030562016-08-26 Werner Lemberg <wl@gnu.org>
3057
Werner Lemberg57aa8392016-08-26 11:59:50 +02003058 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
3059
30602016-08-26 Werner Lemberg <wl@gnu.org>
3061
Werner Lemberg3c61a2f2016-08-26 11:50:09 +02003062 [cid] Fix commit from 2016-05-16.
3063
3064 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
3065
30662016-08-26 Werner Lemberg <wl@gnu.org>
3067
Werner Lembergf3e71ba2016-08-26 10:31:30 +02003068 [sfnt] Cache offset and size to bitmap data table.
3069
3070 This commit avoids `EBDT' and friends being looked up again and
3071 again while loading a single embedded bitmap.
3072
3073 * include/freetype/internal/tttypes.h (TT_FaceRec)
3074 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
3075 `ebdt_size'.
3076
3077 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
3078 (tt_face_load_sbit): ... this function; also store the table size
3079 and offset.
3080
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -040030812016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
3082
3083 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
3084
Werner Lemberga660e3d2016-08-26 00:23:27 +020030852016-08-26 Werner Lemberg <wl@gnu.org>
3086
3087 [type1] Fix heap buffer overflow.
3088
3089 Reported as
3090
3091 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
3092
3093 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
3094 contain glyph names.
3095
Werner Lemberg327f2e32016-08-25 12:46:08 +020030962016-08-25 Werner Lemberg <wl@gnu.org>
3097
Werner Lemberg69ce9732016-08-25 19:49:52 +02003098 [sfnt] Fix previous commit (#48901).
3099
3100 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
3101
31022016-08-25 Werner Lemberg <wl@gnu.org>
3103
Werner Lembergacd18792016-08-25 17:12:46 +02003104 [sfnt] Speed up handling of invalid format 4 cmaps.
3105
3106 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
3107 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
3108
31092016-08-25 Werner Lemberg <wl@gnu.org>
3110
Werner Lemberg327f2e32016-08-25 12:46:08 +02003111 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
3112
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -040031132016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
3114
3115 [smooth] Simplify span rendering.
3116
3117 This removes unnecessary complexity of span merging and buffering.
3118 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04003119 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04003120
3121 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
3122 (gray_TWorker): Remove span buffer and related fields.
3123 (gray_sweep, gray_hline): Updated.
3124
3125 * include/freetype/ftimage.h: Remove documentation note about
3126 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
3127
Werner Lembergcf4224a2016-08-16 06:44:23 +020031282016-08-16 Werner Lemberg <wl@gnu.org>
3129
Werner Lemberga4c2a312016-08-22 19:32:34 +02003130 [truetype] Fix `MPS' instruction.
3131
3132 According to Greg Hitchcock, MPS in DWrite really returns the point
3133 size.
3134
3135 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
3136
3137 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
3138
3139 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
3140 member.
3141
3142 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
3143 (Ins_MPS): Fix instruction.
3144
31452016-08-16 Werner Lemberg <wl@gnu.org>
3146
Werner Lemberg8521ad92016-08-16 13:44:38 +02003147 [lzw] Optimize last commit.
3148
3149 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
3150 conditional clause.
3151
31522016-08-16 Werner Lemberg <wl@gnu.org>
3153
Werner Lemberg548f68d2016-08-16 09:46:40 +02003154 [lzw] Avoid invalid left shift.
3155
Werner Lemberg6df68332016-08-16 09:50:07 +02003156 Reported as
3157
3158 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
3159
Werner Lemberg548f68d2016-08-16 09:46:40 +02003160 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
3161
31622016-08-16 Werner Lemberg <wl@gnu.org>
3163
Werner Lemberg8d7b9192016-08-16 08:07:58 +02003164 [lzw] Avoid buffer overrun.
3165
3166 Reported as
3167
3168 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
3169
3170 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
3171 underflow.
3172
31732016-08-16 Werner Lemberg <wl@gnu.org>
3174
Werner Lembergcf4224a2016-08-16 06:44:23 +02003175 [truetype] Fix compiler warning.
3176
3177 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
3178
Werner Lemberg248f5622016-08-13 06:53:53 +020031792016-08-13 Werner Lemberg <wl@gnu.org>
3180
3181 [winfonts] Avoid zero bitmap width and height.
3182
3183 Reported as
3184
3185 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
3186
3187 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
3188 (FNT_Load_Glyph): Check for zero pitch.
3189
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +020031902016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
3191
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -04003192 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
3193
31942016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
3195
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -04003196 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
3197
31982016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
3199
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02003200 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
3201
Peter Klotz3b37bfc2016-08-10 22:38:08 -040032022016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
3203
3204 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
3205
Werner Lemberg5224aae2016-08-10 19:47:29 +020032062016-08-10 Werner Lemberg <wl@gnu.org>
3207
3208 [sfnt] Use correct type for `italicAngle' field (#48732).
3209
3210 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
3211
Werner Lemberg53059f92016-08-07 09:01:33 +020032122016-08-06 Jon Spencer <jon@jonspencer.ca>
3213
3214 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
3215
3216 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
3217 advance value from the font table and then scales it by the
3218 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
3219 set that value for bitmap fonts and the advance gets scaled to zero.
3220
3221 Taken from
3222
3223 https://github.com/behdad/harfbuzz/issues/252
3224
3225 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
3226 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
3227
32282016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02003229
3230 [truetype] Fix GX variation handling of composites.
3231
3232 * src/truetype/ttgload.c (load_truetype_glyph)
3233 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
3234
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040032352016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
3236
3237 [smooth] Minor refactoring.
3238
3239 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
3240 Updated.
3241
Werner Lembergfae4ec02016-07-29 06:43:32 +020032422016-07-29 Werner Lemberg <wl@gnu.org>
3243
3244 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
3245
3246 Since 2016-05-16 we detect infinite recursion directly.
3247
3248 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
3249 `maxComponentDepth'.
3250 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
3251 `maxComponentDepth' is not valid. Instead, simply adjust its value
3252 and emit a tracing message.
3253
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020032542016-07-26 Werner Lemberg <wl@gnu.org>
3255
3256 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
3257
3258 No functional change.
3259
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020032602016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
3261
3262 [truetype] Record the end of IDEFs.
3263
3264 To match the logic in FDEF. The value of the end is only used for
3265 bound-checking in `Ins_JMPR', so it may not have been obvious that
3266 it was not recorded. Tested (as part of Font Validator 2.0) all the
3267 fonts on Fedora and did not see any change.
3268
3269 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
3270
Werner Lemberge69f34b2016-07-19 07:06:19 +020032712016-07-19 Werner Lemberg <wl@gnu.org>
3272
Werner Lemberg7f631052016-07-19 21:35:58 +02003273 [truetype] Sanitizer fix, second try.
3274
3275 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
3276 tests and use only one slot more.
3277
32782016-07-19 Werner Lemberg <wl@gnu.org>
3279
Werner Lemberge69f34b2016-07-19 07:06:19 +02003280 [truetype] Sanitizer fix.
3281
3282 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
3283 to fix nested loops.
3284
Werner Lemberga3b70d72016-07-18 06:23:36 +020032852016-07-18 Werner Lemberg <wl@gnu.org>
3286
3287 [truetype] Make GETDATA work only for GX fonts.
3288
3289 * src/truetype/ttinterp.c (opcode_name): Updated.
3290 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
3291 (TT_RunIns): Updated.
3292
32932016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02003294
Werner Lemberg8c930132016-07-17 22:40:31 +02003295 [truetype] Add support for Apple's
3296
3297 GETDATA[], opcode 0x92
3298
3299 bytecode instruction. It always returns 17, and we have absolutely
3300 no idea what it is good for...
3301
3302 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
3303 (Ins_GETDATA): New function.
3304 (TT_RunIns): Add it.
3305
33062016-07-16 Werner Lemberg <wl@gnu.org>
3307
Werner Lemberge0843602016-07-16 18:46:28 +02003308 [truetype] Add bytecode support for GX variation fonts.
3309
3310 This commit implements undocumented (but confirmed) stuff from
3311 Apple's old bytecode engine.
3312
3313 GETVARIATION[], opcode 0x91
3314 This opcode pushes normalized variation coordinates for all axes
3315 onto the stack (in 2.14 format). Coordinate of first axis gets
3316 pushed first.
3317
3318 GETINFO[], selector bit 3
3319 If GX variation support is enabled, bit 10 of the result is set
3320 to 1.
3321
3322 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
3323 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
3324 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
3325 bit 3, checking support for variation glyph hinting.
3326 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
3327 to implement opcode 0x91.
3328 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
3329
33302016-07-16 Werner Lemberg <wl@gnu.org>
3331
Werner Lemberg32a32062016-07-16 16:39:26 +02003332 [truetype] Fix GETINFO bytecode instruction.
3333
3334 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
3335 stretching information.
3336
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020033372016-07-16 Behdad Esfahbod <behdad@behdad.org>
3338
3339 [truetype] Make all glyphs in `Zycon' GX font work.
3340
3341 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
3342 tests.
3343
Werner Lemberga3b61252016-07-16 08:16:16 +020033442016-07-16 Werner Lemberg <wl@gnu.org>
3345
3346 [truetype] Fix GX delta tracing.
3347
3348 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
3349 relative point movements.
3350
33512016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02003352
3353 [truetype] More fixes for GX.
3354
3355 This finally fixes the rendering of the cyclist and the lizard in
3356 the `Zycon' font.
3357
3358 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
3359 index is always cumulative.
3360
3361 (tt_handle_deltas): Rename to...
3362 (tt_interpolate_deltas): ... This.
3363 Add new parameter for output point array.
3364 Update caller.
3365
3366 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
3367 the intermediate results of `tt_interpolate_deltas' that are to be
3368 added to `outline->points'.
3369
Werner Lembergaafff572016-07-16 06:41:39 +020033702016-07-15 Werner Lemberg <wl@gnu.org>
3371
3372 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
3373
3374 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
3375
3376 Reported by Alexei.
3377
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020033782016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
3379
3380 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
3381
3382 Problem reported by Hin-Tak Leung.
3383
Werner Lemberg894c0222016-07-15 10:23:11 +020033842016-07-15 Werner Lemberg <wl@gnu.org>
3385
Werner Lemberg1831e6f2016-07-15 10:35:32 +02003386 [autofit] Update and improve segment and edge tracing.
3387
3388 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
3389 `delta' also.
3390 Don't show first point of segment as a replacement for `pos'; this
3391 is (a) misleading, since the difference to `pos' can be almost
3392 arbitrarily large in corner cases, and (b) it is better to have all
3393 segment data in font units instead of a single value given in output
3394 space coordinates.
3395 Improve layout.
3396 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
3397 values for convenience.
3398 Improve layout.
3399
34002016-07-15 Werner Lemberg <wl@gnu.org>
3401
Werner Lemberg894c0222016-07-15 10:23:11 +02003402 [autofit] For edges, reject segments wider than 1px (#41334).
3403
3404 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
3405
3406 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
3407 `delta'.
3408 (af_latin_hints_compute_edges): Reject segments with a delta larger
3409 than 0.5px.
3410
Werner Lemberg631e2182016-07-14 06:25:05 +020034112016-07-14 Werner Lemberg <wl@gnu.org>
3412
Werner Lembergff655432016-07-14 15:01:55 +02003413 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
3414
34152016-07-14 Werner Lemberg <wl@gnu.org>
3416
Werner Lembergee3f36f2016-07-14 10:25:20 +02003417 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
3418
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05003419 * src/sfnt/sfobjs.c (sfnt_init_face): Don't strip off higher 16bits.
Werner Lembergee3f36f2016-07-14 10:25:20 +02003420
34212016-07-14 Werner Lemberg <wl@gnu.org>
3422
Werner Lemberg631e2182016-07-14 06:25:05 +02003423 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
3424
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020034252016-07-14 Behdad Esfahbod <behdad@behdad.org>
3426
3427 [truetype] Fix gxvar delta interpolation.
3428
3429 The coordinates of the base font should be used for interpolation
3430 purposes, NOT the current points (i.e., the result of accumulation
3431 of previous deltas).
3432
3433 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
3434 `points_org' before looping over all tuples.
3435
Werner Lembergf6aa0892013-05-10 07:58:47 +02003436
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00003437----------------------------------------------------------------------------
3438
Werner Lemberg563ae782017-01-04 20:16:34 +01003439Copyright 2016-2017 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00003440David Turner, Robert Wilhelm, and Werner Lemberg.
3441
3442This file is part of the FreeType project, and may only be used, modified,
3443and distributed under the terms of the FreeType project license,
3444LICENSE.TXT. By continuing to use, modify, or distribute this file you
3445indicate that you have read the license and understand and accept it
3446fully.
3447
3448
3449Local Variables:
3450version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00003451coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00003452End: