blob: 0b61da7768e587cce612695409d22c39ee275569 [file] [log] [blame]
Werner Lemberg43061d62017-01-20 10:16:38 +010012017-01-20 Werner Lemberg <wl@gnu.org>
2
3 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
4
Werner Lembergba6f3e12017-01-17 11:50:09 +010052017-01-17 Werner Lemberg <wl@gnu.org>
6
7 * include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
8
9 (TT_APPLE_ID_FULL_UNICODE): New macro.
10
11 (TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
12 TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
13 TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
14 TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
15 TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
16 TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
17 TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
18 TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
19 TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
20 TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
21 TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
22 macros.
23
24 (TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
25
26 (TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
27 TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
28 TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
29 TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
30 TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
31 TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
32 TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
33 TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
34 TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
35 TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
36 TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
37 TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
38 TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
39 TT_MS_LANGID_UIGHUR_PRC): New aliases.
40
41 Remove commented out code.
42
43 (TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
44 TT_NAME_ID_VARIATIONS_PREFIX): New macros.
45
46 (HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
47 years), use guarded long macros by default and define short versions
48 as aliases for the long ones.
49
Werner Lemberg322b3be2017-01-15 13:57:25 +0100502017-01-15 Werner Lemberg <wl@gnu.org>
51
52 * src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
53 also.
54
Werner Lemberg8ab08cf2017-01-11 10:05:27 +0100552017-01-11 Werner Lemberg <wl@gnu.org>
56
Werner Lembergc5298852017-01-12 08:42:55 +010057 * src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
58
592017-01-11 Werner Lemberg <wl@gnu.org>
60
Werner Lemberg723aafb2017-01-11 14:21:26 +010061 [truetype] Actually use metrics variation service.
62
63 * src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
64 (ft_face_get_mvar_service): New auxiliary function to look up
65 metrics variation service.
66 (FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
67 FT_Set_Var_Blend_Coordinates): Call metrics variation service.
68
69 * src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
70 named instances.
71
722017-01-11 Werner Lemberg <wl@gnu.org>
73
Werner Lembergd718ac42017-01-11 14:12:34 +010074 [truetype] Provide metrics variation service.
75
76 * include/freetype/internal/services/svmetric.h
77 (FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
78
79 * src/truetype/ttgxvar.c: Include FT_LIST_H.
80 (tt_size_reset_iterator): New auxiliary function for...
81 (tt_apply_var): New function.
82
83 * src/truetype/ttgxvar.h: Updated.
84
85 * src/truetype/ttdriver.c (tt_service_metrics_variations): Add
86 `tt_apply_mvar'.
87
88 * include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
89 variation service.
90
912017-01-11 Werner Lemberg <wl@gnu.org>
92
Werner Lemberg07ee1d22017-01-11 12:50:51 +010093 [truetype] Parse `MVAR' table.
94
95 * src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
96 (GX_Value, GX_MVarTable): New structures.
97 (GX_Blend): Add it.
98
99 * src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
100 GX_GASP_CASE): New macros.
101 (ft_var_get_value_pointer): New auxiliary function to get a pointer
102 to a value from various SFNT tables already stored in `TT_Face'.
103 (ft_var_load_mvar): New function.
104 (TT_Get_MM_Var): Call it.
105 (tt_done_blend): Updated.
106
1072017-01-11 Werner Lemberg <wl@gnu.org>
108
Werner Lemberg8ab08cf2017-01-11 10:05:27 +0100109 [truetype] More preparations for MVAR support.
110
111 * src/truetype/ttobjs.c (tt_size_reset): Add argument to make
112 function only recompute ascender, descender, and height.
113
114 * src/truetype/ttobjs.h: Updated.
115
116 * src/truetype/ttdriver.c (tt_size_select, tt_size_request):
117 Updated.
118
Werner Lembergf837a502017-01-09 10:49:03 +01001192017-01-09 Werner Lemberg <wl@gnu.org>
120
Werner Lemberg7ccca6a2017-01-09 19:54:44 +0100121 [pcf] Disable long family names by default.
122
123 * include/freetype/config/ftoption.h
124 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
125
1262017-01-09 Werner Lemberg <wl@gnu.org>
127
Werner Lemberg08fd2502017-01-09 11:30:32 +0100128 [pcf] Make long family names configurable.
129
130 The change from 2016-09-29 was too radical (except for people using
131 the openSuSE GNU/Linux distribution). To ameliorate the situation,
132 PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
133 the feature; if set, a new PCF property option
134 `no-long-family-names' can be used to switch this feature off.
135
136 * include/freetype/config/ftoption.h, devel/ftoption.h
137 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
138
139 * include/freetype/ftpcfdrv.h: New header file (only containing
140 comments currently, used for building the documentation).
141
142 * include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
143
144 * src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
145
146 * src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
147 FT_PCF_DRIVER_H.
148 (pcf_property_set, pcf_property_get): New functions.
149 (pcf_service_properties): New service.
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -0500150 (pcf_services): Updated.
Werner Lemberg08fd2502017-01-09 11:30:32 +0100151 (pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
152 `no_long_family_names'.
153
154 * src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
155 and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
156
157 * docs/CHANGES: Updated.
158
1592017-01-09 Werner Lemberg <wl@gnu.org>
160
Werner Lembergf837a502017-01-09 10:49:03 +0100161 [pcf] Introduce a driver structure.
162
163 To be filled later on with something useful.
164
165 * src/pcf/pcf.h (PCF_Driver): New structure.
166
167 * src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
168 functions.
169 (pcf_driver_class): Updated.
170
Werner Lemberg6812f172017-01-08 07:33:05 +01001712017-01-08 Werner Lemberg <wl@gnu.org>
172
Werner Lemberg469ced72017-01-08 09:28:34 +0100173 [truetype] Again some GX code shuffling.
174
175 We need this later on for MVAR also.
176
177 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
178 an item store variation delta into...
179 (ft_var_get_item_delta): ...new function.
180
1812017-01-08 Werner Lemberg <wl@gnu.org>
182
Werner Lemberg6812f172017-01-08 07:33:05 +0100183 [truetype] Adjust font variation flags for MVAR.
184
185 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
186 Remove all flags related to MVAR; replace it with...
187 (TT_FACE_FLAG_VAR_MVAR): ...this new macro.
188 (TT_Face): Remove `mvar_support' field (which was still unused).
189
Werner Lemberg8b755442017-01-06 11:47:55 +01001902017-01-06 Werner Lemberg <wl@gnu.org>
191
Werner Lemberg02919132017-01-07 07:45:28 +0100192 [truetype] More GX code shuffling.
193
194 We need this later on for MVAR also.
195
196 * src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
197 variation store into...
198 (ft_var_done_item_variation_store): ...new function.
199
2002017-01-06 Werner Lemberg <wl@gnu.org>
201
Werner Lembergfb90f002017-01-06 22:23:52 +0100202 [truetype] More generalization of GX stuff.
203
204 We need this later on for MVAR also.
205
206 * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
207 parameters for delta-set index mapping and item variation store.
208 (ft_var_load_item_variation_store): Add parameter for item variation
209 store.
210 s/hvarData/varData/.
211 Move allocation of `hvar_table' to...
212 (ft_var_load_hvar): ...this function.
213 Updated.
214
2152017-01-06 Werner Lemberg <wl@gnu.org>
216
Werner Lemberg0bd01122017-01-06 21:32:49 +0100217 [truetype] Some GX structure renames for generalization.
218
219 We need this later on for MVAR also.
220
221 * src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
222 (GX_ItemVarData): ...this.
223 (GX_HVarRegion): Renamed to...
224 (GX_VarRegion): ...this.
225 (GX_HVStore): Renamed to...
226 (GX_ItemVarStore): ...this.
227 (GX_WidthMap): Renamed to...
228 (GX_DeltaSetIdxMap): ...this.
229
230 (GX_HVarTable): Updated.
231
232 * src/truetype/ttgxvar.c: Updated.
233
2342017-01-06 Werner Lemberg <wl@gnu.org>
235
Werner Lemberg9c814702017-01-06 21:13:36 +0100236 [truetype] Code shuffling.
237
Werner Lemberg02919132017-01-07 07:45:28 +0100238 * src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
239 item variation store and delta set index mapping into...
Werner Lemberg9c814702017-01-06 21:13:36 +0100240 (ft_var_load_item_variation_store,
Werner Lemberg02919132017-01-07 07:45:28 +0100241 ft_var_load_delta_set_index_mapping): ...new functions.
Werner Lemberg9c814702017-01-06 21:13:36 +0100242
2432017-01-06 Werner Lemberg <wl@gnu.org>
244
Werner Lemberg7e1cce52017-01-06 20:31:22 +0100245 [truetype] Add HVAR access without advance width map.
246
247 * src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
248 `offsetToAdvanceWidthMapping' is zero.
249 (tt_hadvance_adjust): Implement direct deltaSet access by glyph
250 index.
251
2522017-01-06 Werner Lemberg <wl@gnu.org>
253
Werner Lemberg8b755442017-01-06 11:47:55 +0100254 [pcf] Revise driver.
255
256 This commit improves tracing and handling of malformed fonts. In
257 particular, the changes to `pcf_get_properties' fix
258
259 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
260
261 * src/pcf/pcfread.c (tableNames): Use long names for better
262 readability.
263 (pcf_read_TOC): Allow at most 9 tables.
264 (pcf_get_properties): Allow at most 256 properties.
265 Limit strings array length to 256 * (65536 + 1) bytes.
266 Better tracing.
267 (pcf_get_metric): Trace metric data.
268 (pcf_get_metrics): Allow at most 65536 metrics.
269 Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
270 potential overflow.
271 Better tracing.
272 (pcf_get_bitmaps): Allow at most 65536 bitmaps.
273 Better tracing.
274 (pcf_get_encodings, pcf_get_accel): Better tracing.
275
276 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
277 These are now shown by `pcf_get_bitmaps'.
278
Werner Lemberg025226a2017-01-04 07:45:44 +01002792017-01-04 Werner Lemberg <wl@gnu.org>
280
Werner Lemberga7c2f442017-01-04 13:12:03 +0100281 * src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
282
2832017-01-04 Werner Lemberg <wl@gnu.org>
284
Werner Lembergc9d47722017-01-04 10:00:49 +0100285 [cff] More consistency checks for pure CFFs.
286
287 Reported as
288
289 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
290
291 * src/cff/cffload.c (cff_font_load): Check element number and size
292 of Name and Top DICT indices.
293
2942017-01-04 Werner Lemberg <wl@gnu.org>
295
Werner Lemberg025226a2017-01-04 07:45:44 +0100296 [cff, truetype] Minor tracing improvement.
297
298 * src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
299 (tt_face_init): Indent first tracing message from SFNT driver.
300
Werner Lemberg248eaa42017-01-03 00:27:07 +01003012017-01-03 Werner Lemberg <wl@gnu.org>
302
Werner Lemberg89824052017-01-03 09:46:19 +0100303 [truetype] Various minor fixes.
304
305 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
306 size only if we do native hinting.
307 (TT_Load_Glyph): Trace returned error code.
308
309 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
310 returned error code.
311 (tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
312 invalid.
313
3142017-01-03 Werner Lemberg <wl@gnu.org>
315
Werner Lemberg624b6802017-01-03 09:42:41 +0100316 [sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
317
318 These tables are optional.
319
320 * src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
321
3222017-01-03 Werner Lemberg <wl@gnu.org>
323
Werner Lemberg69414e72017-01-03 06:53:13 +0100324 * src/cff/cffparse.c (cff_parse_num): Simplify.
325
3262017-01-03 Werner Lemberg <wl@gnu.org>
327
Werner Lemberg248eaa42017-01-03 00:27:07 +0100328 Various fixes for clang's undefined behaviour sanitizer.
329
330 * src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
331 (cff_blend_doBlend): Don't left-shift negative numbers.
332 Handle 5-byte numbers byte by byte to avoid alignment issues.
333
Werner Lemberg69414e72017-01-03 06:53:13 +0100334 * src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
335 byte to avoid alignment issues.
Werner Lemberg248eaa42017-01-03 00:27:07 +0100336
337 * src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
338 subrs.
339
340 * src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
341
342 * src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
343 definition of `ft_get_adobe_glyph_index'.
344
345 * src/psnames/pstables.h: Regenerated.
346
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -0500347 * src/psnames/psmodule.c: Include `pstables.h' twice to get both
Werner Lemberg248eaa42017-01-03 00:27:07 +0100348 declaration and definition.
349
350 * src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
351 casting.
352
Werner Lemberg63765a82017-01-01 10:43:41 +01003532017-01-01 Werner Lemberg <wl@gnu.org>
354
Werner Lembergbdec1622017-01-01 20:51:55 +0100355 [cff] Handle multiple `blend' operators in a row correctly.
356
357 Reported as
358
359 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
360
361 * src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
362 pointers into `subFont->blend_stack' after reallocation.
363
3642017-01-01 Werner Lemberg <wl@gnu.org>
365
Werner Lemberg63765a82017-01-01 10:43:41 +0100366 [sfnt] Return correct number of named instances for TTCs.
367
368 Without this patch, requesting information for face index N returned
369 the data for face index N+1 (or index 0).
370
371 * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
372 for negative `face_instance_index' values.
373
Werner Lemberge9a154e2016-12-31 21:41:08 +01003742016-12-31 Werner Lemberg <wl@gnu.org>
375
Werner Lemberg24be60b2017-01-01 08:20:38 +0100376 */*: Use hex numbers for errors in tracing messages.
377
3782016-12-31 Werner Lemberg <wl@gnu.org>
379
Werner Lemberge9a154e2016-12-31 21:41:08 +0100380 [truetype] Check axis count in HVAR table.
381
382 Reported as
383
384 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
385
386 * src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
387 (ft_var_load_avar): Fix tracing message.
388
3892016-12-30 Werner Lemberg <wl@gnu.org>
Werner Lemberg069083c2016-12-30 21:16:46 +0100390
391 * Version 2.7.1 released.
392 =========================
393
394
395 Tag sources with `VER-2-7-1'.
396
397 * docs/VERSION.TXT: Add entry for version 2.7.1.
398
399 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
400 builds/windows/vc2005/index.html,
401 builds/windows/vc2008/freetype.vcproj,
402 builds/windows/vc2008/index.html,
403 builds/windows/vc2010/freetype.vcxproj,
404 builds/windows/vc2010/index.html,
405 builds/windows/visualc/freetype.dsp,
406 builds/windows/visualc/freetype.vcproj,
407 builds/windows/visualc/index.html,
408 builds/windows/visualce/freetype.dsp,
409 builds/windows/visualce/freetype.vcproj,
410 builds/windows/visualce/index.html,
411 builds/wince/vc2005-ce/freetype.vcproj,
412 builds/wince/vc2005-ce/index.html,
413 builds/wince/vc2008-ce/freetype.vcproj,
414 builds/wince/vc2008-ce/index.html: s/2.7/2.7.1/, s/27/271/.
415
416 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
417
418 * builds/unix/configure.raw (version_info): Set to 19:0:13.
419 * CMakeLists.txt (VERSION_PATCH): Set to 1.
420
Werner Lemberg6b21d122016-12-30 10:00:54 +01004212016-12-30 Werner Lemberg <wl@gnu.org>
422
Werner Lemberg8fb9d222016-12-30 19:51:37 +0100423 [ftfuzzer] Replace `rand' with an xorshift algorithm.
424
425 * src/tools/ftfuzzer/ftfuzzer.cc: Don't include `stdlib.h'.
426 (Random): Implement and use a 32bit `xorshift' algorithm.
427
4282016-12-30 Werner Lemberg <wl@gnu.org>
429
Werner Lemberg6b21d122016-12-30 10:00:54 +0100430 [ftfuzzer] Restrict number of tested bitmap strikes.
431
432 Malformed fonts often have large values for the number of bitmap
433 strikes, and FreeType doesn't check the validity of all bitmap
434 strikes in advance.
435
436 Reported as
437
438 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=353
439
440 * src/tools/ftfuzzer/ftfuzzer.cc: Include `stdlib.h' for `rand'.
441 (Random): Small class to provide n randomly selected numbers
Alexei Podtelezhnikovca472222017-01-17 23:45:08 -0500442 (without repetition) out of the value set [1,N].
Werner Lemberg6b21d122016-12-30 10:00:54 +0100443 (LLVMFuzzerTestOneInput): Use it to test only up to 10 bitmap
444 strikes.
445
Werner Lemberg346b1412016-12-29 06:03:40 +01004462016-12-29 Werner Lemberg <wl@gnu.org>
447
Werner Lemberg7591bf12016-12-29 21:39:06 +0100448 [truetype] Variation font API stability issues.
449
450 Make some functions work before a call to `TT_Set_MM_Blend'.
451
452 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Exit immediately if
453 we don't blend.
454 (TT_Get_MM_Blend, TT_Get_Var_Design): Return default values if we
455 don't blend.
456
4572016-12-29 Werner Lemberg <wl@gnu.org>
458
Werner Lemberg91fc3bd2016-12-29 21:34:46 +0100459 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis data.
460
461 Reported as
462
463 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=348
464
4652016-12-29 Werner Lemberg <wl@gnu.org>
466
Werner Lemberg18018512016-12-29 21:30:06 +0100467 [truetype] Tracing fixes.
468
469 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Emit correct
470 information.
471 (TT_Set_Var_Design): Fix typo.
472 (TT_Get_Var_Design): Fix typos.
473
4742016-12-29 Werner Lemberg <wl@gnu.org>
475
Werner Lemberg84b0d992016-12-29 10:38:51 +0100476 */*: Use `0.5f' for tracing 16.16 numbers.
477
4782016-12-29 Werner Lemberg <wl@gnu.org>
479
Werner Lemberg346b1412016-12-29 06:03:40 +0100480 [pcf] Protect against gzip bombs.
481
482 Fix suggested by Kostya; reported as
483
484 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=345
485
486 * src/pcf/pcfread.c (pcf_read_TOC): Limit number of TOC entries to
487 1024.
488
Werner Lembergc4cd34a2016-12-28 08:33:35 +01004892016-12-28 Werner Lemberg <wl@gnu.org>
490
Werner Lemberg6fb549d2016-12-28 22:23:33 +0100491 [psnames] Only declare, not define, data in `pstables.h' (#49949).
492
493 Pdfium includes `pstables.h' a second time; moving the definition
494 from `pstables.h' to `psmodule.c' saves more than 60kByte data
495 segment space for this case.
496
497 * src/tools/glnames.py (StringTable::dump,
498 StringTable::dump_sublist, dump_encoding, dump_array): Emit
499 additional code to only define tables if `DEFINE_PS_TABLES' is set.
500
501 * src/psnames/pstables.h: Regenerated.
502 * src/psnames/psmodule.c (DEFINE_PS_TABLES): Define.
503
5042016-12-28 Werner Lemberg <wl@gnu.org>
505
Werner Lembergc4a1ef32016-12-28 21:22:45 +0100506 [cff] Catch `blend' op in non-variant fonts.
507
508 Reported as
509
510 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=334
511
512 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>: Don't
513 allow `blend' op for non-variant fonts.
514
5152016-12-28 Werner Lemberg <wl@gnu.org>
516
Werner Lembergc4cd34a2016-12-28 08:33:35 +0100517 [cff] Better check of number of blends.
518
519 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>,
520 src/cff/cffparse.c (cff_parse_blend): Compare number of blends with
521 stack size.
522
Werner Lemberge5e35562016-12-27 06:49:37 +01005232016-12-27 Werner Lemberg <wl@gnu.org>
524
Werner Lemberg48fd5bb2016-12-27 10:20:23 +0100525 Documentation updates.
526
527 * docs/CHANGES: Add missing information.
528
529 * docs/formats.txt: Rewritten and updated.
530
5312016-12-27 Werner Lemberg <wl@gnu.org>
532
Werner Lemberge5e35562016-12-27 06:49:37 +0100533 [truetype, type1] Implement `FT_Get_Var_Design_Coordinates'.
534
535 * src/truetype/ttgxvar.c (TT_Get_Var_Design): Implement.
536 (TT_Set_Var_Design): Fix tracing.
537
538 * src/type1/t1load.c (T1_Get_Var_Design): Implement.
539
Werner Lemberg1fecdfe2016-12-24 07:50:45 +01005402016-12-24 Werner Lemberg <wl@gnu.org>
541
Werner Lemberga300c1c2016-12-24 09:27:15 +0100542 * src/truetype/ttpload.c (tt_face_load_hdmx): Ignore `version'.
543
544 Problem reported by 張俊芝 <418092625@qq.com>.
545
5462016-12-24 Werner Lemberg <wl@gnu.org>
547
Werner Lembergd1db57c2016-12-24 09:05:16 +0100548 * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
549
550 Some fonts seem to have the `version' field in the wrong byte order.
551
552 Problem reported by 張俊芝 <418092625@qq.com>.
553
5542016-12-24 Werner Lemberg <wl@gnu.org>
555
Werner Lembergfde0b782016-12-24 08:17:19 +0100556 * src/truetype/ttpload.c (tt_face_load_loca): Sanitize table length.
557
558 This trivial fix allows us to accept more fonts.
559
560 Problem reported by 張俊芝 <418092625@qq.com>.
561
5622016-12-24 Werner Lemberg <wl@gnu.org>
563
Werner Lemberg1fecdfe2016-12-24 07:50:45 +0100564 * src/sfnt/sfobjs.c (sfnt_init_face): Fix tracing.
565
Werner Lembergada82972016-12-22 08:25:42 +01005662016-12-22 Werner Lemberg <wl@gnu.org>
567
Werner Lemberg18bd1762016-12-22 12:24:23 +0100568 * CMakeLists.txt: Make it work with cmake 2.8.11.2 (#49909).
569
5702016-12-22 Werner Lemberg <wl@gnu.org>
571
Werner Lemberg06d61b42016-12-22 10:43:46 +0100572 Ensure used preprocessor symbols are defined (#49790).
573
574 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
575 include/freetype/config/ftconfig.h: Check `__GNUC__', `__IBMC__',
576 and `__SUNPRO_C' correctly.
577
5782016-12-22 Werner Lemberg <wl@gnu.org>
579
Werner Lemberg7f733392016-12-22 10:12:17 +0100580 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Check `count'.
581
582 Reported as
583
584 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=308
585
5862016-12-22 Werner Lemberg <wl@gnu.org>
587
Werner Lembergb44e6c22016-12-22 08:30:15 +0100588 [cff] Protect against invalid `vsindex' and `blend' values.
589
590 Reported as
591
592 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=305
593
594 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVSINDEX,
595 cf2_cmdBLEND>: Implement it.
596
5972016-12-22 Werner Lemberg <wl@gnu.org>
598
Werner Lembergada82972016-12-22 08:25:42 +0100599 [ftfuzzer] Always use Adobe CFF engine.
600
601 * src/tools/ftfuzzer/ftfuzzer.cc (FT_Global::FT_Global): Implement
602 it.
603
Werner Lemberg57a67332016-12-21 06:52:23 +01006042016-12-21 Werner Lemberg <wl@gnu.org>
605
Werner Lembergd44daf92016-12-21 23:03:48 +0100606 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
607
Werner Lemberg72091102016-12-21 23:46:29 +0100608 I should really stop coding late in the evening...
609
610 Thanks again to Ben for checking.
611
6122016-12-21 Werner Lemberg <wl@gnu.org>
613
Werner Lemberg8d37efb2016-12-22 20:48:28 +0100614 [autofit] Support variation fonts.
615
616 (This ChangeLog entry was added later on.)
617
618 * src/autofit/afglobal.c (af_face_globals_free): Remove useless
619 code.
620
621 * src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
622 * FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
623 FT_Set_Var_Blend_Coordinates): Finalize
624 auto-hinter data to enforce recomputation. Note that this is a
625 brute-force method which should be improved.
626
6272016-12-21 Werner Lemberg <wl@gnu.org>
628
Werner Lemberg72091102016-12-21 23:46:29 +0100629 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
630
Werner Lembergd44daf92016-12-21 23:03:48 +0100631 Don't apply deltas twice for non-phantom points.
632
633 Spotted by Ben Wagner.
634
6352016-12-21 Werner Lemberg <wl@gnu.org>
636
Werner Lemberge6a429e2016-12-21 20:27:48 +0100637 [cff, truetype] Another try for #49829.
638
639 * src/cff/cffdrivr.c: Don't include
640 `FT_SERVICE_METRICS_VARIATIONS_H'.
641 (cff_get_advances): Use `ttface->variation_support'.
642
643 * src/truetype/ttdriver.c (tt_get_advances): Use
644 `ttface->variation_support'.
645
646 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
647 load_truetype_glyph): Use `ttface->variation_support'.
648
6492016-12-21 Werner Lemberg <wl@gnu.org>
650
Werner Lemberg64a91132016-12-21 19:30:33 +0100651 [truetype, sfnt] Introduce font variation flags to `TT_Face'.
652
653 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
654 New macros describing available functionality of various OpenType
655 tables related to font variation.
656 (TT_Face): New fields `variation_support' and `mvar_support',
657 replacing and extending `use_fvar'.
658
659 * src/sfnt/sfobjs.c (sfnt_init_face, sfnt_load_face): Use
660 `variation_support'.
661
662 * src/truetype/ttgxvar.c (ft_var_load_hvar): Set `variation_support'
663 field.
664 (TT_Vary_Apply_Glyph_Deltas): Updated.
665
6662016-12-21 Werner Lemberg <wl@gnu.org>
667
Werner Lemberg57a67332016-12-21 06:52:23 +0100668 [base] Improve sanity check for Mac resources (#49888).
669
670 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Abort if `rlen' is not
671 positive.
672
Werner Lemberg70704b32016-12-20 12:27:22 +01006732016-12-20 Werner Lemberg <wl@gnu.org>
674
Werner Lembergded4bdb2016-12-20 23:26:38 +0100675 [base] More sanity checks for Mac resources.
676
677 We use
678
679 https://github.com/kreativekorp/ksfl/wiki/Macintosh-Resource-File-Format
680
681 and
682
683 https://developer.apple.com/legacy/library/documentation/mac/pdf/MoreMacintoshToolbox.pdf#page=151
684
685 as references.
686
687 * include/freetype/internal/ftrfork.h (FT_RFork_Ref): Use FT_Short
688 for `res_id'.
689
690 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Extract map length
691 and use it to improve sanity checks.
692 Follow the specification more closely;in particular, all data types
693 are signed, not unsigned.
694 (FT_Raccess_Get_DataOffsets): Follow the specification more closely;
695 in particular, all data types are signed, not unsigned.
696 Add some sanity checks.
697
6982016-12-20 Werner Lemberg <wl@gnu.org>
699
Werner Lemberg70704b32016-12-20 12:27:22 +0100700 [truetype] Improve logic for getting fast advance widths.
701
702 * src/cff/cffdrivr.c (cff_get_advances), src/truetype/ttdriver.c
703 (tt_get_advances): Use `is_default_instance' for test; this gets
704 recomputed after changing blend coordinates.
705
Ben Wagnercc576f82016-12-20 11:37:42 +01007062016-12-20 Ben Wagner <bungeman@google.com>
707 Werner Lemberg <wl@gnu.org>
708
Werner Lembergd678b372016-12-20 12:45:31 +0100709 [truetype] Fix linear metrics of GX variation fonts (#49829).
Ben Wagnercc576f82016-12-20 11:37:42 +0100710
711 When asking for an unhinted non-default variations,
712 `linearVertAdvance' is currently the value from the `hmtx' table
713 instead of the actual value after applying the variation. `HVAR'
714 support fixes this, but fonts will exist without that table and will
715 need sane fallback.
716
Werner Lembergd678b372016-12-20 12:45:31 +0100717 Problem also reported as
Werner Lemberg59b0b3a2016-12-20 11:39:52 +0100718
719 https://bugs.chromium.org/p/skia/issues/detail?id=5917
720
Ben Wagnercc576f82016-12-20 11:37:42 +0100721 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
722 load_truetype_glyph): Implement linear advance adjustments if `HVAR'
723 or `VVAR' tables are missing.
724
Werner Lemberga1e85f12016-12-20 10:52:26 +01007252016-12-20 Werner Lemberg <wl@gnu.org>
726
727 [cff, truetype] Fast advance width retrieval for fonts with HVAR.
728
729 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
730
731 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Don't handle MM.
732
733 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
734 (cff_get_advances): Test for HVAR and VVAR.
735
736 * src/truetype/ttdriver.c (tt_get_advances): Test for HVAR and VVAR.
737
Werner Lemberg8f633a02016-12-18 06:42:31 +01007382016-12-18 Werner Lemberg <wl@gnu.org>
739
Werner Lemberg5743df72016-12-18 21:01:03 +0100740 [base] Fix invalid mac font recursion.
741
742 Reported as
743
744 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=304
745
746 * src/base/ftobjs.c (FT_Open_Face): Code moved to...
747 (ft_open_face_internal): ... this function.
748 Add a parameter to control whether we try special Mac font handling
749 in case of failure.
750 (FT_Open_Face, FT_New_Face, FT_New_Memory_Face,
751 open_face_from_buffer): Use `ft_open_face_internal'.
752
7532016-12-18 Werner Lemberg <wl@gnu.org>
754
Werner Lembergca3d4012016-12-18 18:23:19 +0100755 * src/cff/cffobjs.c (cff_face_init): Make named instances work.
756
7572016-12-18 Werner Lemberg <wl@gnu.org>
758
Werner Lemberga8652c52016-12-18 18:12:03 +0100759 [truetype, cff] Extend `get_var_blend' function of MM service.
760
761 In particular, we need access to named instance data.
762
763 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
764 Add argument for `FT_MM_Var'.
765
766 * src/cff/cffload.c (cff_get_var_blend): Updated.
767 * src/cff/cffload.h: Updated.
768
769 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
770
771 * src/truetype/ttgxvar.c (tt_get_var_blend): Updated.
772 Accept value `NULL' for arguments.
773 * src/truetype/ttgxvar.h: Updated.
774
7752016-12-18 Werner Lemberg <wl@gnu.org>
776
Werner Lemberg25f3ac22016-12-18 15:50:18 +0100777 [sfnt] Handle `fvar' with zero axes as a non-MM font.
778
779 This is better behaviour than exiting with an error.
780
781 * include/freetype/internal/tttypes.h (TT_Face): Add `use_fvar'
782 field.
783
784 * src/sfnt/sfobjs.c (sfnt_init_face): Compute `use_fvar', also
785 updating the validation code.
786 Use `use_fvar' to compute FT_FACE_FLAG_MULTIPLE_MASTERS.
787
788 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Remove `fvar' validation
789 code.
790
7912016-12-18 Werner Lemberg <wl@gnu.org>
792
Werner Lembergeb6d0202016-12-18 09:29:58 +0100793 Minor GX code shuffling.
794
795 * include/freetype/internal/tttypes.h (TT_Face): Move
796 `is_default_instance' into TT_CONFIG_OPTION_GX_VAR_SUPPORT
797 block.
798
799 * src/sfnt/sfobjs.c (sfnt_init_face): Updated.
800 * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): New macro.
801 (TT_Load_Glyph): Use it.
802
8032016-12-18 Werner Lemberg <wl@gnu.org>
804
Werner Lemberg8f633a02016-12-18 06:42:31 +0100805 [cff] Better handling of non-CFF font formats.
806
807 * src/cff/cffload.c (cff_font_load): Pure CFFs don't have a
808 signature, so return `FT_Err_Unknown_File_Format' more often.
809
Werner Lemberg50ff6c12016-12-17 07:44:46 +01008102016-12-17 Werner Lemberg <wl@gnu.org>
811
Werner Lemberg4cd68172016-12-17 22:52:50 +0100812 * src/cff/cffload.c (cff_build_blend_vector): Remove redundant code.
813
8142016-12-17 Werner Lemberg <wl@gnu.org>
815
Werner Lembergdb17ceb2016-12-17 13:39:31 +0100816 * src/truetype/ttobjs.c (tt_face_init): Simplify conditional code.
817
8182016-12-17 Werner Lemberg <wl@gnu.org>
819
Werner Lemberg7c75b162016-12-17 13:28:24 +0100820 [sfnt, truetype] Various sanitizing fixes.
821
822 * src/sfnt/sfobjs.c (sfnt_init_face): If the axis count in `fvar' is
823 zero, set `num_instances' to zero.
824
825 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Handle `fvar' table with
826 zero axes as invalid.
827
828 * src/truetype/ttobjs.c (tt_face_init): Improve logic of loading
829 `loca', `cvt', `fpgm', and `prep' table.
830
8312016-12-17 Werner Lemberg <wl@gnu.org>
832
Werner Lemberg3b125e92016-12-17 10:02:19 +0100833 Improve tracing of `FT_Open_Face'.
834
835 * src/base/ftobjs.c (FT_Open_Face): Return info on number of
836 available faces and numbered instances, or the indices of the
837 requested face and numbered instance.
838
839 * src/sfnt/sfobjs. (sfnt_open_font): Trace number of subfonts.
840
8412016-12-17 Werner Lemberg <wl@gnu.org>
842
Werner Lemberg50ff6c12016-12-17 07:44:46 +0100843 * src/cff/cffload.c (cff_load_private_dict): Always init `blend'.
844
845 Reported as
846
847 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=295
848
Werner Lembergbeecf802016-12-16 08:52:03 +01008492016-12-16 Werner Lemberg <wl@gnu.org>
850
Werner Lembergdf2cf432016-12-16 11:38:20 +0100851 [truetype] Fix `cvar' sanity test.
852
853 Reported by Dave Arnold.
854
855 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Use tuple count mask.
856
8572016-12-16 Werner Lemberg <wl@gnu.org>
858
Werner Lemberg68620242016-12-16 11:15:17 +0100859 [cff, truetype] Remove compiler warnings; fix `make multi'.
860
861 * src/cff/cf2font.h: Include `cffload.h'.
862
863 * src/cff/cffload.c: Include FT_MULTIPLE_MASTERS_H and
864 FT_SERVICE_MULTIPLE_MASTERS_H.
865 (cff_vstore_load): Eliminate `vsSize'.
866 (cff_load_private_dict): Tag as `FT_LOCAL_DEF'.
867
868 * src/cff/cffload.h: Include `cffobjs.h'.
869 Provide declaration for `cff_load_private_dict'.
870
871 * src/truetype/ttgxvar.c (ft_var_load_hvar): Eliminate
872 `minorVersion' and `map_offset'.
873
8742016-12-16 Werner Lemberg <wl@gnu.org>
875
Werner Lembergbeecf802016-12-16 08:52:03 +0100876 [cff] Fix heap buffer overflow (#49858).
877
878 * src/cff/cffparse.c (cff_parser_run): Add one more stack size
879 check.
880
Werner Lemberg01658be2016-12-15 23:10:59 +01008812016-12-15 Werner Lemberg <wl@gnu.org>
882
883 Fix clang warnings.
884
885 * src/cff/cffload.c (cff_blend_doBlend): Add cast.
886 (cff_subfont_load): Set `error' correctly.
887
888 * src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.
889
Dave Arnold9f62d2c2016-12-15 20:27:47 +01008902016-12-15 Dave Arnold <darnold@adobe.com>
891 Werner Lemberg <wl@gnu.org>
892
Dave Arnoldedf40142016-12-15 21:56:44 +0100893 [cff] Implement CFF2 support (2/2).
894
895 The font variation code. All parts dependent on the GX code in the
896 `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
897 In other words, you can still compile the `cff' module without
898 defining TT_CONFIG_OPTION_GX_VAR_SUPPORT (which brings you CFF2
899 support without font variation).
900
901 * src/cff/cf2font.c (cf2_font_setup): Add support for font
902 variation.
903 * src/cff/cf2font.h (CF2_Font): Add fields for variation data.
904
905 * src/cff/cf2ft.c (cf2_free_instance): Free blend data.
906 (cf2_getVStore, cf2_getNormalizedVector): New functions.
907 * src/cff/cf2ft.h: Updated.
908
909 * src/cff/cf2intrp.c: Include `cffload.h'.
910 (cf2_cmdRESERVED_15, cf2_cmdRESERVED_16): Replace with...
911 (cf2_cmdVSINDEX, cf2_cmdBLEND): ... this new enum values.
912 (cf2_doBlend): New function.
913 (cf2_interpT2CharString): Handle `vsindex' and `blend' opcodes.
914
915 * src/cff/cffload.c (FT_fdot14ToFixed): New macro.
916 (cff_vstore_done, cff_vstore_load): New functions.
917 (cff_blend_clear, cff_blend_doBlend, cff_blend_build_vector,
918 cff_blend_check_vector): New functions.
919 (cff_load_private_dict): Add arguments for blend vector.
920 Handle blend data.
921 (cff_subfont_load, cff_subfont_done): Updated.
922 (cff_font_load): Handle CFF2 variation store data.
923 (cff_font_done): Updated.
924 * src/cff/cffload.h: Include `cffparse.h'.
925 Updated.
926
927 * src/cff/cffobjs.c (cff_face_done): Updated.
928
929 * src/cff/cffparse.c: Include `cffload.h'.
930 (cff_parse_num): Handle internal value 255.
931 (cff_parse_vsindex, cff_parse_blend): New functions.
932 (CFF_FIELD_BLEND): New macro.
933 (cff_parser_run): Updated.
934 * src/cff/cffparse.h (cff_kind_blend): New enum value.
935
936 * src/cff/cfftoken.h: Handle `vstore', `vsindex', and `blend'
937 dictionary values.
938
939 * src/cff/cfftypes.h (CFF_VarData, CFF_AxisCoords, CFF_VarRegion,
940 CFF_VStore, CFF_Blend): New structures.
941 (CFF_FontRecDict): Add `vstore_offset' field.
942 (CFF_Private): Add `vsindex' field.
943 (CFF_SubFont): Add fields for blend data.
944 (CFF_Font): Add `vstore' field.
945
946 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `CFF2' is equal to `gvar',
947 since glyph variation data is directly embedded.
948 (TT_Set_MM_Blend): Don't load `gvar' table for CFF2 fonts.
949
9502016-12-15 Dave Arnold <darnold@adobe.com>
951 Werner Lemberg <wl@gnu.org>
952
Dave Arnold9f62d2c2016-12-15 20:27:47 +0100953 [cff] Implement CFF2 support (1/2).
954
955 This commit does not contain the blend code for font variation
956 support, which follows in another commit.
957
958 You should ignore whitespace while inspecting this commit.
959
960 * include/freetype/internal/tttypes.h (TT_Face): Add `isCFF2'
961 member.
962
963 * src/cff/cf2font.h (CF2_Font): Add `isCFF2' member.
964
965 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Handle `isCFF2'
966 flag.
967 (cf2_getMaxstack): New function.
968 * src/cff/cf2ft.h: Updated.
969
970 * src/cff/cf2intrp.c (cf2_escRESERVED_38): New enum.
971 (cf2_interpT2CharString): Handle CFF2 differences.
972 Add tracing message for errors.
973
974 * src/cff/cffdrivr.c (cff_get_glyph_name, cff_get_name_index):
975 Update for CFF2.
976
977 * src/cff/cffload.c (FT_FIXED_ONE): New macro.
978 (cff_index_init, cff_index_load_offsets, cff_index_access_element,
979 cff_index_get_name, cff_ft_select_get, cff_load_private_dict,
980 cff_subfont_load, cff_font_load): Handle CFF2.
981 * src/cff/cffload.h: Updated.
982
983 * src/cff/cffobjs.c (cff_face_init): Handle CFF2.
984
985 * src/cff/cffparse.c (cff_parse_maxstack): New function.
986 (CFFCODE_TOPDICT, CFFCODE_PRIVATE): Removed
987 * src/cff/cffparse.h (CFF2_MAX_STACK, CFF2_DEFAULT_STACK): New
988 macros.
989 (CFF2_CODE_TOPDICT, CFF2_CODE_FONTDICT, CFF2_CODE_PRIVATE): New
990 macros.
991
992 * src/cff/cfftoken.h: Add fields for CFF2 dictionaries (but no blend
993 stuff).
994
995 * src/cff/cfftypes.h (CFF_Index): Add `hdr_size' field.
996 (CFF_FontRecDict): Add `maxstack' field.
997 (CFF_Private): Add `subfont' field.
998 (CFF_Font): Add `top_dict_length' and `cff2' fields.
999
1000 * src/sfnt/sfobjs.c (sfnt_load_face): Handle `CFF2' table.
1001
Werner Lemberg3bd79cc2016-12-15 14:34:57 +010010022016-12-15 Werner Lemberg <wl@gnu.org>
1003 Dave Arnold <darnold@adobe.com>
1004
1005 [truetype] Provide HVAR advance width variation as a service.
1006
1007 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1008
1009 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
1010
1011 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Prevent
1012 double adjustment of advance width.
1013
1014 * src/sfnt/ttmtx.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1015 (tt_face_get_metrics): Apply metrics variations.
1016
Dave Arnold41533b92016-12-15 00:00:45 +010010172016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold097cd872016-12-15 12:58:26 +01001018 Werner Lemberg <wl@gnu.org>
1019
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01001020 [truetype] Provide function to apply `HVAR' advance width variation.
1021
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01001022 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1023
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01001024 * src/truetype/ttgxvar.c (tt_hadvance_adjust): New function.
1025 * src/truetype/ttgxvar.h: Updated.
1026
10272016-12-15 Dave Arnold <darnold@adobe.com>
1028 Werner Lemberg <wl@gnu.org>
1029
Dave Arnold097cd872016-12-15 12:58:26 +01001030 [truetype] Add `HVAR' table parsing.
1031
1032 Note that this is not complete yet; it only handles advance width
1033 variation.
1034
1035 Activation of the code follows in another commit.
1036
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01001037 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1038
Dave Arnold097cd872016-12-15 12:58:26 +01001039 * include/freetype/ftmm.h (FT_Var_Named_Style): Add `psid' member.
1040
1041 * src/truetype/ttgxvar.h (GX_HVarData, GX_AxisCoords, GX_HVarRegion,
1042 GX_HVStore, GX_WidthMap): New auxiliary structures for...
1043 (GX_HVarTable): ... HVAR main structure.
1044 (GX_BlendRec): Add data for HVAR loading.
1045
1046 * src/truetype/ttgxvar.c (FT_FIXED_ONE, FT_fdot14ToFixed,
1047 FT_intToFixed, FT_fixedToInt): New macros.
1048 (ft_var_load_hvar): New function.
1049 (TT_Get_MM_Var): Updated.
1050 (tt_done_blend): Deallocate HVAR data.
1051
10522016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold010e0612016-12-15 11:22:15 +01001053
Dave Arnoldabd58582016-12-15 12:17:22 +01001054 [cff] Extend number parsing.
1055
1056 The forthcoming CFF2 support needs a dynamic parsing limit.
1057
1058 * src/cff/cffparse.c (cff_parse_num, do_fixed, cff_parse_fixed,
1059 cff_parse_fixed_scaled, cff_parse_fixed_dynamic): Add argument for
1060 parser.
1061 (cff_parse_font_matrix, cff_parse_font_bbox, cff_parse_private_dict,
1062 cff_parse_multiple_master, cff_parse_cid_ros, cff_parser_run): Updated.
1063
1064 * src/cff/cffparse.h (cff_parse_num): Export locally.
1065
10662016-12-15 Dave Arnold <darnold@adobe.com>
1067
Dave Arnold010e0612016-12-15 11:22:15 +01001068 [cff] Implement dynamic stack size for Adobe engine.
1069
1070 This also adds `cf2_stack_setReal' and `cf2_stack_pop', needed for
1071 the forthcoming CFF2 support.
1072
1073 * src/cff/cf2stack.c (cf2_stack_init): Add argument for stack size.
1074 (cf2_stack_free): Deallocate stack.
1075 (cf2_stack_count, cf2_stack_pushInt, cf2_stack_pushFixed,
1076 cf2_stack_popInt, cf2_stack_popFixed, cf2_stack_getReal,
1077 cf2_stack_clear): Updated.
1078 (cf2_stack_setReal, cf2_stack_pop): New functions.
1079
1080 * src/cff/cf2stack.h (CF2_Stack): Add `stackSize' member.
1081 Update function declarations.
1082
1083 * src/cff/cf2intrp.c (cf2_interpT2CharString): Updated.
1084
1085 * src/cff/cffparse.c (cff_parser_init): Add parameter for stack
1086 size; return error code.
1087 (cff_parser_done): New function.
1088 (cff_parser_run): Updated.
1089
1090 * src/cff/cffparse.h (CFF_Parser): Add `stackSize' member and make
1091 `stack' a pointer.
1092 Update function declarations.
1093
1094 * src/cff/cffload.c (cff_load_private_dict, cff_subfont_load):
1095 Updated.
1096
10972016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold41533b92016-12-15 00:00:45 +01001098 Werner Lemberg <wl@gnu.org>
1099
1100 [cff] Code shuffling.
1101
1102 * src/cff/cfftypes.h (CFF_Font): Add `library' and `base_offset'
1103 fields.
1104
1105 * src/cff/cffload.c (cff_subfont_load): Change last argument to
1106 `CFF_Font'
1107 Split off parsing of private dictionary into...
1108 (cff_load_private_dict): ...this new function.
1109 (cff_font_load): Updated.
1110
Werner Lembergab22b432016-12-14 18:34:55 +010011112016-12-14 Werner Lemberg <wl@gnu.org>
1112
Werner Lemberg09183252016-12-14 20:44:11 +01001113 [sfnt, truetype] Add framework for Metrics Variations service.
1114
1115 No effect yet; service functions will be implemented later on.
1116
1117 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1118
1119 * include/freetype/internal/services/svmetric.h: New file.
1120
1121 * include/freetype/internal/ftserv.h
1122 (FT_SERVICE_METRICS_VARIATIONS_H): New macro.
1123
1124 * include/freetype/internal/tttypes.h (TT_Face): New field `var'.
1125
1126 * src/sfnt/sfobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1127 (sfnt_init_face): Initialize `face->var'.
1128
1129 * src/truetype/ttdriver.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1130 (tt_service_metrics_variations): New service.
1131 (tt_services): Updated.
1132
1133 * src/truetype/ttpic.h: Updated.
1134
11352016-12-14 Werner Lemberg <wl@gnu.org>
1136
Werner Lembergc628a7d2016-12-14 19:31:42 +01001137 [cff] Add Multiple Masters service.
1138
1139 The code simply uses the MM functions from the `truetype' module.
1140
1141 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1142
1143 * include/freetype/internal/tttypes.h (TT_Face): New field `mm'.
1144
1145 * src/cff/cffdrivr.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
1146 (cff_set_mm_blend, cff_get_mm_blend, cff_get_mm_var,
1147 cff_set_var_design, cff_get_var_design): New functions.
1148 (cff_service_multi_masters): New service.
1149 (cff_services): Updated.
1150
1151 * src/cff/cffload.c (cff_get_var_blend, cff_done_blend): New
1152 functions.
1153 * src/cff/cffload.h: Updated.
1154
1155 * src/cff/cffpic.h (CFF_SERVICE_MULTI_MASTERS_GET): New macro.
1156
1157 * src/sfnt/sfobjs.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
1158 (sfnt_init_face): Initialize `face->mm'.
1159
11602016-12-14 Werner Lemberg <wl@gnu.org>
1161
Werner Lemberga7dc0c32016-12-14 18:54:21 +01001162 Extend functionality of `ft_module_get_service'.
1163
1164 It can now differentiate between local and global searches.
1165
1166 * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
1167 (FT_Get_TrueType_Engine_Type): Updated.
1168
1169 * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
1170
1171 * include/freetype/internal/ftobjs.h: Updated.
1172 * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
1173 Updated.
1174
11752016-12-14 Werner Lemberg <wl@gnu.org>
1176
Werner Lembergab22b432016-12-14 18:34:55 +01001177 * src/truetype/ttgxvar.c (tt_get_var_blend): Fix compiler warning.
1178
Werner Lemberg4e075162016-12-14 18:25:44 +010011792016-12-14 Dave Arnold <darnold@adobe.com>
1180 Werner Lemberg <wl@gnu.org>
1181
1182 [sfnt, cff] Minor preparations.
1183
1184 * include/freetype/tttags.h (TTAG_CFF2, TTAG_HVAR, TTAG_MVAR,
1185 TTAG_VVAR): New SFNT table tags.
1186
1187 * src/cff/cf2fixed.h (CF2_FIXED_ONE, CF2_FIXED_EPSILON): Add cast.
1188
Werner Lemberg27bdb362016-12-10 09:56:03 +010011892016-12-10 Werner Lemberg <wl@gnu.org>
1190
Werner Lemberg8b174b42016-12-11 09:16:52 +01001191 [truetype, type1] Add `get_var_blend' to MM service.
1192
1193 For internal use; we want to share code between the forthcoming CFF2
1194 support and TrueType.
1195
1196 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
1197 New typedef.
1198 (MultiMasters): Add `get_var_blend'.
1199 (FT_Service_MultiMasters): Updated.
1200
1201 * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
1202 * src/truetype/ttgxvar.h: Updated.
1203
1204 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
1205 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
1206
12072016-12-10 Werner Lemberg <wl@gnu.org>
1208
Werner Lemberg27bdb362016-12-10 09:56:03 +01001209 [truetype, type1] Add `done_blend' to MM service.
1210
1211 For internal use; we want to share code between the forthcoming CFF2
1212 support and TrueType.
1213
1214 * include/freetype/internal/services/svmm.h (FT_Done_Blend_Func):
1215 New typedef.
1216 (MultiMasters): Add `done_blend'.
1217 (FT_Service_MultiMasters): Updated.
1218
1219 * src/truetype/ttgxvar.c (tt_done_blend): Use `TT_Face' as argument.
1220 * src/truetype/ttgxvar.h: Updated.
1221
1222 * src/truetype/ttobjs.c (TT_Face_Done): Updated.
1223
1224 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
1225 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
1226
Werner Lemberg3205a442016-12-09 06:55:34 +010012272016-12-09 Werner Lemberg <wl@gnu.org>
1228
1229 [sfnt] Revert change from 2016-12-08.
1230
1231 I missed the functionality of `ft_module_get_service', which makes
1232 the change unnecessary.
1233
Werner Lemberg29aa9572016-12-08 08:59:34 +010012342016-12-08 Werner Lemberg <wl@gnu.org>
1235
Werner Lemberg4191b772016-12-08 22:33:46 +01001236 Add framework to support services with 8 functions.
1237
1238 We will need this for CFF variation font support.
1239
1240 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC8):
1241 New macro.
1242
12432016-12-08 Werner Lemberg <wl@gnu.org>
1244
Werner Lemberg29aa9572016-12-08 08:59:34 +01001245 [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
1246
1247 CFF2 fonts will need access to those two functions.
1248
1249 * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
1250 (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
1251 (FT_DEFINE_SFNT_INTERFACE): Updated.
1252
1253 * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
1254 Fix signatures to exactly correspond to the glyph dict service
1255 function typedefs.
1256 (sfnt_interface): Updated.
1257
Dave Arnoldbcae6572016-12-05 22:08:15 +010012582016-12-06 Dave Arnold <darnold@adobe.com>
1259
1260 Add `FT_Get_Var_Design_Coordinates' function.
1261
1262 Note that the low-level functions aren't implemented yet.
1263
1264 * include/freetype/ftmm.h: Declare.
1265
1266 * include/freetype/internal/services/svmm.h
1267 (FT_Get_Var_Design_Func): New typedef.
1268 (MultiMasters): New MM service function `get_var_design'.
1269 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
1270 Update all callers.
1271
1272 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
1273
1274 * src/truetype/ttdriver.c: Updated.
1275
1276 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
1277 handle `get_var_design' service.
1278 * src/truetype/ttgxvar.h: Updated.
1279
1280 * src/type1/t1driver.c: Updated.
1281
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05001282 * src/type1/t1load.c (T1_Get_Var_Design): New dump function to
Dave Arnoldbcae6572016-12-05 22:08:15 +01001283 handle `get_var_design' service.
1284 * src/type1/t1load.h: Updated.
1285
Werner Lembergc0fae7d2016-12-06 11:13:19 +010012862016-12-06 Werner Lemberg <wl@gnu.org>
1287
1288 * src/type1/t1load.c (parse_subrs): Fix memory leak.
1289
1290 The `subrs' keyword might erroneously occur multiple times.
1291
1292 Reported as
1293
1294 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
1295
Werner Lemberg602be7c2016-12-01 11:36:37 +010012962016-12-01 Werner Lemberg <wl@gnu.org>
1297
1298 [gzip] Improve building with external zlib (#49673).
1299
1300 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
1301 the following error.
1302
1303 ftgzip.c
1304 zlib-1.2.8\zlib.h(86): error C2061:
1305 syntax error: identifier 'z_const'
1306 zlib-1.2.8\zlib.h(94): error C2054:
1307 expected '(' to follow 'z_const'
1308 zlib-1.2.8\zlib.h(94): error C2085:
1309 'msg': not in formal parameter list
1310 ...
1311 zlib-1.2.8\zlib.h(877): fatal error C1003:
1312 error count exceeds 100; stopping compilation
1313
1314 The error happens because FreeType keeps an own copy of zlib-1.1.4
1315 under `src/gzip'. When building `src/gzip/ftgzip.c' with
1316 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
1317
1318 #include <zlib.h>
1319
1320 which correctly finds an external `zlib.h', but `zlib.h' itself has
1321 a line
1322
1323 #include "zconf.h"
1324
1325 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
1326 compiling the files in `src/gzip'.
1327
1328 * src/gzip/zconf.h: Rename to...
1329 * src/gzip/ftzconf.h: ... this.
1330 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
1331
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +010013322016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
1333
1334 [autofit] Fix Emscripten crash (patch #9180).
1335
1336 Function calls through pointers must use a matching signature to
1337 work on Emscripten, since such calls are dispatched through lookup
1338 tables grouped by signature.
1339
1340 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
1341 typedef.
1342
Werner Lembergd949a3d2016-11-29 12:09:56 +010013432016-11-29 Werner Lemberg <wl@gnu.org>
1344
Werner Lemberg1d28f692016-11-29 18:45:22 +01001345 [smooth] Revert previous commit. Already fixed with 6ca54c64.
1346
13472016-11-29 Werner Lemberg <wl@gnu.org>
1348
Werner Lembergd949a3d2016-11-29 12:09:56 +01001349 [smooth] Avoid conditional jump on uninitialized value (#49711).
1350
1351 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
1352
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +010013532016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
1354
1355 [autofit] Code shuffling.
1356
1357 Also improve some comments and remove unused code.
1358
1359 No functional change.
1360
1361 * src/autofit/afloader.c (af_loader_load_g): Merged with...
1362 (af_loader_load_glyph): ...this function.
1363 Split off emboldening code into...
1364 (af_loader_embolden_glyph_in_slot): ... this function.
1365
Werner Lemberg78150502016-11-17 12:00:20 +010013662016-11-17 Werner Lemberg <wl@gnu.org>
1367
1368 Better support of LLP64 systems with gcc (and clang).
1369
1370 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
1371
1372 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
1373 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
1374
Werner Lembergdd26e3d2016-11-10 12:03:32 +010013752016-11-10 Werner Lemberg <wl@gnu.org>
1376
1377 Fix `lcd_weights' array size.
1378
1379 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
1380
1381 Reported by Nikolaus.
1382
Werner Lemberg565db952016-11-06 12:33:51 +010013832016-11-06 Werner Lemberg <wl@gnu.org>
1384
Werner Lemberge1ee5472016-11-06 12:39:05 +01001385 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
1386
13872016-11-06 Werner Lemberg <wl@gnu.org>
1388
Werner Lemberg1c6fd992016-11-06 12:37:55 +01001389 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
1390
1391 It's unavoidable to call the PNG engine, but to get the metrics it
1392 is sufficient to read the PNG image's header only.
1393
1394 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
1395 allocation of the glyph slot.
1396 * src/sfnt/pngshim.h: Updated.
1397 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
1398 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
1399
14002016-11-06 Werner Lemberg <wl@gnu.org>
1401
Werner Lemberg565db952016-11-06 12:33:51 +01001402 [sfnt] Speed up `sbix' lookup.
1403
1404 This also fixes a bug introduced in 2016-10-01 which prevents
1405 display of embedded bitmap fonts that use the `sbix' format.
1406
1407 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
1408 offset also in `ebdt_size' and `ebdt_start', respectively. This
1409 makes the test for an embedded bitmap data table succeed for this
1410 format.
1411
1412 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
1413 `ebdt_size' and `ebdt_start'
1414 (tt_face_load_sbix_image): Ditto.
1415
Werner Lemberg37e193e2016-11-06 12:32:51 +010014162016-11-06 Seigo Nonaka <nona@google.com>
1417 Werner Lemberg <wl@gnu.org>
1418
1419 Introduce a way of quickly retrieving (embedded) bitmap metrics.
1420
1421 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
1422 until the user calls `FT_Render_Glyph'. However, it always
1423 allocates memory for bitmaps and copies or decodes the contents of a
1424 bitmap glyph, which can be quite slow for PNG data.
1425
1426 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
1427 macro.
1428
1429 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
1430 FT_LOAD_BITMAP_METRICS_ONLY is used.
1431
1432 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
1433 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
1434 the glyph slot.
1435 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
1436 tt_face_load_sbit_image): Updated.
1437
1438 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
1439 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
1440
1441 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
1442 argument to control allocation of the glyph slot.
1443 * src/pfr/pfrobjs (pfr_slot_load): Updated.
1444
1445 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
1446
1447 * docs/CHANGES: Updated.
1448
14492016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +01001450
1451 Synchronize with gnulib (#49448).
1452
1453 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
1454 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
1455 current version of `intprops.h'.
1456 Other minor synchronization to reduce code differences between the
1457 three files.
1458
Behdad Esfahbodb72858c2016-11-03 06:41:00 +010014592016-11-03 Behdad Esfahbod <behdad@behdad.org>
1460
1461 [truetype] Clamp variation requests to valid range.
1462
1463 This is required by OpenType 1.8; it also avoids rounding surprises.
1464
1465 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
1466 outside of the allowed range to always stay within the range instead
1467 of producing an error.
1468
Werner Lemberg328d6842016-10-29 00:18:56 +020014692016-10-29 Werner Lemberg <wl@gnu.org>
1470
1471 [truetype] Remove clang warnings.
1472
1473 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
1474 loop counter handling.
1475
1476 * src/truetype/ttinterp.c: Updated.
1477 (Ins_SCANTYPE): Use signed constant.
1478 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
1479
Werner Lembergddf38722016-10-27 07:27:27 +020014802016-10-27 Werner Lemberg <wl@gnu.org>
1481
1482 [truetype] Fix commit from 2014-11-24.
1483
1484 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1485
1486 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
1487 logic.
1488
Werner Lemberg56140902016-10-26 08:10:59 +020014892016-10-26 Werner Lemberg <wl@gnu.org>
1490
Werner Lemberg9c45ac32016-10-26 16:00:00 +02001491 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
1492
1493 * include/freetype/ftmm.h: Declare.
1494
1495 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
1496 New typedef.
1497 (MultiMasters): New MM service function `get_mm_blend'.
1498 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
1499 Update all callers.
1500
1501 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
1502 FT_Get_Var_Blend_Coordinates): Implement.
1503
1504 * src/truetype/ttdriver.c: Updated.
1505
1506 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
1507 `get_mm_blend' service.
1508 * src/truetype/ttgxvar.h: Updated.
1509
1510 * src/type1/t1driver.c: Updated.
1511
1512 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
1513 `get_mm_blend' service.
1514 * src/type1/t1load.h: Updated.
1515
1516 * docs/CHANGES: Document.
1517
15182016-10-26 Werner Lemberg <wl@gnu.org>
1519
Werner Lemberg56140902016-10-26 08:10:59 +02001520 * src/type1/t1load.c (parse_subrs): Fix limit check.
1521
1522 Reported as
1523
1524 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
1525
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -040015262016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
1527
1528 [cff] Correct cmap format reporting (#24819).
1529
1530 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
1531 charmap instead of guessing its format and language.
1532
Werner Lemberg57741402016-10-22 18:34:48 +020015332016-10-22 Werner Lemberg <wl@gnu.org>
1534
Werner Lemberg50816742016-10-22 19:16:08 +02001535 [truetype] Fix SCANTYPE instruction (#49394).
1536
1537 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
1538
15392016-10-22 Werner Lemberg <wl@gnu.org>
1540
Werner Lemberg57741402016-10-22 18:34:48 +02001541 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
1542
1543 * src/sfnt/ttpost.c (load_format_25): We need at least a single
1544 table entry.
1545
Werner Lemberg7eeaf982016-10-14 08:58:17 +020015462016-10-14 Werner Lemberg <wl@gnu.org>
1547
1548 [truetype] Fix handling of `cvar' table data.
1549
1550 Reported as
1551
1552 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
1553
1554 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
1555 indices.
1556
Werner Lemberg92281222016-10-11 07:12:12 +020015572016-10-11 Werner Lemberg <wl@gnu.org>
1558
Werner Lemberg9c54d122016-10-11 08:57:55 +02001559 [psaux] Fix handling of invalid flex subrs.
1560
1561 Problem reported as
1562
1563 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
1564
1565 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
1566 <op_callothersubr>: Set `flex_state' after error checking.
1567
15682016-10-11 Werner Lemberg <wl@gnu.org>
1569
Werner Lemberg92281222016-10-11 07:12:12 +02001570 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
1571
Werner Lembergd61b0422016-10-08 19:20:33 +020015722016-10-08 Werner Lemberg <wl@gnu.org>
1573
Werner Lemberg6b354932016-10-08 20:26:59 +02001574 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
1575
15762016-10-08 Werner Lemberg <wl@gnu.org>
1577
Werner Lembergd61b0422016-10-08 19:20:33 +02001578 [cid] Fix parsing of subr offsets.
1579
1580 Bug introduced 2016-05-16.
1581
1582 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
1583
Werner Lembergfcc0ee82016-10-01 20:12:25 +020015842016-10-01 Werner Lemberg <wl@gnu.org>
1585
1586 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
1587
1588 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
1589 a bitmap data table.
1590
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -040015912016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
1592
1593 [smooth] Remove impossibility.
1594
1595 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
1596 (gray_convert_glyph): Remove impossible condition and clean up.
1597
Werner Lembergbf902392016-09-29 13:04:46 +020015982016-09-29 Werner Lemberg <wl@gnu.org>
1599
Werner Lemberg35764872016-09-30 08:11:52 +02001600 [pcf] Enrich family name with foundry name and glyph width info.
1601
1602 This is a very old patch from openSuSE (from 2006, submitted to
1603 FreeType in 2011) that I forgot to apply.
1604
1605 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
1606
1607 Prepend the foundry name plus a space to the family name. There are
1608 many fonts just called `Fixed' which look completely different, and
1609 which have nothing to do with each other. When selecting `Fixed' in
1610 KDE or Gnome one gets results that appear rather random, the style
1611 changes often if one changes the size and one cannot select some
1612 fonts at all.
1613
1614 We also check whether we have `wide' characters; all put together,
1615 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
1616
1617 * src/pcf/pcfread.c (pcf_load_font): Implement it.
1618
1619 * docs/CHANGES: Document it.
1620
16212016-09-29 Werner Lemberg <wl@gnu.org>
1622
Werner Lemberg71b617d2016-09-29 19:53:39 +02001623 [ftfuzzer] Speed up.
1624
1625 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
1626 check for embedded bitmaps if we have a non-default instance.
1627
16282016-09-29 Werner Lemberg <wl@gnu.org>
1629
Werner Lemberg2067c692016-09-29 19:49:07 +02001630 [truetype] Disallow bitmap strokes for non-default instances.
1631
1632 Also speed up access of default instances if GX variations are
1633 active.
1634
1635 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
1636 `is_default_instance' member.
1637
1638 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
1639 `is_default_instance'.
1640
1641 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
1642 load_truetype_glyph): Add test for default instance.
1643 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
1644
1645 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
1646 `is_default_instance'.
1647
16482016-09-29 Werner Lemberg <wl@gnu.org>
1649
Werner Lembergbf902392016-09-29 13:04:46 +02001650 [truetype] Clean up `TT_Face' structure.
1651
1652 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
1653 fields `horz_metrics' and `vert_metrics'.
1654 Update documentation.
1655
1656 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
1657
Werner Lemberg2ecf89b2016-09-28 19:06:21 +020016582016-09-28 Werner Lemberg <wl@gnu.org>
1659
Werner Lemberg45cad2e2016-09-28 19:10:52 +02001660 More FT_ZERO usage.
1661
1662 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
1663 s/ft_memset/FT_MEM_ZERO/.
1664
1665 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
1666 s/ft_memset/FT_ARRAY_ZERO/.
1667
1668 * src/raster/ftraster.c (FT_ZERO): Define.
1669 (ft_black_new): Use it.
1670 * src/raster/ftrend1.c (ft_raster1_get_cbox):
1671 s/FT_MEM_ZERO/FT_ZERO/.
1672
1673 * src/smooth/ftgrays.c (FT_ZERO): Define.
1674 (gray_raster_new): Use it.
1675 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
1676 s/FT_MEM_ZERO/FT_ZERO/.
1677
16782016-09-28 Werner Lemberg <wl@gnu.org>
1679
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02001680 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
1681
Werner Lemberg0d945922016-09-27 08:44:31 +020016822016-09-27 Werner Lemberg <wl@gnu.org>
1683
Werner Lemberga3e2c832016-09-27 21:42:02 +02001684 [truetype] Trace number of executed opcodes.
1685
1686 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
1687
16882016-09-27 Werner Lemberg <wl@gnu.org>
1689
Werner Lemberge27b8a52016-09-27 21:21:01 +02001690 [truetype] Speed up `TT_Load_Glyph'.
1691
1692 This avoids additional calls to `tt_face_lookup_table' for the
1693 `glyf' table, which can be expensive.
1694
1695 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
1696 `glyf_offset' field to ...
1697 (TT_FaceRec): ... this structure.
1698 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
1699 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +02001700 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +02001701
17022016-09-27 Werner Lemberg <wl@gnu.org>
1703
Werner Lemberg0d945922016-09-27 08:44:31 +02001704 [truetype] Introduce dynamic limits for some bytecode opcodes.
1705
1706 This speeds up FreeType's handling of malformed fonts.
1707
1708 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
1709 of twilight points, the total number of negative jumps, and the
1710 total number of loops in LOOPCALL opcodes. The values are based on
1711 the number of points and entries in the CVT table.
1712 (Ins_JMPR): Test negative jump counter.
1713 (Ins_LOOPCALL): Test loopcall counter.
1714
1715 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
1716
1717 * docs/CHANGES: Updated.
1718
Werner Lembergd11e8b62016-09-25 15:32:04 +020017192016-09-25 Werner Lemberg <wl@gnu.org>
1720
Werner Lemberga7649632016-09-25 16:29:05 +02001721 [truetype] Sanitize only last entry of `loca' table.
1722
1723 Without this patch, a loca sequence like `0 100000 0 100000 ...',
1724 where value 100000 is larger than the `glyf' table size, makes
1725 FreeType handle the whole `glyf' table as a single glyph again and
1726 again, which is certainly invalid (and can be very slow, too).
1727
1728 * src/truetype/ttpload.c (tt_face_get_location): Implement.
1729 Improve tracing messages.
1730
17312016-09-25 Werner Lemberg <wl@gnu.org>
1732
Werner Lembergd11e8b62016-09-25 15:32:04 +02001733 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
1734
Werner Lemberg2f2e73c2016-09-24 22:42:58 +020017352016-09-24 Werner Lemberg <wl@gnu.org>
1736
1737 [autofit] Tracing fixes.
1738
1739 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
1740 functions only if we actually do tracing.
1741
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -040017422016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1743
1744 [smooth] Reduce divisions in the line renderer.
1745
1746 We don't need some divisions if a line segments stays within a single
1747 row or a single column of pixels.
1748
1749 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
1750 conditional.
1751
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -040017522016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1753
1754 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
1755
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -040017562016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
1757
1758 [smooth] Another tiny speed-up.
1759
1760 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
1761 (gray_record_cell): ... this function.
1762
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -040017632016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1764
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -04001765 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
1766
17672016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1768
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04001769 [smooth] Fix valgrind warning and reoptimize.
1770
1771 The algorithm calls `gray_set_cell' at the start of each new contour
1772 or when the contours cross the cell boundaries. Double-checking for
1773 that is wasteful.
1774
1775 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
1776 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
1777
Werner Lemberge421a0b2016-09-10 08:02:30 +020017782016-09-10 Werner Lemberg <wl@gnu.org>
1779
1780 [sfnt] Fix previous commit.
1781
1782 Problems reported as
1783
1784 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
1785
1786 We now map the strike index right before accessing the physical
1787 data, not earlier.
1788
1789 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
1790 after creating the map so that...
1791
1792 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
1793 can be used before and after setting up `sbit_strike_map'.
1794 (tt_face_set_sbit_strike): Revert change.
1795 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
1796
1797 * src/truetype/ttdriver.c (tt_size_select): Revert change.
1798
Werner Lembergd609b7c2016-09-09 22:11:07 +020017992016-09-09 Werner Lemberg <wl@gnu.org>
1800
Werner Lembergdeb26152016-09-09 22:13:33 +02001801 [ftfuzzer] Minor improvements.
1802
1803 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
1804 invalid strikes.
1805 Use better values for call to `FT_Set_Char_Size'.
1806
18072016-09-09 Werner Lemberg <wl@gnu.org>
1808
Werner Lembergd609b7c2016-09-09 22:11:07 +02001809 [sfnt] Don't provide (completely) broken strike data.
1810
1811 FreeType tries to sanitize strike header data; we now reject
1812 completely broken ones.
1813
1814 * include/freetype/internal/tttypes.h (TT_FaceRec): New
1815 `sbit_strike_map' array pointer.
1816
1817 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
1818 width or height would be zero.
1819 Add tracing message in case of error.
1820
1821 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
1822 only using (more or less) valid strike header data for
1823 FT_Face's `available_sizes' array.
1824 (sfnt_done_face): Updated.
1825
1826 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
1827 `sbit_strike_map'.
1828 (tt_face_load_strike_metrics): Improve tracing.
1829
1830 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
1831
Werner Lemberg9749f262016-09-08 07:51:03 +020018322016-09-08 Werner Lemberg <wl@gnu.org>
1833
Werner Lembergd2d59682016-09-08 09:04:32 +02001834 * Version 2.7 released.
1835 =======================
1836
1837
1838 Tag sources with `VER-2-7'.
1839
1840 * docs/VERSION.TXT: Add entry for version 2.7.
1841
1842 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1843 builds/windows/vc2005/index.html,
1844 builds/windows/vc2008/freetype.vcproj,
1845 builds/windows/vc2008/index.html,
1846 builds/windows/vc2010/freetype.vcxproj,
1847 builds/windows/vc2010/index.html,
1848 builds/windows/visualc/freetype.dsp,
1849 builds/windows/visualc/freetype.vcproj,
1850 builds/windows/visualc/index.html,
1851 builds/windows/visualce/freetype.dsp,
1852 builds/windows/visualce/freetype.vcproj,
1853 builds/windows/visualce/index.html,
1854 builds/wince/vc2005-ce/freetype.vcproj,
1855 builds/wince/vc2005-ce/index.html,
1856 builds/wince/vc2008-ce/freetype.vcproj,
1857 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
1858
1859 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
1860 (FREETYPE_PATCH): Set to 0.
1861
1862 * builds/unix/configure.raw (version_info): Set to 18:6:12.
1863 * CMakeLists.txt (VERSION_MINOR): Set to 7.
1864 (VERSION_PATCH): Set to 0.
1865
1866 * docs/CHANGES: Updated.
1867
18682016-09-08 Werner Lemberg <wl@gnu.org>
1869
Werner Lembergb1e7b682016-09-08 08:56:34 +02001870 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
1871
1872 This fixes the `multi' build.
1873
18742016-09-08 Werner Lemberg <wl@gnu.org>
1875
Werner Lemberg9749f262016-09-08 07:51:03 +02001876 [autofit] Another improvement to Armenian support.
1877
1878 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
1879
1880 * src/autofit/afscript.h: Use better suited characters to derive
1881 default stem widths.
1882
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -040018832016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
1884
1885 * src/smooth/ftgrays.c (gray_hline): Microptimize.
1886
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -040018872016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1888
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -04001889 [smooth] Operate in absolute bitmap coordinates.
1890
1891 Simpler bitmap addressing improves performance by 1.5%.
1892
1893 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
1894 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
1895 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
1896
18972016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
1898
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04001899 [smooth] Improve contour start (take 2).
1900
1901 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
1902 instead of...
1903 (gray_start_cell): ... this function, which is removed.
1904 (gray_convert_glyph): Make initial y-coordinate invalid.
1905
Werner Lembergebbb8b22016-09-06 16:28:57 +020019062016-09-06 Werner Lemberg <wl@gnu.org>
1907
1908 [type1] MM fonts support exactly zero named instances (#48748).
1909
1910 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
1911
Jonathan Kewa15133e2016-09-06 06:33:36 +020019122016-09-06 Jonathan Kew <jfkthame@gmail.com>
1913
1914 [cff] Fix uninitialized memory.
1915
1916 Problem reported as
1917
1918 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
1919
1920 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
1921 array to handle a `get' opcode without a previous `put'.
1922
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -040019232016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1924
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -04001925 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
1926
19272016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
1928
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04001929 [smooth] Improve contour start.
1930
1931 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
1932 instead of...
1933 (gray_start_cell): ... this function, which is removed.
1934
Werner Lembergc9adf1a2016-09-05 07:32:37 +020019352016-09-05 Werner Lemberg <wl@gnu.org>
1936
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +02001937 [cff] Fix memory initialization.
1938
1939 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
1940 variants of FreeType's memory allocation macros don't do zeroing.
1941
19422016-09-05 Werner Lemberg <wl@gnu.org>
1943
Werner Lemberg1c8bb632016-09-05 08:13:42 +02001944 [ftrandom] Minor improvements.
1945
1946 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
1947 500.
1948
1949 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
1950 directories to ...
1951 (INCLUDES): ... this new variable.
1952 (LDFLAGS): New variable.
1953 (ftrandom.o, ftrandom): Updated.
1954
19552016-09-05 Werner Lemberg <wl@gnu.org>
1956
Werner Lembergc9adf1a2016-09-05 07:32:37 +02001957 [autofit] Improve Armenian support.
1958
1959 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
1960
1961 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
1962 selection of characters.
1963
1964 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1965
Werner Lemberg4b28f6a2016-09-04 19:05:45 +020019662016-09-04 Werner Lemberg <wl@gnu.org>
1967
1968 [ftrandom] Improve Makefile.
1969
1970 It now supports both a normal build (`./configure && make') and a
1971 development build (`make devel').
1972
1973 * src/tools/ftrandom/Makefile (VPATH): Set it so that
1974 `libfreetype.a' gets searched in both `objs' (for the development
1975 build) and `objs/.libs' (for a normal build which uses libtool).
1976 (LIBS): Add missing libraries.
1977 (ftrandom.o): New rule.
1978 (ftrandom): Use automatic variables.
1979
Werner Lembergf0fa7a62016-09-03 06:33:36 +020019802016-09-03 Werner Lemberg <wl@gnu.org>
1981
Werner Lemberg4e659d72016-09-03 18:14:00 +02001982 [truetype] More fixes for handling of GX deltas.
1983
1984 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
1985
1986 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
1987 sanity test for glyph variation array header size.
1988 Always set stream position before reading packed x and y deltas.
1989 Fix thinko w.r.t. `localpoints' array.
1990
19912016-09-03 Werner Lemberg <wl@gnu.org>
1992
Werner Lembergca8e98d2016-09-03 13:06:16 +02001993 [ftrandom] Various fixes.
1994
1995 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
1996 default.
1997 (error_fraction): Make it of type `double' to work as advertized –
1998 this was completely broken.
1999 Update all related code.
2000 (error_count, fcnt): Make it unsigned to fix compiler warnings.
2001 Update all related code.
2002 (fontlist): Change `len' member to `long' to fix compiler warnings.
2003 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
2004 unused variables.
2005 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
2006 (ExecuteTest): Ditto.
2007 Call `FT_Done_FreeType'.
2008 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
2009 int'.
2010 (usage): Improve output.
2011 (main): Fix compiler warnings.
2012
2013 * src/tools/ftrandom/README: Updated.
2014
20152016-09-03 Werner Lemberg <wl@gnu.org>
2016
Werner Lembergb98dfda2016-09-03 08:20:31 +02002017 [base] Avoid negative bitmap stroke dimensions (#48985).
2018
2019 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
2020 actually successful. For example, this can fail for value
2021 -32768 if the type is `signed short'. If there are problems,
2022 disable the stroke.
2023
20242016-09-03 Werner Lemberg <wl@gnu.org>
2025
Werner Lembergf0fa7a62016-09-03 06:33:36 +02002026 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
2027
2028 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
2029
Werner Lembergd8ef7262016-09-02 23:27:50 +020020302016-09-02 Werner Lemberg <wl@gnu.org>
2031
Werner Lembergd87bb912016-09-02 23:56:27 +02002032 [unix] Enable 64bit support in file system access (#48962).
2033
2034 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
2035
20362016-09-02 Werner Lemberg <wl@gnu.org>
2037
Werner Lembergd8ef7262016-09-02 23:27:50 +02002038 [sfnt] Avoid left shift of negative value (#48980).
2039
2040 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
2041 constant.
2042
20432016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +02002044
2045 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
2046
Werner Lemberg7a13dc02016-09-02 08:24:01 +020020472016-09-02 Werner Lemberg <wl@gnu.org>
2048
2049 Some preparations for the next release.
2050
2051 * include/freetype/config/ftoption.h
2052 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
2053
2054 * docs/CHANGES: Updated.
2055
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -040020562016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
2057
2058 [smooth] Simplify span rendering more.
2059
2060 It turns out that there is significant cost associated with `FT_Span'
2061 creation and calls to `gray_render_span' because it happerns so
2062 frequently. This removes these steps from our internal use but leaves
2063 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
2064 is about 5%.
2065
2066 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
2067 migrated to...
2068 (gray_hline): ... here.
2069
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -040020702016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
2071
2072 [smooth] Streamline pixmap drawing a bit more.
2073
2074 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04002075 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04002076
2077 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
2078
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -040020792016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
2080
2081 [smooth] Streamline pixmap drawing.
2082
2083 This gives 2% speed improvement in rendering simple glyphs.
2084
2085 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
2086 pointer to its bottom-left and pitch to be used in...
2087 (gray_TWorker): ... here.
2088 (gray_render_span): Move pixmap flow check from here...
2089 (gray_raster_render): .. to here.
2090
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -040020912016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
2092
2093 [smooth] Reduce stack of band boundaries.
2094
2095 * src/smooth/ftgrays.c (gray_TBand): Removed.
2096 (gray_convert_glyph): Updated to stack band boundaries concisely.
2097
Werner Lembergf3e71ba2016-08-26 10:31:30 +020020982016-08-26 Werner Lemberg <wl@gnu.org>
2099
Werner Lemberg57aa8392016-08-26 11:59:50 +02002100 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
2101
21022016-08-26 Werner Lemberg <wl@gnu.org>
2103
Werner Lemberg3c61a2f2016-08-26 11:50:09 +02002104 [cid] Fix commit from 2016-05-16.
2105
2106 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
2107
21082016-08-26 Werner Lemberg <wl@gnu.org>
2109
Werner Lembergf3e71ba2016-08-26 10:31:30 +02002110 [sfnt] Cache offset and size to bitmap data table.
2111
2112 This commit avoids `EBDT' and friends being looked up again and
2113 again while loading a single embedded bitmap.
2114
2115 * include/freetype/internal/tttypes.h (TT_FaceRec)
2116 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
2117 `ebdt_size'.
2118
2119 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
2120 (tt_face_load_sbit): ... this function; also store the table size
2121 and offset.
2122
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -040021232016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
2124
2125 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
2126
Werner Lemberga660e3d2016-08-26 00:23:27 +020021272016-08-26 Werner Lemberg <wl@gnu.org>
2128
2129 [type1] Fix heap buffer overflow.
2130
2131 Reported as
2132
2133 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
2134
2135 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
2136 contain glyph names.
2137
Werner Lemberg327f2e32016-08-25 12:46:08 +020021382016-08-25 Werner Lemberg <wl@gnu.org>
2139
Werner Lemberg69ce9732016-08-25 19:49:52 +02002140 [sfnt] Fix previous commit (#48901).
2141
2142 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
2143
21442016-08-25 Werner Lemberg <wl@gnu.org>
2145
Werner Lembergacd18792016-08-25 17:12:46 +02002146 [sfnt] Speed up handling of invalid format 4 cmaps.
2147
2148 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
2149 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
2150
21512016-08-25 Werner Lemberg <wl@gnu.org>
2152
Werner Lemberg327f2e32016-08-25 12:46:08 +02002153 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
2154
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -040021552016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
2156
2157 [smooth] Simplify span rendering.
2158
2159 This removes unnecessary complexity of span merging and buffering.
2160 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04002161 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04002162
2163 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
2164 (gray_TWorker): Remove span buffer and related fields.
2165 (gray_sweep, gray_hline): Updated.
2166
2167 * include/freetype/ftimage.h: Remove documentation note about
2168 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
2169
Werner Lembergcf4224a2016-08-16 06:44:23 +020021702016-08-16 Werner Lemberg <wl@gnu.org>
2171
Werner Lemberga4c2a312016-08-22 19:32:34 +02002172 [truetype] Fix `MPS' instruction.
2173
2174 According to Greg Hitchcock, MPS in DWrite really returns the point
2175 size.
2176
2177 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
2178
2179 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
2180
2181 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
2182 member.
2183
2184 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
2185 (Ins_MPS): Fix instruction.
2186
21872016-08-16 Werner Lemberg <wl@gnu.org>
2188
Werner Lemberg8521ad92016-08-16 13:44:38 +02002189 [lzw] Optimize last commit.
2190
2191 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
2192 conditional clause.
2193
21942016-08-16 Werner Lemberg <wl@gnu.org>
2195
Werner Lemberg548f68d2016-08-16 09:46:40 +02002196 [lzw] Avoid invalid left shift.
2197
Werner Lemberg6df68332016-08-16 09:50:07 +02002198 Reported as
2199
2200 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
2201
Werner Lemberg548f68d2016-08-16 09:46:40 +02002202 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
2203
22042016-08-16 Werner Lemberg <wl@gnu.org>
2205
Werner Lemberg8d7b9192016-08-16 08:07:58 +02002206 [lzw] Avoid buffer overrun.
2207
2208 Reported as
2209
2210 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
2211
2212 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
2213 underflow.
2214
22152016-08-16 Werner Lemberg <wl@gnu.org>
2216
Werner Lembergcf4224a2016-08-16 06:44:23 +02002217 [truetype] Fix compiler warning.
2218
2219 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
2220
Werner Lemberg248f5622016-08-13 06:53:53 +020022212016-08-13 Werner Lemberg <wl@gnu.org>
2222
2223 [winfonts] Avoid zero bitmap width and height.
2224
2225 Reported as
2226
2227 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
2228
2229 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
2230 (FNT_Load_Glyph): Check for zero pitch.
2231
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +020022322016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2233
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -04002234 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
2235
22362016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2237
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -04002238 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
2239
22402016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2241
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02002242 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
2243
Peter Klotz3b37bfc2016-08-10 22:38:08 -040022442016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
2245
2246 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
2247
Werner Lemberg5224aae2016-08-10 19:47:29 +020022482016-08-10 Werner Lemberg <wl@gnu.org>
2249
2250 [sfnt] Use correct type for `italicAngle' field (#48732).
2251
2252 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
2253
Werner Lemberg53059f92016-08-07 09:01:33 +020022542016-08-06 Jon Spencer <jon@jonspencer.ca>
2255
2256 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
2257
2258 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
2259 advance value from the font table and then scales it by the
2260 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
2261 set that value for bitmap fonts and the advance gets scaled to zero.
2262
2263 Taken from
2264
2265 https://github.com/behdad/harfbuzz/issues/252
2266
2267 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2268 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
2269
22702016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02002271
2272 [truetype] Fix GX variation handling of composites.
2273
2274 * src/truetype/ttgload.c (load_truetype_glyph)
2275 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
2276
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040022772016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2278
2279 [smooth] Minor refactoring.
2280
2281 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
2282 Updated.
2283
Werner Lembergfae4ec02016-07-29 06:43:32 +020022842016-07-29 Werner Lemberg <wl@gnu.org>
2285
2286 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
2287
2288 Since 2016-05-16 we detect infinite recursion directly.
2289
2290 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
2291 `maxComponentDepth'.
2292 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
2293 `maxComponentDepth' is not valid. Instead, simply adjust its value
2294 and emit a tracing message.
2295
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020022962016-07-26 Werner Lemberg <wl@gnu.org>
2297
2298 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
2299
2300 No functional change.
2301
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020023022016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
2303
2304 [truetype] Record the end of IDEFs.
2305
2306 To match the logic in FDEF. The value of the end is only used for
2307 bound-checking in `Ins_JMPR', so it may not have been obvious that
2308 it was not recorded. Tested (as part of Font Validator 2.0) all the
2309 fonts on Fedora and did not see any change.
2310
2311 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
2312
Werner Lemberge69f34b2016-07-19 07:06:19 +020023132016-07-19 Werner Lemberg <wl@gnu.org>
2314
Werner Lemberg7f631052016-07-19 21:35:58 +02002315 [truetype] Sanitizer fix, second try.
2316
2317 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
2318 tests and use only one slot more.
2319
23202016-07-19 Werner Lemberg <wl@gnu.org>
2321
Werner Lemberge69f34b2016-07-19 07:06:19 +02002322 [truetype] Sanitizer fix.
2323
2324 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
2325 to fix nested loops.
2326
Werner Lemberga3b70d72016-07-18 06:23:36 +020023272016-07-18 Werner Lemberg <wl@gnu.org>
2328
2329 [truetype] Make GETDATA work only for GX fonts.
2330
2331 * src/truetype/ttinterp.c (opcode_name): Updated.
2332 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
2333 (TT_RunIns): Updated.
2334
23352016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02002336
Werner Lemberg8c930132016-07-17 22:40:31 +02002337 [truetype] Add support for Apple's
2338
2339 GETDATA[], opcode 0x92
2340
2341 bytecode instruction. It always returns 17, and we have absolutely
2342 no idea what it is good for...
2343
2344 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
2345 (Ins_GETDATA): New function.
2346 (TT_RunIns): Add it.
2347
23482016-07-16 Werner Lemberg <wl@gnu.org>
2349
Werner Lemberge0843602016-07-16 18:46:28 +02002350 [truetype] Add bytecode support for GX variation fonts.
2351
2352 This commit implements undocumented (but confirmed) stuff from
2353 Apple's old bytecode engine.
2354
2355 GETVARIATION[], opcode 0x91
2356 This opcode pushes normalized variation coordinates for all axes
2357 onto the stack (in 2.14 format). Coordinate of first axis gets
2358 pushed first.
2359
2360 GETINFO[], selector bit 3
2361 If GX variation support is enabled, bit 10 of the result is set
2362 to 1.
2363
2364 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
2365 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
2366 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
2367 bit 3, checking support for variation glyph hinting.
2368 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
2369 to implement opcode 0x91.
2370 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
2371
23722016-07-16 Werner Lemberg <wl@gnu.org>
2373
Werner Lemberg32a32062016-07-16 16:39:26 +02002374 [truetype] Fix GETINFO bytecode instruction.
2375
2376 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
2377 stretching information.
2378
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020023792016-07-16 Behdad Esfahbod <behdad@behdad.org>
2380
2381 [truetype] Make all glyphs in `Zycon' GX font work.
2382
2383 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
2384 tests.
2385
Werner Lemberga3b61252016-07-16 08:16:16 +020023862016-07-16 Werner Lemberg <wl@gnu.org>
2387
2388 [truetype] Fix GX delta tracing.
2389
2390 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
2391 relative point movements.
2392
23932016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02002394
2395 [truetype] More fixes for GX.
2396
2397 This finally fixes the rendering of the cyclist and the lizard in
2398 the `Zycon' font.
2399
2400 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
2401 index is always cumulative.
2402
2403 (tt_handle_deltas): Rename to...
2404 (tt_interpolate_deltas): ... This.
2405 Add new parameter for output point array.
2406 Update caller.
2407
2408 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
2409 the intermediate results of `tt_interpolate_deltas' that are to be
2410 added to `outline->points'.
2411
Werner Lembergaafff572016-07-16 06:41:39 +020024122016-07-15 Werner Lemberg <wl@gnu.org>
2413
2414 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
2415
2416 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
2417
2418 Reported by Alexei.
2419
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020024202016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
2421
2422 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
2423
2424 Problem reported by Hin-Tak Leung.
2425
Werner Lemberg894c0222016-07-15 10:23:11 +020024262016-07-15 Werner Lemberg <wl@gnu.org>
2427
Werner Lemberg1831e6f2016-07-15 10:35:32 +02002428 [autofit] Update and improve segment and edge tracing.
2429
2430 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
2431 `delta' also.
2432 Don't show first point of segment as a replacement for `pos'; this
2433 is (a) misleading, since the difference to `pos' can be almost
2434 arbitrarily large in corner cases, and (b) it is better to have all
2435 segment data in font units instead of a single value given in output
2436 space coordinates.
2437 Improve layout.
2438 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
2439 values for convenience.
2440 Improve layout.
2441
24422016-07-15 Werner Lemberg <wl@gnu.org>
2443
Werner Lemberg894c0222016-07-15 10:23:11 +02002444 [autofit] For edges, reject segments wider than 1px (#41334).
2445
2446 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
2447
2448 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
2449 `delta'.
2450 (af_latin_hints_compute_edges): Reject segments with a delta larger
2451 than 0.5px.
2452
Werner Lemberg631e2182016-07-14 06:25:05 +020024532016-07-14 Werner Lemberg <wl@gnu.org>
2454
Werner Lembergff655432016-07-14 15:01:55 +02002455 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
2456
24572016-07-14 Werner Lemberg <wl@gnu.org>
2458
Werner Lembergee3f36f2016-07-14 10:25:20 +02002459 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
2460
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05002461 * src/sfnt/sfobjs.c (sfnt_init_face): Don't strip off higher 16bits.
Werner Lembergee3f36f2016-07-14 10:25:20 +02002462
24632016-07-14 Werner Lemberg <wl@gnu.org>
2464
Werner Lemberg631e2182016-07-14 06:25:05 +02002465 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
2466
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020024672016-07-14 Behdad Esfahbod <behdad@behdad.org>
2468
2469 [truetype] Fix gxvar delta interpolation.
2470
2471 The coordinates of the base font should be used for interpolation
2472 purposes, NOT the current points (i.e., the result of accumulation
2473 of previous deltas).
2474
2475 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
2476 `points_org' before looping over all tuples.
2477
Werner Lembergf6aa0892013-05-10 07:58:47 +02002478
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002479----------------------------------------------------------------------------
2480
Werner Lemberg563ae782017-01-04 20:16:34 +01002481Copyright 2016-2017 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002482David Turner, Robert Wilhelm, and Werner Lemberg.
2483
2484This file is part of the FreeType project, and may only be used, modified,
2485and distributed under the terms of the FreeType project license,
2486LICENSE.TXT. By continuing to use, modify, or distribute this file you
2487indicate that you have read the license and understand and accept it
2488fully.
2489
2490
2491Local Variables:
2492version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00002493coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002494End: