blob: 3ff78d69d389fe2efca721f5d54230c54045314f [file] [log] [blame]
Werner Lemberg31f80552017-01-31 08:10:04 +010012017-01-31 Werner Lemberg <wl@gnu.org>
2
3 [autofit] Avoid uninitialized jumps (#50191).
4
5 * src/autofit/afcjk.c (af_cjk_metrics_check_digits),
6 src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize
7 `advance'.
8
Werner Lemberg464b16b2017-01-27 08:45:46 +010092017-01-27 Werner Lemberg <wl@gnu.org>
10
11 s/GB2312/PRC/.
12
13 * include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
14 (FT_ENCODING_GB2312): Deprecated.
15
16 * include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
17 (TT_MS_ID_GB2312): Deprecated.
18
19 * src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.
20
21 * docs/CHANGES: Updated.
22
Werner Lemberg939df422017-01-26 21:41:38 +0100232017-01-26 Werner Lemberg <wl@gnu.org>
24
Werner Lembergf4253362017-01-27 00:06:52 +010025 [base] Add `FT_Get_Sfnt_LangTag' function.
26
27 * include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
28 (FT_Get_Sfnt_LangTag): New declaration.
29
30 * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New funtion.
31
32 * docs/CHANGES: Updated.
33
342017-01-26 Werner Lemberg <wl@gnu.org>
35
Werner Lemberg939df422017-01-26 21:41:38 +010036 [sfnt] Support `name' table format 1.
37
38 * include/freetype/internal/tttypes.h (TT_LangTagRec): New
39 structure.
40 (TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.
41
42 * src/sfnt/ttload.c (tt_face_load_name): Add support for language
43 tags.
44 Reduce array size of name strings in case of invalid entries.
45 (tt_face_free_name): Updated.
46
47 * docs/CHANGES: Updated.
48
Werner Lembergf4e56962017-01-25 15:08:41 +0100492017-01-25 Werner Lemberg <wl@gnu.org>
50
51 [sfnt] s/TT_NameEntry/TT_Name/.
52
53 * include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
54 to...
55 (TT_NameRec): This.
56 (TT_NameTableRec): Updated.
57
58 * src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.
59
60 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated.
61
62 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
63 tt_name_entry_ascii_from_other): Renamed to...
64 (tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
65 respectively.
66 (TT_NameEntry_ConvertFunc): Renamed to...
67 (TT_Name_ConvertFunc): This.
68 (tt_face_get_name): Updated.
69
70 * src/sfnt/ttload.c (tt_face_load_name, tt_face_free_names):
71 Updated.
72
Werner Lemberg141f0ea2017-01-24 17:00:36 +0100732017-01-24 Werner Lemberg <wl@gnu.org>
74
Werner Lemberg14397122017-01-24 20:48:50 +010075 [sfnt] Fix Postscript name service for symbol fonts.
76
77 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
78 entries also.
79
802017-01-24 Werner Lemberg <wl@gnu.org>
81
Werner Lemberg141f0ea2017-01-24 17:00:36 +010082 [truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.
83
84 * include/freetype/ftsnames.h
85 (FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
86 FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
87 (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
88 FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.
89
90 * include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
91 TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
92 (TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
93 Deprecated.
94
95 * src/sfnt/sfobjs.c (sfnt_load_face): Updated.
96
97 * docs/CHANGES: Updated.
98
Werner Lemberg79d52b92017-01-23 07:43:56 +0100992017-01-23 Werner Lemberg <wl@gnu.org>
100
Werner Lemberg693f56f2017-01-23 12:53:18 +0100101 [base] Add `FT_Set_Default_Properties' (#49187).
102
103 * include/freetype/ftmodapi.h: Add declaration.
104
105 * src/base/ftinit.c (ft_set_default_properties): Renamed to...
106 (FT_Set_Default_Properties): ... this.
107 (FT_Init_FreeType): Updated.
108
109 * docs/CHANGES: Updated.
110
1112017-01-23 Werner Lemberg <wl@gnu.org>
112
Werner Lembergf5020922017-01-23 11:47:40 +0100113 [truetype] Minor updates for OpenType 1.8.1.
114
115 * src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
Alexei Podtelezhnikov983fb0d2017-01-24 23:56:59 -0500116 removed from the specification; it is now reserved.
Werner Lembergf5020922017-01-23 11:47:40 +0100117
118 * src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
119 (GX_FVar_Head): Remove `countSizePairs'; the corresponding data
120 field in the `MVAR' table is now reserved.
121 (fvar_fields): Updated.
122
1232017-01-23 Werner Lemberg <wl@gnu.org>
124
Werner Lemberg79d52b92017-01-23 07:43:56 +0100125 [truetype] Avoid segfault for invalid variation data.
126
127 * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
128 `itemCount' is not zero.
129
130 Reported as
131
132 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441
133
Werner Lemberg43061d62017-01-20 10:16:38 +01001342017-01-20 Werner Lemberg <wl@gnu.org>
135
136 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
137
Werner Lembergba6f3e12017-01-17 11:50:09 +01001382017-01-17 Werner Lemberg <wl@gnu.org>
139
140 * include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
141
142 (TT_APPLE_ID_FULL_UNICODE): New macro.
143
144 (TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
145 TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
146 TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
147 TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
148 TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
149 TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
150 TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
151 TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
152 TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
153 TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
154 TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
155 macros.
156
157 (TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
158
159 (TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
160 TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
161 TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
162 TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
163 TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
164 TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
165 TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
166 TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
167 TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
168 TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
169 TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
170 TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
171 TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
172 TT_MS_LANGID_UIGHUR_PRC): New aliases.
173
174 Remove commented out code.
175
176 (TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
177 TT_NAME_ID_VARIATIONS_PREFIX): New macros.
178
179 (HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
180 years), use guarded long macros by default and define short versions
181 as aliases for the long ones.
182
Werner Lemberg322b3be2017-01-15 13:57:25 +01001832017-01-15 Werner Lemberg <wl@gnu.org>
184
185 * src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
186 also.
187
Werner Lemberg8ab08cf2017-01-11 10:05:27 +01001882017-01-11 Werner Lemberg <wl@gnu.org>
189
Werner Lembergc5298852017-01-12 08:42:55 +0100190 * src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
191
1922017-01-11 Werner Lemberg <wl@gnu.org>
193
Werner Lemberg723aafb2017-01-11 14:21:26 +0100194 [truetype] Actually use metrics variation service.
195
196 * src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
197 (ft_face_get_mvar_service): New auxiliary function to look up
198 metrics variation service.
199 (FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
200 FT_Set_Var_Blend_Coordinates): Call metrics variation service.
201
202 * src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
203 named instances.
204
2052017-01-11 Werner Lemberg <wl@gnu.org>
206
Werner Lembergd718ac42017-01-11 14:12:34 +0100207 [truetype] Provide metrics variation service.
208
209 * include/freetype/internal/services/svmetric.h
210 (FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
211
212 * src/truetype/ttgxvar.c: Include FT_LIST_H.
213 (tt_size_reset_iterator): New auxiliary function for...
214 (tt_apply_var): New function.
215
216 * src/truetype/ttgxvar.h: Updated.
217
218 * src/truetype/ttdriver.c (tt_service_metrics_variations): Add
219 `tt_apply_mvar'.
220
221 * include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
222 variation service.
223
2242017-01-11 Werner Lemberg <wl@gnu.org>
225
Werner Lemberg07ee1d22017-01-11 12:50:51 +0100226 [truetype] Parse `MVAR' table.
227
228 * src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
229 (GX_Value, GX_MVarTable): New structures.
230 (GX_Blend): Add it.
231
232 * src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
233 GX_GASP_CASE): New macros.
234 (ft_var_get_value_pointer): New auxiliary function to get a pointer
235 to a value from various SFNT tables already stored in `TT_Face'.
236 (ft_var_load_mvar): New function.
237 (TT_Get_MM_Var): Call it.
238 (tt_done_blend): Updated.
239
2402017-01-11 Werner Lemberg <wl@gnu.org>
241
Werner Lemberg8ab08cf2017-01-11 10:05:27 +0100242 [truetype] More preparations for MVAR support.
243
244 * src/truetype/ttobjs.c (tt_size_reset): Add argument to make
245 function only recompute ascender, descender, and height.
246
247 * src/truetype/ttobjs.h: Updated.
248
249 * src/truetype/ttdriver.c (tt_size_select, tt_size_request):
250 Updated.
251
Werner Lembergf837a502017-01-09 10:49:03 +01002522017-01-09 Werner Lemberg <wl@gnu.org>
253
Werner Lemberg7ccca6a2017-01-09 19:54:44 +0100254 [pcf] Disable long family names by default.
255
256 * include/freetype/config/ftoption.h
257 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
258
2592017-01-09 Werner Lemberg <wl@gnu.org>
260
Werner Lemberg08fd2502017-01-09 11:30:32 +0100261 [pcf] Make long family names configurable.
262
263 The change from 2016-09-29 was too radical (except for people using
264 the openSuSE GNU/Linux distribution). To ameliorate the situation,
265 PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
266 the feature; if set, a new PCF property option
267 `no-long-family-names' can be used to switch this feature off.
268
269 * include/freetype/config/ftoption.h, devel/ftoption.h
270 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
271
272 * include/freetype/ftpcfdrv.h: New header file (only containing
273 comments currently, used for building the documentation).
274
275 * include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
276
277 * src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
278
279 * src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
280 FT_PCF_DRIVER_H.
281 (pcf_property_set, pcf_property_get): New functions.
282 (pcf_service_properties): New service.
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -0500283 (pcf_services): Updated.
Werner Lemberg08fd2502017-01-09 11:30:32 +0100284 (pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
285 `no_long_family_names'.
286
287 * src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
288 and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
289
290 * docs/CHANGES: Updated.
291
2922017-01-09 Werner Lemberg <wl@gnu.org>
293
Werner Lembergf837a502017-01-09 10:49:03 +0100294 [pcf] Introduce a driver structure.
295
296 To be filled later on with something useful.
297
298 * src/pcf/pcf.h (PCF_Driver): New structure.
299
300 * src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
301 functions.
302 (pcf_driver_class): Updated.
303
Werner Lemberg6812f172017-01-08 07:33:05 +01003042017-01-08 Werner Lemberg <wl@gnu.org>
305
Werner Lemberg469ced72017-01-08 09:28:34 +0100306 [truetype] Again some GX code shuffling.
307
308 We need this later on for MVAR also.
309
310 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
311 an item store variation delta into...
312 (ft_var_get_item_delta): ...new function.
313
3142017-01-08 Werner Lemberg <wl@gnu.org>
315
Werner Lemberg6812f172017-01-08 07:33:05 +0100316 [truetype] Adjust font variation flags for MVAR.
317
318 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
319 Remove all flags related to MVAR; replace it with...
320 (TT_FACE_FLAG_VAR_MVAR): ...this new macro.
321 (TT_Face): Remove `mvar_support' field (which was still unused).
322
Werner Lemberg8b755442017-01-06 11:47:55 +01003232017-01-06 Werner Lemberg <wl@gnu.org>
324
Werner Lemberg02919132017-01-07 07:45:28 +0100325 [truetype] More GX code shuffling.
326
327 We need this later on for MVAR also.
328
329 * src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
330 variation store into...
331 (ft_var_done_item_variation_store): ...new function.
332
3332017-01-06 Werner Lemberg <wl@gnu.org>
334
Werner Lembergfb90f002017-01-06 22:23:52 +0100335 [truetype] More generalization of GX stuff.
336
337 We need this later on for MVAR also.
338
339 * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
340 parameters for delta-set index mapping and item variation store.
341 (ft_var_load_item_variation_store): Add parameter for item variation
342 store.
343 s/hvarData/varData/.
344 Move allocation of `hvar_table' to...
345 (ft_var_load_hvar): ...this function.
346 Updated.
347
3482017-01-06 Werner Lemberg <wl@gnu.org>
349
Werner Lemberg0bd01122017-01-06 21:32:49 +0100350 [truetype] Some GX structure renames for generalization.
351
352 We need this later on for MVAR also.
353
354 * src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
355 (GX_ItemVarData): ...this.
356 (GX_HVarRegion): Renamed to...
357 (GX_VarRegion): ...this.
358 (GX_HVStore): Renamed to...
359 (GX_ItemVarStore): ...this.
360 (GX_WidthMap): Renamed to...
361 (GX_DeltaSetIdxMap): ...this.
362
363 (GX_HVarTable): Updated.
364
365 * src/truetype/ttgxvar.c: Updated.
366
3672017-01-06 Werner Lemberg <wl@gnu.org>
368
Werner Lemberg9c814702017-01-06 21:13:36 +0100369 [truetype] Code shuffling.
370
Werner Lemberg02919132017-01-07 07:45:28 +0100371 * src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
372 item variation store and delta set index mapping into...
Werner Lemberg9c814702017-01-06 21:13:36 +0100373 (ft_var_load_item_variation_store,
Werner Lemberg02919132017-01-07 07:45:28 +0100374 ft_var_load_delta_set_index_mapping): ...new functions.
Werner Lemberg9c814702017-01-06 21:13:36 +0100375
3762017-01-06 Werner Lemberg <wl@gnu.org>
377
Werner Lemberg7e1cce52017-01-06 20:31:22 +0100378 [truetype] Add HVAR access without advance width map.
379
380 * src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
381 `offsetToAdvanceWidthMapping' is zero.
382 (tt_hadvance_adjust): Implement direct deltaSet access by glyph
383 index.
384
3852017-01-06 Werner Lemberg <wl@gnu.org>
386
Werner Lemberg8b755442017-01-06 11:47:55 +0100387 [pcf] Revise driver.
388
389 This commit improves tracing and handling of malformed fonts. In
390 particular, the changes to `pcf_get_properties' fix
391
392 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
393
394 * src/pcf/pcfread.c (tableNames): Use long names for better
395 readability.
396 (pcf_read_TOC): Allow at most 9 tables.
397 (pcf_get_properties): Allow at most 256 properties.
398 Limit strings array length to 256 * (65536 + 1) bytes.
399 Better tracing.
400 (pcf_get_metric): Trace metric data.
401 (pcf_get_metrics): Allow at most 65536 metrics.
402 Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
403 potential overflow.
404 Better tracing.
405 (pcf_get_bitmaps): Allow at most 65536 bitmaps.
406 Better tracing.
407 (pcf_get_encodings, pcf_get_accel): Better tracing.
408
409 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
410 These are now shown by `pcf_get_bitmaps'.
411
Werner Lemberg025226a2017-01-04 07:45:44 +01004122017-01-04 Werner Lemberg <wl@gnu.org>
413
Werner Lemberga7c2f442017-01-04 13:12:03 +0100414 * src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
415
4162017-01-04 Werner Lemberg <wl@gnu.org>
417
Werner Lembergc9d47722017-01-04 10:00:49 +0100418 [cff] More consistency checks for pure CFFs.
419
420 Reported as
421
422 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
423
424 * src/cff/cffload.c (cff_font_load): Check element number and size
425 of Name and Top DICT indices.
426
4272017-01-04 Werner Lemberg <wl@gnu.org>
428
Werner Lemberg025226a2017-01-04 07:45:44 +0100429 [cff, truetype] Minor tracing improvement.
430
431 * src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
432 (tt_face_init): Indent first tracing message from SFNT driver.
433
Werner Lemberg248eaa42017-01-03 00:27:07 +01004342017-01-03 Werner Lemberg <wl@gnu.org>
435
Werner Lemberg89824052017-01-03 09:46:19 +0100436 [truetype] Various minor fixes.
437
438 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
439 size only if we do native hinting.
440 (TT_Load_Glyph): Trace returned error code.
441
442 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
443 returned error code.
444 (tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
445 invalid.
446
4472017-01-03 Werner Lemberg <wl@gnu.org>
448
Werner Lemberg624b6802017-01-03 09:42:41 +0100449 [sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
450
451 These tables are optional.
452
453 * src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
454
4552017-01-03 Werner Lemberg <wl@gnu.org>
456
Werner Lemberg69414e72017-01-03 06:53:13 +0100457 * src/cff/cffparse.c (cff_parse_num): Simplify.
458
4592017-01-03 Werner Lemberg <wl@gnu.org>
460
Werner Lemberg248eaa42017-01-03 00:27:07 +0100461 Various fixes for clang's undefined behaviour sanitizer.
462
463 * src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
464 (cff_blend_doBlend): Don't left-shift negative numbers.
465 Handle 5-byte numbers byte by byte to avoid alignment issues.
466
Werner Lemberg69414e72017-01-03 06:53:13 +0100467 * src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
468 byte to avoid alignment issues.
Werner Lemberg248eaa42017-01-03 00:27:07 +0100469
470 * src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
471 subrs.
472
473 * src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
474
475 * src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
476 definition of `ft_get_adobe_glyph_index'.
477
478 * src/psnames/pstables.h: Regenerated.
479
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -0500480 * src/psnames/psmodule.c: Include `pstables.h' twice to get both
Werner Lemberg248eaa42017-01-03 00:27:07 +0100481 declaration and definition.
482
483 * src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
484 casting.
485
Werner Lemberg63765a82017-01-01 10:43:41 +01004862017-01-01 Werner Lemberg <wl@gnu.org>
487
Werner Lembergbdec1622017-01-01 20:51:55 +0100488 [cff] Handle multiple `blend' operators in a row correctly.
489
490 Reported as
491
492 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
493
494 * src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
495 pointers into `subFont->blend_stack' after reallocation.
496
4972017-01-01 Werner Lemberg <wl@gnu.org>
498
Werner Lemberg63765a82017-01-01 10:43:41 +0100499 [sfnt] Return correct number of named instances for TTCs.
500
501 Without this patch, requesting information for face index N returned
502 the data for face index N+1 (or index 0).
503
504 * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
505 for negative `face_instance_index' values.
506
Werner Lemberge9a154e2016-12-31 21:41:08 +01005072016-12-31 Werner Lemberg <wl@gnu.org>
508
Werner Lemberg24be60b2017-01-01 08:20:38 +0100509 */*: Use hex numbers for errors in tracing messages.
510
5112016-12-31 Werner Lemberg <wl@gnu.org>
512
Werner Lemberge9a154e2016-12-31 21:41:08 +0100513 [truetype] Check axis count in HVAR table.
514
515 Reported as
516
517 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
518
519 * src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
520 (ft_var_load_avar): Fix tracing message.
521
5222016-12-30 Werner Lemberg <wl@gnu.org>
Werner Lemberg069083c2016-12-30 21:16:46 +0100523
524 * Version 2.7.1 released.
525 =========================
526
527
528 Tag sources with `VER-2-7-1'.
529
530 * docs/VERSION.TXT: Add entry for version 2.7.1.
531
532 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
533 builds/windows/vc2005/index.html,
534 builds/windows/vc2008/freetype.vcproj,
535 builds/windows/vc2008/index.html,
536 builds/windows/vc2010/freetype.vcxproj,
537 builds/windows/vc2010/index.html,
538 builds/windows/visualc/freetype.dsp,
539 builds/windows/visualc/freetype.vcproj,
540 builds/windows/visualc/index.html,
541 builds/windows/visualce/freetype.dsp,
542 builds/windows/visualce/freetype.vcproj,
543 builds/windows/visualce/index.html,
544 builds/wince/vc2005-ce/freetype.vcproj,
545 builds/wince/vc2005-ce/index.html,
546 builds/wince/vc2008-ce/freetype.vcproj,
547 builds/wince/vc2008-ce/index.html: s/2.7/2.7.1/, s/27/271/.
548
549 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
550
551 * builds/unix/configure.raw (version_info): Set to 19:0:13.
552 * CMakeLists.txt (VERSION_PATCH): Set to 1.
553
Werner Lemberg6b21d122016-12-30 10:00:54 +01005542016-12-30 Werner Lemberg <wl@gnu.org>
555
Werner Lemberg8fb9d222016-12-30 19:51:37 +0100556 [ftfuzzer] Replace `rand' with an xorshift algorithm.
557
558 * src/tools/ftfuzzer/ftfuzzer.cc: Don't include `stdlib.h'.
559 (Random): Implement and use a 32bit `xorshift' algorithm.
560
5612016-12-30 Werner Lemberg <wl@gnu.org>
562
Werner Lemberg6b21d122016-12-30 10:00:54 +0100563 [ftfuzzer] Restrict number of tested bitmap strikes.
564
565 Malformed fonts often have large values for the number of bitmap
566 strikes, and FreeType doesn't check the validity of all bitmap
567 strikes in advance.
568
569 Reported as
570
571 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=353
572
573 * src/tools/ftfuzzer/ftfuzzer.cc: Include `stdlib.h' for `rand'.
574 (Random): Small class to provide n randomly selected numbers
Alexei Podtelezhnikovca472222017-01-17 23:45:08 -0500575 (without repetition) out of the value set [1,N].
Werner Lemberg6b21d122016-12-30 10:00:54 +0100576 (LLVMFuzzerTestOneInput): Use it to test only up to 10 bitmap
577 strikes.
578
Werner Lemberg346b1412016-12-29 06:03:40 +01005792016-12-29 Werner Lemberg <wl@gnu.org>
580
Werner Lemberg7591bf12016-12-29 21:39:06 +0100581 [truetype] Variation font API stability issues.
582
583 Make some functions work before a call to `TT_Set_MM_Blend'.
584
585 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Exit immediately if
586 we don't blend.
587 (TT_Get_MM_Blend, TT_Get_Var_Design): Return default values if we
588 don't blend.
589
5902016-12-29 Werner Lemberg <wl@gnu.org>
591
Werner Lemberg91fc3bd2016-12-29 21:34:46 +0100592 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis data.
593
594 Reported as
595
596 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=348
597
5982016-12-29 Werner Lemberg <wl@gnu.org>
599
Werner Lemberg18018512016-12-29 21:30:06 +0100600 [truetype] Tracing fixes.
601
602 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Emit correct
603 information.
604 (TT_Set_Var_Design): Fix typo.
605 (TT_Get_Var_Design): Fix typos.
606
6072016-12-29 Werner Lemberg <wl@gnu.org>
608
Werner Lemberg84b0d992016-12-29 10:38:51 +0100609 */*: Use `0.5f' for tracing 16.16 numbers.
610
6112016-12-29 Werner Lemberg <wl@gnu.org>
612
Werner Lemberg346b1412016-12-29 06:03:40 +0100613 [pcf] Protect against gzip bombs.
614
615 Fix suggested by Kostya; reported as
616
617 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=345
618
619 * src/pcf/pcfread.c (pcf_read_TOC): Limit number of TOC entries to
620 1024.
621
Werner Lembergc4cd34a2016-12-28 08:33:35 +01006222016-12-28 Werner Lemberg <wl@gnu.org>
623
Werner Lemberg6fb549d2016-12-28 22:23:33 +0100624 [psnames] Only declare, not define, data in `pstables.h' (#49949).
625
626 Pdfium includes `pstables.h' a second time; moving the definition
627 from `pstables.h' to `psmodule.c' saves more than 60kByte data
628 segment space for this case.
629
630 * src/tools/glnames.py (StringTable::dump,
631 StringTable::dump_sublist, dump_encoding, dump_array): Emit
632 additional code to only define tables if `DEFINE_PS_TABLES' is set.
633
634 * src/psnames/pstables.h: Regenerated.
635 * src/psnames/psmodule.c (DEFINE_PS_TABLES): Define.
636
6372016-12-28 Werner Lemberg <wl@gnu.org>
638
Werner Lembergc4a1ef32016-12-28 21:22:45 +0100639 [cff] Catch `blend' op in non-variant fonts.
640
641 Reported as
642
643 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=334
644
645 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>: Don't
646 allow `blend' op for non-variant fonts.
647
6482016-12-28 Werner Lemberg <wl@gnu.org>
649
Werner Lembergc4cd34a2016-12-28 08:33:35 +0100650 [cff] Better check of number of blends.
651
652 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>,
653 src/cff/cffparse.c (cff_parse_blend): Compare number of blends with
654 stack size.
655
Werner Lemberge5e35562016-12-27 06:49:37 +01006562016-12-27 Werner Lemberg <wl@gnu.org>
657
Werner Lemberg48fd5bb2016-12-27 10:20:23 +0100658 Documentation updates.
659
660 * docs/CHANGES: Add missing information.
661
662 * docs/formats.txt: Rewritten and updated.
663
6642016-12-27 Werner Lemberg <wl@gnu.org>
665
Werner Lemberge5e35562016-12-27 06:49:37 +0100666 [truetype, type1] Implement `FT_Get_Var_Design_Coordinates'.
667
668 * src/truetype/ttgxvar.c (TT_Get_Var_Design): Implement.
669 (TT_Set_Var_Design): Fix tracing.
670
671 * src/type1/t1load.c (T1_Get_Var_Design): Implement.
672
Werner Lemberg1fecdfe2016-12-24 07:50:45 +01006732016-12-24 Werner Lemberg <wl@gnu.org>
674
Werner Lemberga300c1c2016-12-24 09:27:15 +0100675 * src/truetype/ttpload.c (tt_face_load_hdmx): Ignore `version'.
676
677 Problem reported by 張俊芝 <418092625@qq.com>.
678
6792016-12-24 Werner Lemberg <wl@gnu.org>
680
Werner Lembergd1db57c2016-12-24 09:05:16 +0100681 * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
682
683 Some fonts seem to have the `version' field in the wrong byte order.
684
685 Problem reported by 張俊芝 <418092625@qq.com>.
686
6872016-12-24 Werner Lemberg <wl@gnu.org>
688
Werner Lembergfde0b782016-12-24 08:17:19 +0100689 * src/truetype/ttpload.c (tt_face_load_loca): Sanitize table length.
690
691 This trivial fix allows us to accept more fonts.
692
693 Problem reported by 張俊芝 <418092625@qq.com>.
694
6952016-12-24 Werner Lemberg <wl@gnu.org>
696
Werner Lemberg1fecdfe2016-12-24 07:50:45 +0100697 * src/sfnt/sfobjs.c (sfnt_init_face): Fix tracing.
698
Werner Lembergada82972016-12-22 08:25:42 +01006992016-12-22 Werner Lemberg <wl@gnu.org>
700
Werner Lemberg18bd1762016-12-22 12:24:23 +0100701 * CMakeLists.txt: Make it work with cmake 2.8.11.2 (#49909).
702
7032016-12-22 Werner Lemberg <wl@gnu.org>
704
Werner Lemberg06d61b42016-12-22 10:43:46 +0100705 Ensure used preprocessor symbols are defined (#49790).
706
707 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
708 include/freetype/config/ftconfig.h: Check `__GNUC__', `__IBMC__',
709 and `__SUNPRO_C' correctly.
710
7112016-12-22 Werner Lemberg <wl@gnu.org>
712
Werner Lemberg7f733392016-12-22 10:12:17 +0100713 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Check `count'.
714
715 Reported as
716
717 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=308
718
7192016-12-22 Werner Lemberg <wl@gnu.org>
720
Werner Lembergb44e6c22016-12-22 08:30:15 +0100721 [cff] Protect against invalid `vsindex' and `blend' values.
722
723 Reported as
724
725 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=305
726
727 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVSINDEX,
728 cf2_cmdBLEND>: Implement it.
729
7302016-12-22 Werner Lemberg <wl@gnu.org>
731
Werner Lembergada82972016-12-22 08:25:42 +0100732 [ftfuzzer] Always use Adobe CFF engine.
733
734 * src/tools/ftfuzzer/ftfuzzer.cc (FT_Global::FT_Global): Implement
735 it.
736
Werner Lemberg57a67332016-12-21 06:52:23 +01007372016-12-21 Werner Lemberg <wl@gnu.org>
738
Werner Lembergd44daf92016-12-21 23:03:48 +0100739 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
740
Werner Lemberg72091102016-12-21 23:46:29 +0100741 I should really stop coding late in the evening...
742
743 Thanks again to Ben for checking.
744
7452016-12-21 Werner Lemberg <wl@gnu.org>
746
Werner Lemberg8d37efb2016-12-22 20:48:28 +0100747 [autofit] Support variation fonts.
748
749 (This ChangeLog entry was added later on.)
750
751 * src/autofit/afglobal.c (af_face_globals_free): Remove useless
752 code.
753
754 * src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
755 * FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
756 FT_Set_Var_Blend_Coordinates): Finalize
757 auto-hinter data to enforce recomputation. Note that this is a
758 brute-force method which should be improved.
759
7602016-12-21 Werner Lemberg <wl@gnu.org>
761
Werner Lemberg72091102016-12-21 23:46:29 +0100762 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
763
Werner Lembergd44daf92016-12-21 23:03:48 +0100764 Don't apply deltas twice for non-phantom points.
765
766 Spotted by Ben Wagner.
767
7682016-12-21 Werner Lemberg <wl@gnu.org>
769
Werner Lemberge6a429e2016-12-21 20:27:48 +0100770 [cff, truetype] Another try for #49829.
771
772 * src/cff/cffdrivr.c: Don't include
773 `FT_SERVICE_METRICS_VARIATIONS_H'.
774 (cff_get_advances): Use `ttface->variation_support'.
775
776 * src/truetype/ttdriver.c (tt_get_advances): Use
777 `ttface->variation_support'.
778
779 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
780 load_truetype_glyph): Use `ttface->variation_support'.
781
7822016-12-21 Werner Lemberg <wl@gnu.org>
783
Werner Lemberg64a91132016-12-21 19:30:33 +0100784 [truetype, sfnt] Introduce font variation flags to `TT_Face'.
785
786 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
787 New macros describing available functionality of various OpenType
788 tables related to font variation.
789 (TT_Face): New fields `variation_support' and `mvar_support',
790 replacing and extending `use_fvar'.
791
792 * src/sfnt/sfobjs.c (sfnt_init_face, sfnt_load_face): Use
793 `variation_support'.
794
795 * src/truetype/ttgxvar.c (ft_var_load_hvar): Set `variation_support'
796 field.
797 (TT_Vary_Apply_Glyph_Deltas): Updated.
798
7992016-12-21 Werner Lemberg <wl@gnu.org>
800
Werner Lemberg57a67332016-12-21 06:52:23 +0100801 [base] Improve sanity check for Mac resources (#49888).
802
803 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Abort if `rlen' is not
804 positive.
805
Werner Lemberg70704b32016-12-20 12:27:22 +01008062016-12-20 Werner Lemberg <wl@gnu.org>
807
Werner Lembergded4bdb2016-12-20 23:26:38 +0100808 [base] More sanity checks for Mac resources.
809
810 We use
811
812 https://github.com/kreativekorp/ksfl/wiki/Macintosh-Resource-File-Format
813
814 and
815
816 https://developer.apple.com/legacy/library/documentation/mac/pdf/MoreMacintoshToolbox.pdf#page=151
817
818 as references.
819
820 * include/freetype/internal/ftrfork.h (FT_RFork_Ref): Use FT_Short
821 for `res_id'.
822
823 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Extract map length
824 and use it to improve sanity checks.
825 Follow the specification more closely;in particular, all data types
826 are signed, not unsigned.
827 (FT_Raccess_Get_DataOffsets): Follow the specification more closely;
828 in particular, all data types are signed, not unsigned.
829 Add some sanity checks.
830
8312016-12-20 Werner Lemberg <wl@gnu.org>
832
Werner Lemberg70704b32016-12-20 12:27:22 +0100833 [truetype] Improve logic for getting fast advance widths.
834
835 * src/cff/cffdrivr.c (cff_get_advances), src/truetype/ttdriver.c
836 (tt_get_advances): Use `is_default_instance' for test; this gets
837 recomputed after changing blend coordinates.
838
Ben Wagnercc576f82016-12-20 11:37:42 +01008392016-12-20 Ben Wagner <bungeman@google.com>
840 Werner Lemberg <wl@gnu.org>
841
Werner Lembergd678b372016-12-20 12:45:31 +0100842 [truetype] Fix linear metrics of GX variation fonts (#49829).
Ben Wagnercc576f82016-12-20 11:37:42 +0100843
844 When asking for an unhinted non-default variations,
845 `linearVertAdvance' is currently the value from the `hmtx' table
846 instead of the actual value after applying the variation. `HVAR'
847 support fixes this, but fonts will exist without that table and will
848 need sane fallback.
849
Werner Lembergd678b372016-12-20 12:45:31 +0100850 Problem also reported as
Werner Lemberg59b0b3a2016-12-20 11:39:52 +0100851
852 https://bugs.chromium.org/p/skia/issues/detail?id=5917
853
Ben Wagnercc576f82016-12-20 11:37:42 +0100854 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
855 load_truetype_glyph): Implement linear advance adjustments if `HVAR'
856 or `VVAR' tables are missing.
857
Werner Lemberga1e85f12016-12-20 10:52:26 +01008582016-12-20 Werner Lemberg <wl@gnu.org>
859
860 [cff, truetype] Fast advance width retrieval for fonts with HVAR.
861
862 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
863
864 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Don't handle MM.
865
866 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
867 (cff_get_advances): Test for HVAR and VVAR.
868
869 * src/truetype/ttdriver.c (tt_get_advances): Test for HVAR and VVAR.
870
Werner Lemberg8f633a02016-12-18 06:42:31 +01008712016-12-18 Werner Lemberg <wl@gnu.org>
872
Werner Lemberg5743df72016-12-18 21:01:03 +0100873 [base] Fix invalid mac font recursion.
874
875 Reported as
876
877 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=304
878
879 * src/base/ftobjs.c (FT_Open_Face): Code moved to...
880 (ft_open_face_internal): ... this function.
881 Add a parameter to control whether we try special Mac font handling
882 in case of failure.
883 (FT_Open_Face, FT_New_Face, FT_New_Memory_Face,
884 open_face_from_buffer): Use `ft_open_face_internal'.
885
8862016-12-18 Werner Lemberg <wl@gnu.org>
887
Werner Lembergca3d4012016-12-18 18:23:19 +0100888 * src/cff/cffobjs.c (cff_face_init): Make named instances work.
889
8902016-12-18 Werner Lemberg <wl@gnu.org>
891
Werner Lemberga8652c52016-12-18 18:12:03 +0100892 [truetype, cff] Extend `get_var_blend' function of MM service.
893
894 In particular, we need access to named instance data.
895
896 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
897 Add argument for `FT_MM_Var'.
898
899 * src/cff/cffload.c (cff_get_var_blend): Updated.
900 * src/cff/cffload.h: Updated.
901
902 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
903
904 * src/truetype/ttgxvar.c (tt_get_var_blend): Updated.
905 Accept value `NULL' for arguments.
906 * src/truetype/ttgxvar.h: Updated.
907
9082016-12-18 Werner Lemberg <wl@gnu.org>
909
Werner Lemberg25f3ac22016-12-18 15:50:18 +0100910 [sfnt] Handle `fvar' with zero axes as a non-MM font.
911
912 This is better behaviour than exiting with an error.
913
914 * include/freetype/internal/tttypes.h (TT_Face): Add `use_fvar'
915 field.
916
917 * src/sfnt/sfobjs.c (sfnt_init_face): Compute `use_fvar', also
918 updating the validation code.
919 Use `use_fvar' to compute FT_FACE_FLAG_MULTIPLE_MASTERS.
920
921 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Remove `fvar' validation
922 code.
923
9242016-12-18 Werner Lemberg <wl@gnu.org>
925
Werner Lembergeb6d0202016-12-18 09:29:58 +0100926 Minor GX code shuffling.
927
928 * include/freetype/internal/tttypes.h (TT_Face): Move
929 `is_default_instance' into TT_CONFIG_OPTION_GX_VAR_SUPPORT
930 block.
931
932 * src/sfnt/sfobjs.c (sfnt_init_face): Updated.
933 * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): New macro.
934 (TT_Load_Glyph): Use it.
935
9362016-12-18 Werner Lemberg <wl@gnu.org>
937
Werner Lemberg8f633a02016-12-18 06:42:31 +0100938 [cff] Better handling of non-CFF font formats.
939
940 * src/cff/cffload.c (cff_font_load): Pure CFFs don't have a
941 signature, so return `FT_Err_Unknown_File_Format' more often.
942
Werner Lemberg50ff6c12016-12-17 07:44:46 +01009432016-12-17 Werner Lemberg <wl@gnu.org>
944
Werner Lemberg4cd68172016-12-17 22:52:50 +0100945 * src/cff/cffload.c (cff_build_blend_vector): Remove redundant code.
946
9472016-12-17 Werner Lemberg <wl@gnu.org>
948
Werner Lembergdb17ceb2016-12-17 13:39:31 +0100949 * src/truetype/ttobjs.c (tt_face_init): Simplify conditional code.
950
9512016-12-17 Werner Lemberg <wl@gnu.org>
952
Werner Lemberg7c75b162016-12-17 13:28:24 +0100953 [sfnt, truetype] Various sanitizing fixes.
954
955 * src/sfnt/sfobjs.c (sfnt_init_face): If the axis count in `fvar' is
956 zero, set `num_instances' to zero.
957
958 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Handle `fvar' table with
959 zero axes as invalid.
960
961 * src/truetype/ttobjs.c (tt_face_init): Improve logic of loading
962 `loca', `cvt', `fpgm', and `prep' table.
963
9642016-12-17 Werner Lemberg <wl@gnu.org>
965
Werner Lemberg3b125e92016-12-17 10:02:19 +0100966 Improve tracing of `FT_Open_Face'.
967
968 * src/base/ftobjs.c (FT_Open_Face): Return info on number of
969 available faces and numbered instances, or the indices of the
970 requested face and numbered instance.
971
972 * src/sfnt/sfobjs. (sfnt_open_font): Trace number of subfonts.
973
9742016-12-17 Werner Lemberg <wl@gnu.org>
975
Werner Lemberg50ff6c12016-12-17 07:44:46 +0100976 * src/cff/cffload.c (cff_load_private_dict): Always init `blend'.
977
978 Reported as
979
980 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=295
981
Werner Lembergbeecf802016-12-16 08:52:03 +01009822016-12-16 Werner Lemberg <wl@gnu.org>
983
Werner Lembergdf2cf432016-12-16 11:38:20 +0100984 [truetype] Fix `cvar' sanity test.
985
986 Reported by Dave Arnold.
987
988 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Use tuple count mask.
989
9902016-12-16 Werner Lemberg <wl@gnu.org>
991
Werner Lemberg68620242016-12-16 11:15:17 +0100992 [cff, truetype] Remove compiler warnings; fix `make multi'.
993
994 * src/cff/cf2font.h: Include `cffload.h'.
995
996 * src/cff/cffload.c: Include FT_MULTIPLE_MASTERS_H and
997 FT_SERVICE_MULTIPLE_MASTERS_H.
998 (cff_vstore_load): Eliminate `vsSize'.
999 (cff_load_private_dict): Tag as `FT_LOCAL_DEF'.
1000
1001 * src/cff/cffload.h: Include `cffobjs.h'.
1002 Provide declaration for `cff_load_private_dict'.
1003
1004 * src/truetype/ttgxvar.c (ft_var_load_hvar): Eliminate
1005 `minorVersion' and `map_offset'.
1006
10072016-12-16 Werner Lemberg <wl@gnu.org>
1008
Werner Lembergbeecf802016-12-16 08:52:03 +01001009 [cff] Fix heap buffer overflow (#49858).
1010
1011 * src/cff/cffparse.c (cff_parser_run): Add one more stack size
1012 check.
1013
Werner Lemberg01658be2016-12-15 23:10:59 +010010142016-12-15 Werner Lemberg <wl@gnu.org>
1015
1016 Fix clang warnings.
1017
1018 * src/cff/cffload.c (cff_blend_doBlend): Add cast.
1019 (cff_subfont_load): Set `error' correctly.
1020
1021 * src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.
1022
Dave Arnold9f62d2c2016-12-15 20:27:47 +010010232016-12-15 Dave Arnold <darnold@adobe.com>
1024 Werner Lemberg <wl@gnu.org>
1025
Dave Arnoldedf40142016-12-15 21:56:44 +01001026 [cff] Implement CFF2 support (2/2).
1027
1028 The font variation code. All parts dependent on the GX code in the
1029 `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1030 In other words, you can still compile the `cff' module without
1031 defining TT_CONFIG_OPTION_GX_VAR_SUPPORT (which brings you CFF2
1032 support without font variation).
1033
1034 * src/cff/cf2font.c (cf2_font_setup): Add support for font
1035 variation.
1036 * src/cff/cf2font.h (CF2_Font): Add fields for variation data.
1037
1038 * src/cff/cf2ft.c (cf2_free_instance): Free blend data.
1039 (cf2_getVStore, cf2_getNormalizedVector): New functions.
1040 * src/cff/cf2ft.h: Updated.
1041
1042 * src/cff/cf2intrp.c: Include `cffload.h'.
1043 (cf2_cmdRESERVED_15, cf2_cmdRESERVED_16): Replace with...
1044 (cf2_cmdVSINDEX, cf2_cmdBLEND): ... this new enum values.
1045 (cf2_doBlend): New function.
1046 (cf2_interpT2CharString): Handle `vsindex' and `blend' opcodes.
1047
1048 * src/cff/cffload.c (FT_fdot14ToFixed): New macro.
1049 (cff_vstore_done, cff_vstore_load): New functions.
1050 (cff_blend_clear, cff_blend_doBlend, cff_blend_build_vector,
1051 cff_blend_check_vector): New functions.
1052 (cff_load_private_dict): Add arguments for blend vector.
1053 Handle blend data.
1054 (cff_subfont_load, cff_subfont_done): Updated.
1055 (cff_font_load): Handle CFF2 variation store data.
1056 (cff_font_done): Updated.
1057 * src/cff/cffload.h: Include `cffparse.h'.
1058 Updated.
1059
1060 * src/cff/cffobjs.c (cff_face_done): Updated.
1061
1062 * src/cff/cffparse.c: Include `cffload.h'.
1063 (cff_parse_num): Handle internal value 255.
1064 (cff_parse_vsindex, cff_parse_blend): New functions.
1065 (CFF_FIELD_BLEND): New macro.
1066 (cff_parser_run): Updated.
1067 * src/cff/cffparse.h (cff_kind_blend): New enum value.
1068
1069 * src/cff/cfftoken.h: Handle `vstore', `vsindex', and `blend'
1070 dictionary values.
1071
1072 * src/cff/cfftypes.h (CFF_VarData, CFF_AxisCoords, CFF_VarRegion,
1073 CFF_VStore, CFF_Blend): New structures.
1074 (CFF_FontRecDict): Add `vstore_offset' field.
1075 (CFF_Private): Add `vsindex' field.
1076 (CFF_SubFont): Add fields for blend data.
1077 (CFF_Font): Add `vstore' field.
1078
1079 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `CFF2' is equal to `gvar',
1080 since glyph variation data is directly embedded.
1081 (TT_Set_MM_Blend): Don't load `gvar' table for CFF2 fonts.
1082
10832016-12-15 Dave Arnold <darnold@adobe.com>
1084 Werner Lemberg <wl@gnu.org>
1085
Dave Arnold9f62d2c2016-12-15 20:27:47 +01001086 [cff] Implement CFF2 support (1/2).
1087
1088 This commit does not contain the blend code for font variation
1089 support, which follows in another commit.
1090
1091 You should ignore whitespace while inspecting this commit.
1092
1093 * include/freetype/internal/tttypes.h (TT_Face): Add `isCFF2'
1094 member.
1095
1096 * src/cff/cf2font.h (CF2_Font): Add `isCFF2' member.
1097
1098 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Handle `isCFF2'
1099 flag.
1100 (cf2_getMaxstack): New function.
1101 * src/cff/cf2ft.h: Updated.
1102
1103 * src/cff/cf2intrp.c (cf2_escRESERVED_38): New enum.
1104 (cf2_interpT2CharString): Handle CFF2 differences.
1105 Add tracing message for errors.
1106
1107 * src/cff/cffdrivr.c (cff_get_glyph_name, cff_get_name_index):
1108 Update for CFF2.
1109
1110 * src/cff/cffload.c (FT_FIXED_ONE): New macro.
1111 (cff_index_init, cff_index_load_offsets, cff_index_access_element,
1112 cff_index_get_name, cff_ft_select_get, cff_load_private_dict,
1113 cff_subfont_load, cff_font_load): Handle CFF2.
1114 * src/cff/cffload.h: Updated.
1115
1116 * src/cff/cffobjs.c (cff_face_init): Handle CFF2.
1117
1118 * src/cff/cffparse.c (cff_parse_maxstack): New function.
1119 (CFFCODE_TOPDICT, CFFCODE_PRIVATE): Removed
1120 * src/cff/cffparse.h (CFF2_MAX_STACK, CFF2_DEFAULT_STACK): New
1121 macros.
1122 (CFF2_CODE_TOPDICT, CFF2_CODE_FONTDICT, CFF2_CODE_PRIVATE): New
1123 macros.
1124
1125 * src/cff/cfftoken.h: Add fields for CFF2 dictionaries (but no blend
1126 stuff).
1127
1128 * src/cff/cfftypes.h (CFF_Index): Add `hdr_size' field.
1129 (CFF_FontRecDict): Add `maxstack' field.
1130 (CFF_Private): Add `subfont' field.
1131 (CFF_Font): Add `top_dict_length' and `cff2' fields.
1132
1133 * src/sfnt/sfobjs.c (sfnt_load_face): Handle `CFF2' table.
1134
Werner Lemberg3bd79cc2016-12-15 14:34:57 +010011352016-12-15 Werner Lemberg <wl@gnu.org>
1136 Dave Arnold <darnold@adobe.com>
1137
1138 [truetype] Provide HVAR advance width variation as a service.
1139
1140 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1141
1142 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
1143
1144 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Prevent
1145 double adjustment of advance width.
1146
1147 * src/sfnt/ttmtx.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1148 (tt_face_get_metrics): Apply metrics variations.
1149
Dave Arnold41533b92016-12-15 00:00:45 +010011502016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold097cd872016-12-15 12:58:26 +01001151 Werner Lemberg <wl@gnu.org>
1152
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01001153 [truetype] Provide function to apply `HVAR' advance width variation.
1154
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01001155 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1156
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01001157 * src/truetype/ttgxvar.c (tt_hadvance_adjust): New function.
1158 * src/truetype/ttgxvar.h: Updated.
1159
11602016-12-15 Dave Arnold <darnold@adobe.com>
1161 Werner Lemberg <wl@gnu.org>
1162
Dave Arnold097cd872016-12-15 12:58:26 +01001163 [truetype] Add `HVAR' table parsing.
1164
1165 Note that this is not complete yet; it only handles advance width
1166 variation.
1167
1168 Activation of the code follows in another commit.
1169
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01001170 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1171
Dave Arnold097cd872016-12-15 12:58:26 +01001172 * include/freetype/ftmm.h (FT_Var_Named_Style): Add `psid' member.
1173
1174 * src/truetype/ttgxvar.h (GX_HVarData, GX_AxisCoords, GX_HVarRegion,
1175 GX_HVStore, GX_WidthMap): New auxiliary structures for...
1176 (GX_HVarTable): ... HVAR main structure.
1177 (GX_BlendRec): Add data for HVAR loading.
1178
1179 * src/truetype/ttgxvar.c (FT_FIXED_ONE, FT_fdot14ToFixed,
1180 FT_intToFixed, FT_fixedToInt): New macros.
1181 (ft_var_load_hvar): New function.
1182 (TT_Get_MM_Var): Updated.
1183 (tt_done_blend): Deallocate HVAR data.
1184
11852016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold010e0612016-12-15 11:22:15 +01001186
Dave Arnoldabd58582016-12-15 12:17:22 +01001187 [cff] Extend number parsing.
1188
1189 The forthcoming CFF2 support needs a dynamic parsing limit.
1190
1191 * src/cff/cffparse.c (cff_parse_num, do_fixed, cff_parse_fixed,
1192 cff_parse_fixed_scaled, cff_parse_fixed_dynamic): Add argument for
1193 parser.
1194 (cff_parse_font_matrix, cff_parse_font_bbox, cff_parse_private_dict,
1195 cff_parse_multiple_master, cff_parse_cid_ros, cff_parser_run): Updated.
1196
1197 * src/cff/cffparse.h (cff_parse_num): Export locally.
1198
11992016-12-15 Dave Arnold <darnold@adobe.com>
1200
Dave Arnold010e0612016-12-15 11:22:15 +01001201 [cff] Implement dynamic stack size for Adobe engine.
1202
1203 This also adds `cf2_stack_setReal' and `cf2_stack_pop', needed for
1204 the forthcoming CFF2 support.
1205
1206 * src/cff/cf2stack.c (cf2_stack_init): Add argument for stack size.
1207 (cf2_stack_free): Deallocate stack.
1208 (cf2_stack_count, cf2_stack_pushInt, cf2_stack_pushFixed,
1209 cf2_stack_popInt, cf2_stack_popFixed, cf2_stack_getReal,
1210 cf2_stack_clear): Updated.
1211 (cf2_stack_setReal, cf2_stack_pop): New functions.
1212
1213 * src/cff/cf2stack.h (CF2_Stack): Add `stackSize' member.
1214 Update function declarations.
1215
1216 * src/cff/cf2intrp.c (cf2_interpT2CharString): Updated.
1217
1218 * src/cff/cffparse.c (cff_parser_init): Add parameter for stack
1219 size; return error code.
1220 (cff_parser_done): New function.
1221 (cff_parser_run): Updated.
1222
1223 * src/cff/cffparse.h (CFF_Parser): Add `stackSize' member and make
1224 `stack' a pointer.
1225 Update function declarations.
1226
1227 * src/cff/cffload.c (cff_load_private_dict, cff_subfont_load):
1228 Updated.
1229
12302016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold41533b92016-12-15 00:00:45 +01001231 Werner Lemberg <wl@gnu.org>
1232
1233 [cff] Code shuffling.
1234
1235 * src/cff/cfftypes.h (CFF_Font): Add `library' and `base_offset'
1236 fields.
1237
1238 * src/cff/cffload.c (cff_subfont_load): Change last argument to
1239 `CFF_Font'
1240 Split off parsing of private dictionary into...
1241 (cff_load_private_dict): ...this new function.
1242 (cff_font_load): Updated.
1243
Werner Lembergab22b432016-12-14 18:34:55 +010012442016-12-14 Werner Lemberg <wl@gnu.org>
1245
Werner Lemberg09183252016-12-14 20:44:11 +01001246 [sfnt, truetype] Add framework for Metrics Variations service.
1247
1248 No effect yet; service functions will be implemented later on.
1249
1250 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1251
1252 * include/freetype/internal/services/svmetric.h: New file.
1253
1254 * include/freetype/internal/ftserv.h
1255 (FT_SERVICE_METRICS_VARIATIONS_H): New macro.
1256
1257 * include/freetype/internal/tttypes.h (TT_Face): New field `var'.
1258
1259 * src/sfnt/sfobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1260 (sfnt_init_face): Initialize `face->var'.
1261
1262 * src/truetype/ttdriver.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1263 (tt_service_metrics_variations): New service.
1264 (tt_services): Updated.
1265
1266 * src/truetype/ttpic.h: Updated.
1267
12682016-12-14 Werner Lemberg <wl@gnu.org>
1269
Werner Lembergc628a7d2016-12-14 19:31:42 +01001270 [cff] Add Multiple Masters service.
1271
1272 The code simply uses the MM functions from the `truetype' module.
1273
1274 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1275
1276 * include/freetype/internal/tttypes.h (TT_Face): New field `mm'.
1277
1278 * src/cff/cffdrivr.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
1279 (cff_set_mm_blend, cff_get_mm_blend, cff_get_mm_var,
1280 cff_set_var_design, cff_get_var_design): New functions.
1281 (cff_service_multi_masters): New service.
1282 (cff_services): Updated.
1283
1284 * src/cff/cffload.c (cff_get_var_blend, cff_done_blend): New
1285 functions.
1286 * src/cff/cffload.h: Updated.
1287
1288 * src/cff/cffpic.h (CFF_SERVICE_MULTI_MASTERS_GET): New macro.
1289
1290 * src/sfnt/sfobjs.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
1291 (sfnt_init_face): Initialize `face->mm'.
1292
12932016-12-14 Werner Lemberg <wl@gnu.org>
1294
Werner Lemberga7dc0c32016-12-14 18:54:21 +01001295 Extend functionality of `ft_module_get_service'.
1296
1297 It can now differentiate between local and global searches.
1298
1299 * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
1300 (FT_Get_TrueType_Engine_Type): Updated.
1301
1302 * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
1303
1304 * include/freetype/internal/ftobjs.h: Updated.
1305 * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
1306 Updated.
1307
13082016-12-14 Werner Lemberg <wl@gnu.org>
1309
Werner Lembergab22b432016-12-14 18:34:55 +01001310 * src/truetype/ttgxvar.c (tt_get_var_blend): Fix compiler warning.
1311
Werner Lemberg4e075162016-12-14 18:25:44 +010013122016-12-14 Dave Arnold <darnold@adobe.com>
1313 Werner Lemberg <wl@gnu.org>
1314
1315 [sfnt, cff] Minor preparations.
1316
1317 * include/freetype/tttags.h (TTAG_CFF2, TTAG_HVAR, TTAG_MVAR,
1318 TTAG_VVAR): New SFNT table tags.
1319
1320 * src/cff/cf2fixed.h (CF2_FIXED_ONE, CF2_FIXED_EPSILON): Add cast.
1321
Werner Lemberg27bdb362016-12-10 09:56:03 +010013222016-12-10 Werner Lemberg <wl@gnu.org>
1323
Werner Lemberg8b174b42016-12-11 09:16:52 +01001324 [truetype, type1] Add `get_var_blend' to MM service.
1325
1326 For internal use; we want to share code between the forthcoming CFF2
1327 support and TrueType.
1328
1329 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
1330 New typedef.
1331 (MultiMasters): Add `get_var_blend'.
1332 (FT_Service_MultiMasters): Updated.
1333
1334 * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
1335 * src/truetype/ttgxvar.h: Updated.
1336
1337 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
1338 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
1339
13402016-12-10 Werner Lemberg <wl@gnu.org>
1341
Werner Lemberg27bdb362016-12-10 09:56:03 +01001342 [truetype, type1] Add `done_blend' to MM service.
1343
1344 For internal use; we want to share code between the forthcoming CFF2
1345 support and TrueType.
1346
1347 * include/freetype/internal/services/svmm.h (FT_Done_Blend_Func):
1348 New typedef.
1349 (MultiMasters): Add `done_blend'.
1350 (FT_Service_MultiMasters): Updated.
1351
1352 * src/truetype/ttgxvar.c (tt_done_blend): Use `TT_Face' as argument.
1353 * src/truetype/ttgxvar.h: Updated.
1354
1355 * src/truetype/ttobjs.c (TT_Face_Done): Updated.
1356
1357 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
1358 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
1359
Werner Lemberg3205a442016-12-09 06:55:34 +010013602016-12-09 Werner Lemberg <wl@gnu.org>
1361
1362 [sfnt] Revert change from 2016-12-08.
1363
1364 I missed the functionality of `ft_module_get_service', which makes
1365 the change unnecessary.
1366
Werner Lemberg29aa9572016-12-08 08:59:34 +010013672016-12-08 Werner Lemberg <wl@gnu.org>
1368
Werner Lemberg4191b772016-12-08 22:33:46 +01001369 Add framework to support services with 8 functions.
1370
1371 We will need this for CFF variation font support.
1372
1373 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC8):
1374 New macro.
1375
13762016-12-08 Werner Lemberg <wl@gnu.org>
1377
Werner Lemberg29aa9572016-12-08 08:59:34 +01001378 [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
1379
1380 CFF2 fonts will need access to those two functions.
1381
1382 * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
1383 (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
1384 (FT_DEFINE_SFNT_INTERFACE): Updated.
1385
1386 * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
1387 Fix signatures to exactly correspond to the glyph dict service
1388 function typedefs.
1389 (sfnt_interface): Updated.
1390
Dave Arnoldbcae6572016-12-05 22:08:15 +010013912016-12-06 Dave Arnold <darnold@adobe.com>
1392
1393 Add `FT_Get_Var_Design_Coordinates' function.
1394
1395 Note that the low-level functions aren't implemented yet.
1396
1397 * include/freetype/ftmm.h: Declare.
1398
1399 * include/freetype/internal/services/svmm.h
1400 (FT_Get_Var_Design_Func): New typedef.
1401 (MultiMasters): New MM service function `get_var_design'.
1402 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
1403 Update all callers.
1404
1405 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
1406
1407 * src/truetype/ttdriver.c: Updated.
1408
1409 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
1410 handle `get_var_design' service.
1411 * src/truetype/ttgxvar.h: Updated.
1412
1413 * src/type1/t1driver.c: Updated.
1414
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05001415 * src/type1/t1load.c (T1_Get_Var_Design): New dump function to
Dave Arnoldbcae6572016-12-05 22:08:15 +01001416 handle `get_var_design' service.
1417 * src/type1/t1load.h: Updated.
1418
Werner Lembergc0fae7d2016-12-06 11:13:19 +010014192016-12-06 Werner Lemberg <wl@gnu.org>
1420
1421 * src/type1/t1load.c (parse_subrs): Fix memory leak.
1422
1423 The `subrs' keyword might erroneously occur multiple times.
1424
1425 Reported as
1426
1427 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
1428
Werner Lemberg602be7c2016-12-01 11:36:37 +010014292016-12-01 Werner Lemberg <wl@gnu.org>
1430
1431 [gzip] Improve building with external zlib (#49673).
1432
1433 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
1434 the following error.
1435
1436 ftgzip.c
1437 zlib-1.2.8\zlib.h(86): error C2061:
1438 syntax error: identifier 'z_const'
1439 zlib-1.2.8\zlib.h(94): error C2054:
1440 expected '(' to follow 'z_const'
1441 zlib-1.2.8\zlib.h(94): error C2085:
1442 'msg': not in formal parameter list
1443 ...
1444 zlib-1.2.8\zlib.h(877): fatal error C1003:
1445 error count exceeds 100; stopping compilation
1446
1447 The error happens because FreeType keeps an own copy of zlib-1.1.4
1448 under `src/gzip'. When building `src/gzip/ftgzip.c' with
1449 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
1450
1451 #include <zlib.h>
1452
1453 which correctly finds an external `zlib.h', but `zlib.h' itself has
1454 a line
1455
1456 #include "zconf.h"
1457
1458 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
1459 compiling the files in `src/gzip'.
1460
1461 * src/gzip/zconf.h: Rename to...
1462 * src/gzip/ftzconf.h: ... this.
1463 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
1464
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +010014652016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
1466
1467 [autofit] Fix Emscripten crash (patch #9180).
1468
1469 Function calls through pointers must use a matching signature to
1470 work on Emscripten, since such calls are dispatched through lookup
1471 tables grouped by signature.
1472
1473 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
1474 typedef.
1475
Werner Lembergd949a3d2016-11-29 12:09:56 +010014762016-11-29 Werner Lemberg <wl@gnu.org>
1477
Werner Lemberg1d28f692016-11-29 18:45:22 +01001478 [smooth] Revert previous commit. Already fixed with 6ca54c64.
1479
14802016-11-29 Werner Lemberg <wl@gnu.org>
1481
Werner Lembergd949a3d2016-11-29 12:09:56 +01001482 [smooth] Avoid conditional jump on uninitialized value (#49711).
1483
1484 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
1485
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +010014862016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
1487
1488 [autofit] Code shuffling.
1489
1490 Also improve some comments and remove unused code.
1491
1492 No functional change.
1493
1494 * src/autofit/afloader.c (af_loader_load_g): Merged with...
1495 (af_loader_load_glyph): ...this function.
1496 Split off emboldening code into...
1497 (af_loader_embolden_glyph_in_slot): ... this function.
1498
Werner Lemberg78150502016-11-17 12:00:20 +010014992016-11-17 Werner Lemberg <wl@gnu.org>
1500
1501 Better support of LLP64 systems with gcc (and clang).
1502
1503 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
1504
1505 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
1506 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
1507
Werner Lembergdd26e3d2016-11-10 12:03:32 +010015082016-11-10 Werner Lemberg <wl@gnu.org>
1509
1510 Fix `lcd_weights' array size.
1511
1512 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
1513
1514 Reported by Nikolaus.
1515
Werner Lemberg565db952016-11-06 12:33:51 +010015162016-11-06 Werner Lemberg <wl@gnu.org>
1517
Werner Lemberge1ee5472016-11-06 12:39:05 +01001518 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
1519
15202016-11-06 Werner Lemberg <wl@gnu.org>
1521
Werner Lemberg1c6fd992016-11-06 12:37:55 +01001522 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
1523
1524 It's unavoidable to call the PNG engine, but to get the metrics it
1525 is sufficient to read the PNG image's header only.
1526
1527 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
1528 allocation of the glyph slot.
1529 * src/sfnt/pngshim.h: Updated.
1530 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
1531 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
1532
15332016-11-06 Werner Lemberg <wl@gnu.org>
1534
Werner Lemberg565db952016-11-06 12:33:51 +01001535 [sfnt] Speed up `sbix' lookup.
1536
1537 This also fixes a bug introduced in 2016-10-01 which prevents
1538 display of embedded bitmap fonts that use the `sbix' format.
1539
1540 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
1541 offset also in `ebdt_size' and `ebdt_start', respectively. This
1542 makes the test for an embedded bitmap data table succeed for this
1543 format.
1544
1545 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
1546 `ebdt_size' and `ebdt_start'
1547 (tt_face_load_sbix_image): Ditto.
1548
Werner Lemberg37e193e2016-11-06 12:32:51 +010015492016-11-06 Seigo Nonaka <nona@google.com>
1550 Werner Lemberg <wl@gnu.org>
1551
1552 Introduce a way of quickly retrieving (embedded) bitmap metrics.
1553
1554 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
1555 until the user calls `FT_Render_Glyph'. However, it always
1556 allocates memory for bitmaps and copies or decodes the contents of a
1557 bitmap glyph, which can be quite slow for PNG data.
1558
1559 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
1560 macro.
1561
1562 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
1563 FT_LOAD_BITMAP_METRICS_ONLY is used.
1564
1565 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
1566 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
1567 the glyph slot.
1568 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
1569 tt_face_load_sbit_image): Updated.
1570
1571 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
1572 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
1573
1574 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
1575 argument to control allocation of the glyph slot.
1576 * src/pfr/pfrobjs (pfr_slot_load): Updated.
1577
1578 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
1579
1580 * docs/CHANGES: Updated.
1581
15822016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +01001583
1584 Synchronize with gnulib (#49448).
1585
1586 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
1587 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
1588 current version of `intprops.h'.
1589 Other minor synchronization to reduce code differences between the
1590 three files.
1591
Behdad Esfahbodb72858c2016-11-03 06:41:00 +010015922016-11-03 Behdad Esfahbod <behdad@behdad.org>
1593
1594 [truetype] Clamp variation requests to valid range.
1595
1596 This is required by OpenType 1.8; it also avoids rounding surprises.
1597
1598 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
1599 outside of the allowed range to always stay within the range instead
1600 of producing an error.
1601
Werner Lemberg328d6842016-10-29 00:18:56 +020016022016-10-29 Werner Lemberg <wl@gnu.org>
1603
1604 [truetype] Remove clang warnings.
1605
1606 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
1607 loop counter handling.
1608
1609 * src/truetype/ttinterp.c: Updated.
1610 (Ins_SCANTYPE): Use signed constant.
1611 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
1612
Werner Lembergddf38722016-10-27 07:27:27 +020016132016-10-27 Werner Lemberg <wl@gnu.org>
1614
1615 [truetype] Fix commit from 2014-11-24.
1616
1617 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1618
1619 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
1620 logic.
1621
Werner Lemberg56140902016-10-26 08:10:59 +020016222016-10-26 Werner Lemberg <wl@gnu.org>
1623
Werner Lemberg9c45ac32016-10-26 16:00:00 +02001624 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
1625
1626 * include/freetype/ftmm.h: Declare.
1627
1628 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
1629 New typedef.
1630 (MultiMasters): New MM service function `get_mm_blend'.
1631 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
1632 Update all callers.
1633
1634 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
1635 FT_Get_Var_Blend_Coordinates): Implement.
1636
1637 * src/truetype/ttdriver.c: Updated.
1638
1639 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
1640 `get_mm_blend' service.
1641 * src/truetype/ttgxvar.h: Updated.
1642
1643 * src/type1/t1driver.c: Updated.
1644
1645 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
1646 `get_mm_blend' service.
1647 * src/type1/t1load.h: Updated.
1648
1649 * docs/CHANGES: Document.
1650
16512016-10-26 Werner Lemberg <wl@gnu.org>
1652
Werner Lemberg56140902016-10-26 08:10:59 +02001653 * src/type1/t1load.c (parse_subrs): Fix limit check.
1654
1655 Reported as
1656
1657 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
1658
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -040016592016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
1660
1661 [cff] Correct cmap format reporting (#24819).
1662
1663 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
1664 charmap instead of guessing its format and language.
1665
Werner Lemberg57741402016-10-22 18:34:48 +020016662016-10-22 Werner Lemberg <wl@gnu.org>
1667
Werner Lemberg50816742016-10-22 19:16:08 +02001668 [truetype] Fix SCANTYPE instruction (#49394).
1669
1670 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
1671
16722016-10-22 Werner Lemberg <wl@gnu.org>
1673
Werner Lemberg57741402016-10-22 18:34:48 +02001674 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
1675
1676 * src/sfnt/ttpost.c (load_format_25): We need at least a single
1677 table entry.
1678
Werner Lemberg7eeaf982016-10-14 08:58:17 +020016792016-10-14 Werner Lemberg <wl@gnu.org>
1680
1681 [truetype] Fix handling of `cvar' table data.
1682
1683 Reported as
1684
1685 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
1686
1687 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
1688 indices.
1689
Werner Lemberg92281222016-10-11 07:12:12 +020016902016-10-11 Werner Lemberg <wl@gnu.org>
1691
Werner Lemberg9c54d122016-10-11 08:57:55 +02001692 [psaux] Fix handling of invalid flex subrs.
1693
1694 Problem reported as
1695
1696 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
1697
1698 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
1699 <op_callothersubr>: Set `flex_state' after error checking.
1700
17012016-10-11 Werner Lemberg <wl@gnu.org>
1702
Werner Lemberg92281222016-10-11 07:12:12 +02001703 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
1704
Werner Lembergd61b0422016-10-08 19:20:33 +020017052016-10-08 Werner Lemberg <wl@gnu.org>
1706
Werner Lemberg6b354932016-10-08 20:26:59 +02001707 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
1708
17092016-10-08 Werner Lemberg <wl@gnu.org>
1710
Werner Lembergd61b0422016-10-08 19:20:33 +02001711 [cid] Fix parsing of subr offsets.
1712
1713 Bug introduced 2016-05-16.
1714
1715 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
1716
Werner Lembergfcc0ee82016-10-01 20:12:25 +020017172016-10-01 Werner Lemberg <wl@gnu.org>
1718
1719 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
1720
1721 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
1722 a bitmap data table.
1723
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -040017242016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
1725
1726 [smooth] Remove impossibility.
1727
1728 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
1729 (gray_convert_glyph): Remove impossible condition and clean up.
1730
Werner Lembergbf902392016-09-29 13:04:46 +020017312016-09-29 Werner Lemberg <wl@gnu.org>
1732
Werner Lemberg35764872016-09-30 08:11:52 +02001733 [pcf] Enrich family name with foundry name and glyph width info.
1734
1735 This is a very old patch from openSuSE (from 2006, submitted to
1736 FreeType in 2011) that I forgot to apply.
1737
1738 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
1739
1740 Prepend the foundry name plus a space to the family name. There are
1741 many fonts just called `Fixed' which look completely different, and
1742 which have nothing to do with each other. When selecting `Fixed' in
1743 KDE or Gnome one gets results that appear rather random, the style
1744 changes often if one changes the size and one cannot select some
1745 fonts at all.
1746
1747 We also check whether we have `wide' characters; all put together,
1748 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
1749
1750 * src/pcf/pcfread.c (pcf_load_font): Implement it.
1751
1752 * docs/CHANGES: Document it.
1753
17542016-09-29 Werner Lemberg <wl@gnu.org>
1755
Werner Lemberg71b617d2016-09-29 19:53:39 +02001756 [ftfuzzer] Speed up.
1757
1758 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
1759 check for embedded bitmaps if we have a non-default instance.
1760
17612016-09-29 Werner Lemberg <wl@gnu.org>
1762
Werner Lemberg2067c692016-09-29 19:49:07 +02001763 [truetype] Disallow bitmap strokes for non-default instances.
1764
1765 Also speed up access of default instances if GX variations are
1766 active.
1767
1768 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
1769 `is_default_instance' member.
1770
1771 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
1772 `is_default_instance'.
1773
1774 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
1775 load_truetype_glyph): Add test for default instance.
1776 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
1777
1778 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
1779 `is_default_instance'.
1780
17812016-09-29 Werner Lemberg <wl@gnu.org>
1782
Werner Lembergbf902392016-09-29 13:04:46 +02001783 [truetype] Clean up `TT_Face' structure.
1784
1785 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
1786 fields `horz_metrics' and `vert_metrics'.
1787 Update documentation.
1788
1789 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
1790
Werner Lemberg2ecf89b2016-09-28 19:06:21 +020017912016-09-28 Werner Lemberg <wl@gnu.org>
1792
Werner Lemberg45cad2e2016-09-28 19:10:52 +02001793 More FT_ZERO usage.
1794
1795 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
1796 s/ft_memset/FT_MEM_ZERO/.
1797
1798 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
1799 s/ft_memset/FT_ARRAY_ZERO/.
1800
1801 * src/raster/ftraster.c (FT_ZERO): Define.
1802 (ft_black_new): Use it.
1803 * src/raster/ftrend1.c (ft_raster1_get_cbox):
1804 s/FT_MEM_ZERO/FT_ZERO/.
1805
1806 * src/smooth/ftgrays.c (FT_ZERO): Define.
1807 (gray_raster_new): Use it.
1808 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
1809 s/FT_MEM_ZERO/FT_ZERO/.
1810
18112016-09-28 Werner Lemberg <wl@gnu.org>
1812
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02001813 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
1814
Werner Lemberg0d945922016-09-27 08:44:31 +020018152016-09-27 Werner Lemberg <wl@gnu.org>
1816
Werner Lemberga3e2c832016-09-27 21:42:02 +02001817 [truetype] Trace number of executed opcodes.
1818
1819 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
1820
18212016-09-27 Werner Lemberg <wl@gnu.org>
1822
Werner Lemberge27b8a52016-09-27 21:21:01 +02001823 [truetype] Speed up `TT_Load_Glyph'.
1824
1825 This avoids additional calls to `tt_face_lookup_table' for the
1826 `glyf' table, which can be expensive.
1827
1828 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
1829 `glyf_offset' field to ...
1830 (TT_FaceRec): ... this structure.
1831 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
1832 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +02001833 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +02001834
18352016-09-27 Werner Lemberg <wl@gnu.org>
1836
Werner Lemberg0d945922016-09-27 08:44:31 +02001837 [truetype] Introduce dynamic limits for some bytecode opcodes.
1838
1839 This speeds up FreeType's handling of malformed fonts.
1840
1841 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
1842 of twilight points, the total number of negative jumps, and the
1843 total number of loops in LOOPCALL opcodes. The values are based on
1844 the number of points and entries in the CVT table.
1845 (Ins_JMPR): Test negative jump counter.
1846 (Ins_LOOPCALL): Test loopcall counter.
1847
1848 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
1849
1850 * docs/CHANGES: Updated.
1851
Werner Lembergd11e8b62016-09-25 15:32:04 +020018522016-09-25 Werner Lemberg <wl@gnu.org>
1853
Werner Lemberga7649632016-09-25 16:29:05 +02001854 [truetype] Sanitize only last entry of `loca' table.
1855
1856 Without this patch, a loca sequence like `0 100000 0 100000 ...',
1857 where value 100000 is larger than the `glyf' table size, makes
1858 FreeType handle the whole `glyf' table as a single glyph again and
1859 again, which is certainly invalid (and can be very slow, too).
1860
1861 * src/truetype/ttpload.c (tt_face_get_location): Implement.
1862 Improve tracing messages.
1863
18642016-09-25 Werner Lemberg <wl@gnu.org>
1865
Werner Lembergd11e8b62016-09-25 15:32:04 +02001866 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
1867
Werner Lemberg2f2e73c2016-09-24 22:42:58 +020018682016-09-24 Werner Lemberg <wl@gnu.org>
1869
1870 [autofit] Tracing fixes.
1871
1872 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
1873 functions only if we actually do tracing.
1874
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -040018752016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1876
1877 [smooth] Reduce divisions in the line renderer.
1878
1879 We don't need some divisions if a line segments stays within a single
1880 row or a single column of pixels.
1881
1882 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
1883 conditional.
1884
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -040018852016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1886
1887 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
1888
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -040018892016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
1890
1891 [smooth] Another tiny speed-up.
1892
1893 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
1894 (gray_record_cell): ... this function.
1895
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -040018962016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1897
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -04001898 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
1899
19002016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1901
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04001902 [smooth] Fix valgrind warning and reoptimize.
1903
1904 The algorithm calls `gray_set_cell' at the start of each new contour
1905 or when the contours cross the cell boundaries. Double-checking for
1906 that is wasteful.
1907
1908 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
1909 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
1910
Werner Lemberge421a0b2016-09-10 08:02:30 +020019112016-09-10 Werner Lemberg <wl@gnu.org>
1912
1913 [sfnt] Fix previous commit.
1914
1915 Problems reported as
1916
1917 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
1918
1919 We now map the strike index right before accessing the physical
1920 data, not earlier.
1921
1922 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
1923 after creating the map so that...
1924
1925 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
1926 can be used before and after setting up `sbit_strike_map'.
1927 (tt_face_set_sbit_strike): Revert change.
1928 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
1929
1930 * src/truetype/ttdriver.c (tt_size_select): Revert change.
1931
Werner Lembergd609b7c2016-09-09 22:11:07 +020019322016-09-09 Werner Lemberg <wl@gnu.org>
1933
Werner Lembergdeb26152016-09-09 22:13:33 +02001934 [ftfuzzer] Minor improvements.
1935
1936 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
1937 invalid strikes.
1938 Use better values for call to `FT_Set_Char_Size'.
1939
19402016-09-09 Werner Lemberg <wl@gnu.org>
1941
Werner Lembergd609b7c2016-09-09 22:11:07 +02001942 [sfnt] Don't provide (completely) broken strike data.
1943
1944 FreeType tries to sanitize strike header data; we now reject
1945 completely broken ones.
1946
1947 * include/freetype/internal/tttypes.h (TT_FaceRec): New
1948 `sbit_strike_map' array pointer.
1949
1950 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
1951 width or height would be zero.
1952 Add tracing message in case of error.
1953
1954 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
1955 only using (more or less) valid strike header data for
1956 FT_Face's `available_sizes' array.
1957 (sfnt_done_face): Updated.
1958
1959 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
1960 `sbit_strike_map'.
1961 (tt_face_load_strike_metrics): Improve tracing.
1962
1963 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
1964
Werner Lemberg9749f262016-09-08 07:51:03 +020019652016-09-08 Werner Lemberg <wl@gnu.org>
1966
Werner Lembergd2d59682016-09-08 09:04:32 +02001967 * Version 2.7 released.
1968 =======================
1969
1970
1971 Tag sources with `VER-2-7'.
1972
1973 * docs/VERSION.TXT: Add entry for version 2.7.
1974
1975 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1976 builds/windows/vc2005/index.html,
1977 builds/windows/vc2008/freetype.vcproj,
1978 builds/windows/vc2008/index.html,
1979 builds/windows/vc2010/freetype.vcxproj,
1980 builds/windows/vc2010/index.html,
1981 builds/windows/visualc/freetype.dsp,
1982 builds/windows/visualc/freetype.vcproj,
1983 builds/windows/visualc/index.html,
1984 builds/windows/visualce/freetype.dsp,
1985 builds/windows/visualce/freetype.vcproj,
1986 builds/windows/visualce/index.html,
1987 builds/wince/vc2005-ce/freetype.vcproj,
1988 builds/wince/vc2005-ce/index.html,
1989 builds/wince/vc2008-ce/freetype.vcproj,
1990 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
1991
1992 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
1993 (FREETYPE_PATCH): Set to 0.
1994
1995 * builds/unix/configure.raw (version_info): Set to 18:6:12.
1996 * CMakeLists.txt (VERSION_MINOR): Set to 7.
1997 (VERSION_PATCH): Set to 0.
1998
1999 * docs/CHANGES: Updated.
2000
20012016-09-08 Werner Lemberg <wl@gnu.org>
2002
Werner Lembergb1e7b682016-09-08 08:56:34 +02002003 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
2004
2005 This fixes the `multi' build.
2006
20072016-09-08 Werner Lemberg <wl@gnu.org>
2008
Werner Lemberg9749f262016-09-08 07:51:03 +02002009 [autofit] Another improvement to Armenian support.
2010
2011 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
2012
2013 * src/autofit/afscript.h: Use better suited characters to derive
2014 default stem widths.
2015
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -040020162016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
2017
Alexei Podtelezhnikov15c6e8d2017-01-22 23:09:05 -05002018 * src/smooth/ftgrays.c (gray_hline): Micro-optimize.
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04002019
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -040020202016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
2021
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -04002022 [smooth] Operate in absolute bitmap coordinates.
2023
2024 Simpler bitmap addressing improves performance by 1.5%.
2025
2026 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
2027 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
2028 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
2029
20302016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
2031
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04002032 [smooth] Improve contour start (take 2).
2033
2034 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
2035 instead of...
2036 (gray_start_cell): ... this function, which is removed.
2037 (gray_convert_glyph): Make initial y-coordinate invalid.
2038
Werner Lembergebbb8b22016-09-06 16:28:57 +020020392016-09-06 Werner Lemberg <wl@gnu.org>
2040
2041 [type1] MM fonts support exactly zero named instances (#48748).
2042
2043 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
2044
Jonathan Kewa15133e2016-09-06 06:33:36 +020020452016-09-06 Jonathan Kew <jfkthame@gmail.com>
2046
2047 [cff] Fix uninitialized memory.
2048
2049 Problem reported as
2050
2051 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
2052
2053 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
2054 array to handle a `get' opcode without a previous `put'.
2055
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -040020562016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2057
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -04002058 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
2059
20602016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2061
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04002062 [smooth] Improve contour start.
2063
2064 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
2065 instead of...
2066 (gray_start_cell): ... this function, which is removed.
2067
Werner Lembergc9adf1a2016-09-05 07:32:37 +020020682016-09-05 Werner Lemberg <wl@gnu.org>
2069
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +02002070 [cff] Fix memory initialization.
2071
2072 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
2073 variants of FreeType's memory allocation macros don't do zeroing.
2074
20752016-09-05 Werner Lemberg <wl@gnu.org>
2076
Werner Lemberg1c8bb632016-09-05 08:13:42 +02002077 [ftrandom] Minor improvements.
2078
2079 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
2080 500.
2081
2082 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
2083 directories to ...
2084 (INCLUDES): ... this new variable.
2085 (LDFLAGS): New variable.
2086 (ftrandom.o, ftrandom): Updated.
2087
20882016-09-05 Werner Lemberg <wl@gnu.org>
2089
Werner Lembergc9adf1a2016-09-05 07:32:37 +02002090 [autofit] Improve Armenian support.
2091
2092 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
2093
2094 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
2095 selection of characters.
2096
2097 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2098
Werner Lemberg4b28f6a2016-09-04 19:05:45 +020020992016-09-04 Werner Lemberg <wl@gnu.org>
2100
2101 [ftrandom] Improve Makefile.
2102
2103 It now supports both a normal build (`./configure && make') and a
2104 development build (`make devel').
2105
2106 * src/tools/ftrandom/Makefile (VPATH): Set it so that
2107 `libfreetype.a' gets searched in both `objs' (for the development
2108 build) and `objs/.libs' (for a normal build which uses libtool).
2109 (LIBS): Add missing libraries.
2110 (ftrandom.o): New rule.
2111 (ftrandom): Use automatic variables.
2112
Werner Lembergf0fa7a62016-09-03 06:33:36 +020021132016-09-03 Werner Lemberg <wl@gnu.org>
2114
Werner Lemberg4e659d72016-09-03 18:14:00 +02002115 [truetype] More fixes for handling of GX deltas.
2116
2117 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
2118
2119 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
2120 sanity test for glyph variation array header size.
2121 Always set stream position before reading packed x and y deltas.
2122 Fix thinko w.r.t. `localpoints' array.
2123
21242016-09-03 Werner Lemberg <wl@gnu.org>
2125
Werner Lembergca8e98d2016-09-03 13:06:16 +02002126 [ftrandom] Various fixes.
2127
2128 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
2129 default.
2130 (error_fraction): Make it of type `double' to work as advertized –
2131 this was completely broken.
2132 Update all related code.
2133 (error_count, fcnt): Make it unsigned to fix compiler warnings.
2134 Update all related code.
2135 (fontlist): Change `len' member to `long' to fix compiler warnings.
2136 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
2137 unused variables.
2138 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
2139 (ExecuteTest): Ditto.
2140 Call `FT_Done_FreeType'.
2141 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
2142 int'.
2143 (usage): Improve output.
2144 (main): Fix compiler warnings.
2145
2146 * src/tools/ftrandom/README: Updated.
2147
21482016-09-03 Werner Lemberg <wl@gnu.org>
2149
Werner Lembergb98dfda2016-09-03 08:20:31 +02002150 [base] Avoid negative bitmap stroke dimensions (#48985).
2151
2152 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
2153 actually successful. For example, this can fail for value
2154 -32768 if the type is `signed short'. If there are problems,
2155 disable the stroke.
2156
21572016-09-03 Werner Lemberg <wl@gnu.org>
2158
Werner Lembergf0fa7a62016-09-03 06:33:36 +02002159 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
2160
2161 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
2162
Werner Lembergd8ef7262016-09-02 23:27:50 +020021632016-09-02 Werner Lemberg <wl@gnu.org>
2164
Werner Lembergd87bb912016-09-02 23:56:27 +02002165 [unix] Enable 64bit support in file system access (#48962).
2166
2167 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
2168
21692016-09-02 Werner Lemberg <wl@gnu.org>
2170
Werner Lembergd8ef7262016-09-02 23:27:50 +02002171 [sfnt] Avoid left shift of negative value (#48980).
2172
2173 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
2174 constant.
2175
21762016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +02002177
2178 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
2179
Werner Lemberg7a13dc02016-09-02 08:24:01 +020021802016-09-02 Werner Lemberg <wl@gnu.org>
2181
2182 Some preparations for the next release.
2183
2184 * include/freetype/config/ftoption.h
2185 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
2186
2187 * docs/CHANGES: Updated.
2188
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -040021892016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
2190
2191 [smooth] Simplify span rendering more.
2192
2193 It turns out that there is significant cost associated with `FT_Span'
Alexei Podtelezhnikov15c6e8d2017-01-22 23:09:05 -05002194 creation and calls to `gray_render_span' because it happens so
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04002195 frequently. This removes these steps from our internal use but leaves
2196 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
2197 is about 5%.
2198
2199 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
2200 migrated to...
2201 (gray_hline): ... here.
2202
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -040022032016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
2204
2205 [smooth] Streamline pixmap drawing a bit more.
2206
2207 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04002208 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04002209
2210 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
2211
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -040022122016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
2213
2214 [smooth] Streamline pixmap drawing.
2215
2216 This gives 2% speed improvement in rendering simple glyphs.
2217
2218 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
2219 pointer to its bottom-left and pitch to be used in...
2220 (gray_TWorker): ... here.
2221 (gray_render_span): Move pixmap flow check from here...
2222 (gray_raster_render): .. to here.
2223
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -040022242016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
2225
2226 [smooth] Reduce stack of band boundaries.
2227
2228 * src/smooth/ftgrays.c (gray_TBand): Removed.
2229 (gray_convert_glyph): Updated to stack band boundaries concisely.
2230
Werner Lembergf3e71ba2016-08-26 10:31:30 +020022312016-08-26 Werner Lemberg <wl@gnu.org>
2232
Werner Lemberg57aa8392016-08-26 11:59:50 +02002233 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
2234
22352016-08-26 Werner Lemberg <wl@gnu.org>
2236
Werner Lemberg3c61a2f2016-08-26 11:50:09 +02002237 [cid] Fix commit from 2016-05-16.
2238
2239 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
2240
22412016-08-26 Werner Lemberg <wl@gnu.org>
2242
Werner Lembergf3e71ba2016-08-26 10:31:30 +02002243 [sfnt] Cache offset and size to bitmap data table.
2244
2245 This commit avoids `EBDT' and friends being looked up again and
2246 again while loading a single embedded bitmap.
2247
2248 * include/freetype/internal/tttypes.h (TT_FaceRec)
2249 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
2250 `ebdt_size'.
2251
2252 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
2253 (tt_face_load_sbit): ... this function; also store the table size
2254 and offset.
2255
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -040022562016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
2257
2258 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
2259
Werner Lemberga660e3d2016-08-26 00:23:27 +020022602016-08-26 Werner Lemberg <wl@gnu.org>
2261
2262 [type1] Fix heap buffer overflow.
2263
2264 Reported as
2265
2266 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
2267
2268 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
2269 contain glyph names.
2270
Werner Lemberg327f2e32016-08-25 12:46:08 +020022712016-08-25 Werner Lemberg <wl@gnu.org>
2272
Werner Lemberg69ce9732016-08-25 19:49:52 +02002273 [sfnt] Fix previous commit (#48901).
2274
2275 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
2276
22772016-08-25 Werner Lemberg <wl@gnu.org>
2278
Werner Lembergacd18792016-08-25 17:12:46 +02002279 [sfnt] Speed up handling of invalid format 4 cmaps.
2280
2281 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
2282 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
2283
22842016-08-25 Werner Lemberg <wl@gnu.org>
2285
Werner Lemberg327f2e32016-08-25 12:46:08 +02002286 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
2287
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -040022882016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
2289
2290 [smooth] Simplify span rendering.
2291
2292 This removes unnecessary complexity of span merging and buffering.
2293 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04002294 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04002295
2296 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
2297 (gray_TWorker): Remove span buffer and related fields.
2298 (gray_sweep, gray_hline): Updated.
2299
2300 * include/freetype/ftimage.h: Remove documentation note about
2301 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
2302
Werner Lembergcf4224a2016-08-16 06:44:23 +020023032016-08-16 Werner Lemberg <wl@gnu.org>
2304
Werner Lemberga4c2a312016-08-22 19:32:34 +02002305 [truetype] Fix `MPS' instruction.
2306
2307 According to Greg Hitchcock, MPS in DWrite really returns the point
2308 size.
2309
2310 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
2311
2312 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
2313
2314 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
2315 member.
2316
2317 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
2318 (Ins_MPS): Fix instruction.
2319
23202016-08-16 Werner Lemberg <wl@gnu.org>
2321
Werner Lemberg8521ad92016-08-16 13:44:38 +02002322 [lzw] Optimize last commit.
2323
2324 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
2325 conditional clause.
2326
23272016-08-16 Werner Lemberg <wl@gnu.org>
2328
Werner Lemberg548f68d2016-08-16 09:46:40 +02002329 [lzw] Avoid invalid left shift.
2330
Werner Lemberg6df68332016-08-16 09:50:07 +02002331 Reported as
2332
2333 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
2334
Werner Lemberg548f68d2016-08-16 09:46:40 +02002335 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
2336
23372016-08-16 Werner Lemberg <wl@gnu.org>
2338
Werner Lemberg8d7b9192016-08-16 08:07:58 +02002339 [lzw] Avoid buffer overrun.
2340
2341 Reported as
2342
2343 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
2344
2345 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
2346 underflow.
2347
23482016-08-16 Werner Lemberg <wl@gnu.org>
2349
Werner Lembergcf4224a2016-08-16 06:44:23 +02002350 [truetype] Fix compiler warning.
2351
2352 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
2353
Werner Lemberg248f5622016-08-13 06:53:53 +020023542016-08-13 Werner Lemberg <wl@gnu.org>
2355
2356 [winfonts] Avoid zero bitmap width and height.
2357
2358 Reported as
2359
2360 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
2361
2362 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
2363 (FNT_Load_Glyph): Check for zero pitch.
2364
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +020023652016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2366
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -04002367 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
2368
23692016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2370
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -04002371 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
2372
23732016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2374
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02002375 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
2376
Peter Klotz3b37bfc2016-08-10 22:38:08 -040023772016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
2378
2379 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
2380
Werner Lemberg5224aae2016-08-10 19:47:29 +020023812016-08-10 Werner Lemberg <wl@gnu.org>
2382
2383 [sfnt] Use correct type for `italicAngle' field (#48732).
2384
2385 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
2386
Werner Lemberg53059f92016-08-07 09:01:33 +020023872016-08-06 Jon Spencer <jon@jonspencer.ca>
2388
2389 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
2390
2391 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
2392 advance value from the font table and then scales it by the
2393 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
2394 set that value for bitmap fonts and the advance gets scaled to zero.
2395
2396 Taken from
2397
2398 https://github.com/behdad/harfbuzz/issues/252
2399
2400 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2401 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
2402
24032016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02002404
2405 [truetype] Fix GX variation handling of composites.
2406
2407 * src/truetype/ttgload.c (load_truetype_glyph)
2408 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
2409
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040024102016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2411
2412 [smooth] Minor refactoring.
2413
2414 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
2415 Updated.
2416
Werner Lembergfae4ec02016-07-29 06:43:32 +020024172016-07-29 Werner Lemberg <wl@gnu.org>
2418
2419 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
2420
2421 Since 2016-05-16 we detect infinite recursion directly.
2422
2423 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
2424 `maxComponentDepth'.
2425 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
2426 `maxComponentDepth' is not valid. Instead, simply adjust its value
2427 and emit a tracing message.
2428
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020024292016-07-26 Werner Lemberg <wl@gnu.org>
2430
2431 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
2432
2433 No functional change.
2434
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020024352016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
2436
2437 [truetype] Record the end of IDEFs.
2438
2439 To match the logic in FDEF. The value of the end is only used for
2440 bound-checking in `Ins_JMPR', so it may not have been obvious that
2441 it was not recorded. Tested (as part of Font Validator 2.0) all the
2442 fonts on Fedora and did not see any change.
2443
2444 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
2445
Werner Lemberge69f34b2016-07-19 07:06:19 +020024462016-07-19 Werner Lemberg <wl@gnu.org>
2447
Werner Lemberg7f631052016-07-19 21:35:58 +02002448 [truetype] Sanitizer fix, second try.
2449
2450 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
2451 tests and use only one slot more.
2452
24532016-07-19 Werner Lemberg <wl@gnu.org>
2454
Werner Lemberge69f34b2016-07-19 07:06:19 +02002455 [truetype] Sanitizer fix.
2456
2457 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
2458 to fix nested loops.
2459
Werner Lemberga3b70d72016-07-18 06:23:36 +020024602016-07-18 Werner Lemberg <wl@gnu.org>
2461
2462 [truetype] Make GETDATA work only for GX fonts.
2463
2464 * src/truetype/ttinterp.c (opcode_name): Updated.
2465 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
2466 (TT_RunIns): Updated.
2467
24682016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02002469
Werner Lemberg8c930132016-07-17 22:40:31 +02002470 [truetype] Add support for Apple's
2471
2472 GETDATA[], opcode 0x92
2473
2474 bytecode instruction. It always returns 17, and we have absolutely
2475 no idea what it is good for...
2476
2477 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
2478 (Ins_GETDATA): New function.
2479 (TT_RunIns): Add it.
2480
24812016-07-16 Werner Lemberg <wl@gnu.org>
2482
Werner Lemberge0843602016-07-16 18:46:28 +02002483 [truetype] Add bytecode support for GX variation fonts.
2484
2485 This commit implements undocumented (but confirmed) stuff from
2486 Apple's old bytecode engine.
2487
2488 GETVARIATION[], opcode 0x91
2489 This opcode pushes normalized variation coordinates for all axes
2490 onto the stack (in 2.14 format). Coordinate of first axis gets
2491 pushed first.
2492
2493 GETINFO[], selector bit 3
2494 If GX variation support is enabled, bit 10 of the result is set
2495 to 1.
2496
2497 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
2498 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
2499 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
2500 bit 3, checking support for variation glyph hinting.
2501 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
2502 to implement opcode 0x91.
2503 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
2504
25052016-07-16 Werner Lemberg <wl@gnu.org>
2506
Werner Lemberg32a32062016-07-16 16:39:26 +02002507 [truetype] Fix GETINFO bytecode instruction.
2508
2509 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
2510 stretching information.
2511
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020025122016-07-16 Behdad Esfahbod <behdad@behdad.org>
2513
2514 [truetype] Make all glyphs in `Zycon' GX font work.
2515
2516 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
2517 tests.
2518
Werner Lemberga3b61252016-07-16 08:16:16 +020025192016-07-16 Werner Lemberg <wl@gnu.org>
2520
2521 [truetype] Fix GX delta tracing.
2522
2523 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
2524 relative point movements.
2525
25262016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02002527
2528 [truetype] More fixes for GX.
2529
2530 This finally fixes the rendering of the cyclist and the lizard in
2531 the `Zycon' font.
2532
2533 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
2534 index is always cumulative.
2535
2536 (tt_handle_deltas): Rename to...
2537 (tt_interpolate_deltas): ... This.
2538 Add new parameter for output point array.
2539 Update caller.
2540
2541 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
2542 the intermediate results of `tt_interpolate_deltas' that are to be
2543 added to `outline->points'.
2544
Werner Lembergaafff572016-07-16 06:41:39 +020025452016-07-15 Werner Lemberg <wl@gnu.org>
2546
2547 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
2548
2549 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
2550
2551 Reported by Alexei.
2552
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020025532016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
2554
2555 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
2556
2557 Problem reported by Hin-Tak Leung.
2558
Werner Lemberg894c0222016-07-15 10:23:11 +020025592016-07-15 Werner Lemberg <wl@gnu.org>
2560
Werner Lemberg1831e6f2016-07-15 10:35:32 +02002561 [autofit] Update and improve segment and edge tracing.
2562
2563 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
2564 `delta' also.
2565 Don't show first point of segment as a replacement for `pos'; this
2566 is (a) misleading, since the difference to `pos' can be almost
2567 arbitrarily large in corner cases, and (b) it is better to have all
2568 segment data in font units instead of a single value given in output
2569 space coordinates.
2570 Improve layout.
2571 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
2572 values for convenience.
2573 Improve layout.
2574
25752016-07-15 Werner Lemberg <wl@gnu.org>
2576
Werner Lemberg894c0222016-07-15 10:23:11 +02002577 [autofit] For edges, reject segments wider than 1px (#41334).
2578
2579 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
2580
2581 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
2582 `delta'.
2583 (af_latin_hints_compute_edges): Reject segments with a delta larger
2584 than 0.5px.
2585
Werner Lemberg631e2182016-07-14 06:25:05 +020025862016-07-14 Werner Lemberg <wl@gnu.org>
2587
Werner Lembergff655432016-07-14 15:01:55 +02002588 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
2589
25902016-07-14 Werner Lemberg <wl@gnu.org>
2591
Werner Lembergee3f36f2016-07-14 10:25:20 +02002592 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
2593
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05002594 * src/sfnt/sfobjs.c (sfnt_init_face): Don't strip off higher 16bits.
Werner Lembergee3f36f2016-07-14 10:25:20 +02002595
25962016-07-14 Werner Lemberg <wl@gnu.org>
2597
Werner Lemberg631e2182016-07-14 06:25:05 +02002598 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
2599
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020026002016-07-14 Behdad Esfahbod <behdad@behdad.org>
2601
2602 [truetype] Fix gxvar delta interpolation.
2603
2604 The coordinates of the base font should be used for interpolation
2605 purposes, NOT the current points (i.e., the result of accumulation
2606 of previous deltas).
2607
2608 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
2609 `points_org' before looping over all tuples.
2610
Werner Lembergf6aa0892013-05-10 07:58:47 +02002611
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002612----------------------------------------------------------------------------
2613
Werner Lemberg563ae782017-01-04 20:16:34 +01002614Copyright 2016-2017 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002615David Turner, Robert Wilhelm, and Werner Lemberg.
2616
2617This file is part of the FreeType project, and may only be used, modified,
2618and distributed under the terms of the FreeType project license,
2619LICENSE.TXT. By continuing to use, modify, or distribute this file you
2620indicate that you have read the license and understand and accept it
2621fully.
2622
2623
2624Local Variables:
2625version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00002626coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002627End: