blob: 575ca88b031042c623341ace2999dc35d429e9bd [file] [log] [blame]
Werner Lemberg464b16b2017-01-27 08:45:46 +010012017-01-27 Werner Lemberg <wl@gnu.org>
2
3 s/GB2312/PRC/.
4
5 * include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
6 (FT_ENCODING_GB2312): Deprecated.
7
8 * include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
9 (TT_MS_ID_GB2312): Deprecated.
10
11 * src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.
12
13 * docs/CHANGES: Updated.
14
Werner Lemberg939df422017-01-26 21:41:38 +0100152017-01-26 Werner Lemberg <wl@gnu.org>
16
Werner Lembergf4253362017-01-27 00:06:52 +010017 [base] Add `FT_Get_Sfnt_LangTag' function.
18
19 * include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
20 (FT_Get_Sfnt_LangTag): New declaration.
21
22 * src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New funtion.
23
24 * docs/CHANGES: Updated.
25
262017-01-26 Werner Lemberg <wl@gnu.org>
27
Werner Lemberg939df422017-01-26 21:41:38 +010028 [sfnt] Support `name' table format 1.
29
30 * include/freetype/internal/tttypes.h (TT_LangTagRec): New
31 structure.
32 (TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.
33
34 * src/sfnt/ttload.c (tt_face_load_name): Add support for language
35 tags.
36 Reduce array size of name strings in case of invalid entries.
37 (tt_face_free_name): Updated.
38
39 * docs/CHANGES: Updated.
40
Werner Lembergf4e56962017-01-25 15:08:41 +0100412017-01-25 Werner Lemberg <wl@gnu.org>
42
43 [sfnt] s/TT_NameEntry/TT_Name/.
44
45 * include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
46 to...
47 (TT_NameRec): This.
48 (TT_NameTableRec): Updated.
49
50 * src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.
51
52 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated.
53
54 * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
55 tt_name_entry_ascii_from_other): Renamed to...
56 (tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
57 respectively.
58 (TT_NameEntry_ConvertFunc): Renamed to...
59 (TT_Name_ConvertFunc): This.
60 (tt_face_get_name): Updated.
61
62 * src/sfnt/ttload.c (tt_face_load_name, tt_face_free_names):
63 Updated.
64
Werner Lemberg141f0ea2017-01-24 17:00:36 +0100652017-01-24 Werner Lemberg <wl@gnu.org>
66
Werner Lemberg14397122017-01-24 20:48:50 +010067 [sfnt] Fix Postscript name service for symbol fonts.
68
69 * src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
70 entries also.
71
722017-01-24 Werner Lemberg <wl@gnu.org>
73
Werner Lemberg141f0ea2017-01-24 17:00:36 +010074 [truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.
75
76 * include/freetype/ftsnames.h
77 (FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
78 FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
79 (FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
80 FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.
81
82 * include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
83 TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
84 (TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
85 Deprecated.
86
87 * src/sfnt/sfobjs.c (sfnt_load_face): Updated.
88
89 * docs/CHANGES: Updated.
90
Werner Lemberg79d52b92017-01-23 07:43:56 +0100912017-01-23 Werner Lemberg <wl@gnu.org>
92
Werner Lemberg693f56f2017-01-23 12:53:18 +010093 [base] Add `FT_Set_Default_Properties' (#49187).
94
95 * include/freetype/ftmodapi.h: Add declaration.
96
97 * src/base/ftinit.c (ft_set_default_properties): Renamed to...
98 (FT_Set_Default_Properties): ... this.
99 (FT_Init_FreeType): Updated.
100
101 * docs/CHANGES: Updated.
102
1032017-01-23 Werner Lemberg <wl@gnu.org>
104
Werner Lembergf5020922017-01-23 11:47:40 +0100105 [truetype] Minor updates for OpenType 1.8.1.
106
107 * src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
Alexei Podtelezhnikov983fb0d2017-01-24 23:56:59 -0500108 removed from the specification; it is now reserved.
Werner Lembergf5020922017-01-23 11:47:40 +0100109
110 * src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
111 (GX_FVar_Head): Remove `countSizePairs'; the corresponding data
112 field in the `MVAR' table is now reserved.
113 (fvar_fields): Updated.
114
1152017-01-23 Werner Lemberg <wl@gnu.org>
116
Werner Lemberg79d52b92017-01-23 07:43:56 +0100117 [truetype] Avoid segfault for invalid variation data.
118
119 * src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
120 `itemCount' is not zero.
121
122 Reported as
123
124 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441
125
Werner Lemberg43061d62017-01-20 10:16:38 +01001262017-01-20 Werner Lemberg <wl@gnu.org>
127
128 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
129
Werner Lembergba6f3e12017-01-17 11:50:09 +01001302017-01-17 Werner Lemberg <wl@gnu.org>
131
132 * include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
133
134 (TT_APPLE_ID_FULL_UNICODE): New macro.
135
136 (TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
137 TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
138 TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
139 TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
140 TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
141 TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
142 TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
143 TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
144 TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
145 TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
146 TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
147 macros.
148
149 (TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
150
151 (TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
152 TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
153 TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
154 TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
155 TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
156 TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
157 TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
158 TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
159 TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
160 TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
161 TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
162 TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
163 TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
164 TT_MS_LANGID_UIGHUR_PRC): New aliases.
165
166 Remove commented out code.
167
168 (TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
169 TT_NAME_ID_VARIATIONS_PREFIX): New macros.
170
171 (HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
172 years), use guarded long macros by default and define short versions
173 as aliases for the long ones.
174
Werner Lemberg322b3be2017-01-15 13:57:25 +01001752017-01-15 Werner Lemberg <wl@gnu.org>
176
177 * src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
178 also.
179
Werner Lemberg8ab08cf2017-01-11 10:05:27 +01001802017-01-11 Werner Lemberg <wl@gnu.org>
181
Werner Lembergc5298852017-01-12 08:42:55 +0100182 * src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
183
1842017-01-11 Werner Lemberg <wl@gnu.org>
185
Werner Lemberg723aafb2017-01-11 14:21:26 +0100186 [truetype] Actually use metrics variation service.
187
188 * src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
189 (ft_face_get_mvar_service): New auxiliary function to look up
190 metrics variation service.
191 (FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
192 FT_Set_Var_Blend_Coordinates): Call metrics variation service.
193
194 * src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
195 named instances.
196
1972017-01-11 Werner Lemberg <wl@gnu.org>
198
Werner Lembergd718ac42017-01-11 14:12:34 +0100199 [truetype] Provide metrics variation service.
200
201 * include/freetype/internal/services/svmetric.h
202 (FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
203
204 * src/truetype/ttgxvar.c: Include FT_LIST_H.
205 (tt_size_reset_iterator): New auxiliary function for...
206 (tt_apply_var): New function.
207
208 * src/truetype/ttgxvar.h: Updated.
209
210 * src/truetype/ttdriver.c (tt_service_metrics_variations): Add
211 `tt_apply_mvar'.
212
213 * include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
214 variation service.
215
2162017-01-11 Werner Lemberg <wl@gnu.org>
217
Werner Lemberg07ee1d22017-01-11 12:50:51 +0100218 [truetype] Parse `MVAR' table.
219
220 * src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
221 (GX_Value, GX_MVarTable): New structures.
222 (GX_Blend): Add it.
223
224 * src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
225 GX_GASP_CASE): New macros.
226 (ft_var_get_value_pointer): New auxiliary function to get a pointer
227 to a value from various SFNT tables already stored in `TT_Face'.
228 (ft_var_load_mvar): New function.
229 (TT_Get_MM_Var): Call it.
230 (tt_done_blend): Updated.
231
2322017-01-11 Werner Lemberg <wl@gnu.org>
233
Werner Lemberg8ab08cf2017-01-11 10:05:27 +0100234 [truetype] More preparations for MVAR support.
235
236 * src/truetype/ttobjs.c (tt_size_reset): Add argument to make
237 function only recompute ascender, descender, and height.
238
239 * src/truetype/ttobjs.h: Updated.
240
241 * src/truetype/ttdriver.c (tt_size_select, tt_size_request):
242 Updated.
243
Werner Lembergf837a502017-01-09 10:49:03 +01002442017-01-09 Werner Lemberg <wl@gnu.org>
245
Werner Lemberg7ccca6a2017-01-09 19:54:44 +0100246 [pcf] Disable long family names by default.
247
248 * include/freetype/config/ftoption.h
249 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
250
2512017-01-09 Werner Lemberg <wl@gnu.org>
252
Werner Lemberg08fd2502017-01-09 11:30:32 +0100253 [pcf] Make long family names configurable.
254
255 The change from 2016-09-29 was too radical (except for people using
256 the openSuSE GNU/Linux distribution). To ameliorate the situation,
257 PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
258 the feature; if set, a new PCF property option
259 `no-long-family-names' can be used to switch this feature off.
260
261 * include/freetype/config/ftoption.h, devel/ftoption.h
262 (PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
263
264 * include/freetype/ftpcfdrv.h: New header file (only containing
265 comments currently, used for building the documentation).
266
267 * include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
268
269 * src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
270
271 * src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
272 FT_PCF_DRIVER_H.
273 (pcf_property_set, pcf_property_get): New functions.
274 (pcf_service_properties): New service.
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -0500275 (pcf_services): Updated.
Werner Lemberg08fd2502017-01-09 11:30:32 +0100276 (pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
277 `no_long_family_names'.
278
279 * src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
280 and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
281
282 * docs/CHANGES: Updated.
283
2842017-01-09 Werner Lemberg <wl@gnu.org>
285
Werner Lembergf837a502017-01-09 10:49:03 +0100286 [pcf] Introduce a driver structure.
287
288 To be filled later on with something useful.
289
290 * src/pcf/pcf.h (PCF_Driver): New structure.
291
292 * src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
293 functions.
294 (pcf_driver_class): Updated.
295
Werner Lemberg6812f172017-01-08 07:33:05 +01002962017-01-08 Werner Lemberg <wl@gnu.org>
297
Werner Lemberg469ced72017-01-08 09:28:34 +0100298 [truetype] Again some GX code shuffling.
299
300 We need this later on for MVAR also.
301
302 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
303 an item store variation delta into...
304 (ft_var_get_item_delta): ...new function.
305
3062017-01-08 Werner Lemberg <wl@gnu.org>
307
Werner Lemberg6812f172017-01-08 07:33:05 +0100308 [truetype] Adjust font variation flags for MVAR.
309
310 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
311 Remove all flags related to MVAR; replace it with...
312 (TT_FACE_FLAG_VAR_MVAR): ...this new macro.
313 (TT_Face): Remove `mvar_support' field (which was still unused).
314
Werner Lemberg8b755442017-01-06 11:47:55 +01003152017-01-06 Werner Lemberg <wl@gnu.org>
316
Werner Lemberg02919132017-01-07 07:45:28 +0100317 [truetype] More GX code shuffling.
318
319 We need this later on for MVAR also.
320
321 * src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
322 variation store into...
323 (ft_var_done_item_variation_store): ...new function.
324
3252017-01-06 Werner Lemberg <wl@gnu.org>
326
Werner Lembergfb90f002017-01-06 22:23:52 +0100327 [truetype] More generalization of GX stuff.
328
329 We need this later on for MVAR also.
330
331 * src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
332 parameters for delta-set index mapping and item variation store.
333 (ft_var_load_item_variation_store): Add parameter for item variation
334 store.
335 s/hvarData/varData/.
336 Move allocation of `hvar_table' to...
337 (ft_var_load_hvar): ...this function.
338 Updated.
339
3402017-01-06 Werner Lemberg <wl@gnu.org>
341
Werner Lemberg0bd01122017-01-06 21:32:49 +0100342 [truetype] Some GX structure renames for generalization.
343
344 We need this later on for MVAR also.
345
346 * src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
347 (GX_ItemVarData): ...this.
348 (GX_HVarRegion): Renamed to...
349 (GX_VarRegion): ...this.
350 (GX_HVStore): Renamed to...
351 (GX_ItemVarStore): ...this.
352 (GX_WidthMap): Renamed to...
353 (GX_DeltaSetIdxMap): ...this.
354
355 (GX_HVarTable): Updated.
356
357 * src/truetype/ttgxvar.c: Updated.
358
3592017-01-06 Werner Lemberg <wl@gnu.org>
360
Werner Lemberg9c814702017-01-06 21:13:36 +0100361 [truetype] Code shuffling.
362
Werner Lemberg02919132017-01-07 07:45:28 +0100363 * src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
364 item variation store and delta set index mapping into...
Werner Lemberg9c814702017-01-06 21:13:36 +0100365 (ft_var_load_item_variation_store,
Werner Lemberg02919132017-01-07 07:45:28 +0100366 ft_var_load_delta_set_index_mapping): ...new functions.
Werner Lemberg9c814702017-01-06 21:13:36 +0100367
3682017-01-06 Werner Lemberg <wl@gnu.org>
369
Werner Lemberg7e1cce52017-01-06 20:31:22 +0100370 [truetype] Add HVAR access without advance width map.
371
372 * src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
373 `offsetToAdvanceWidthMapping' is zero.
374 (tt_hadvance_adjust): Implement direct deltaSet access by glyph
375 index.
376
3772017-01-06 Werner Lemberg <wl@gnu.org>
378
Werner Lemberg8b755442017-01-06 11:47:55 +0100379 [pcf] Revise driver.
380
381 This commit improves tracing and handling of malformed fonts. In
382 particular, the changes to `pcf_get_properties' fix
383
384 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
385
386 * src/pcf/pcfread.c (tableNames): Use long names for better
387 readability.
388 (pcf_read_TOC): Allow at most 9 tables.
389 (pcf_get_properties): Allow at most 256 properties.
390 Limit strings array length to 256 * (65536 + 1) bytes.
391 Better tracing.
392 (pcf_get_metric): Trace metric data.
393 (pcf_get_metrics): Allow at most 65536 metrics.
394 Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
395 potential overflow.
396 Better tracing.
397 (pcf_get_bitmaps): Allow at most 65536 bitmaps.
398 Better tracing.
399 (pcf_get_encodings, pcf_get_accel): Better tracing.
400
401 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
402 These are now shown by `pcf_get_bitmaps'.
403
Werner Lemberg025226a2017-01-04 07:45:44 +01004042017-01-04 Werner Lemberg <wl@gnu.org>
405
Werner Lemberga7c2f442017-01-04 13:12:03 +0100406 * src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
407
4082017-01-04 Werner Lemberg <wl@gnu.org>
409
Werner Lembergc9d47722017-01-04 10:00:49 +0100410 [cff] More consistency checks for pure CFFs.
411
412 Reported as
413
414 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
415
416 * src/cff/cffload.c (cff_font_load): Check element number and size
417 of Name and Top DICT indices.
418
4192017-01-04 Werner Lemberg <wl@gnu.org>
420
Werner Lemberg025226a2017-01-04 07:45:44 +0100421 [cff, truetype] Minor tracing improvement.
422
423 * src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
424 (tt_face_init): Indent first tracing message from SFNT driver.
425
Werner Lemberg248eaa42017-01-03 00:27:07 +01004262017-01-03 Werner Lemberg <wl@gnu.org>
427
Werner Lemberg89824052017-01-03 09:46:19 +0100428 [truetype] Various minor fixes.
429
430 * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
431 size only if we do native hinting.
432 (TT_Load_Glyph): Trace returned error code.
433
434 * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
435 returned error code.
436 (tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
437 invalid.
438
4392017-01-03 Werner Lemberg <wl@gnu.org>
440
Werner Lemberg624b6802017-01-03 09:42:41 +0100441 [sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
442
443 These tables are optional.
444
445 * src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
446
4472017-01-03 Werner Lemberg <wl@gnu.org>
448
Werner Lemberg69414e72017-01-03 06:53:13 +0100449 * src/cff/cffparse.c (cff_parse_num): Simplify.
450
4512017-01-03 Werner Lemberg <wl@gnu.org>
452
Werner Lemberg248eaa42017-01-03 00:27:07 +0100453 Various fixes for clang's undefined behaviour sanitizer.
454
455 * src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
456 (cff_blend_doBlend): Don't left-shift negative numbers.
457 Handle 5-byte numbers byte by byte to avoid alignment issues.
458
Werner Lemberg69414e72017-01-03 06:53:13 +0100459 * src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
460 byte to avoid alignment issues.
Werner Lemberg248eaa42017-01-03 00:27:07 +0100461
462 * src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
463 subrs.
464
465 * src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
466
467 * src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
468 definition of `ft_get_adobe_glyph_index'.
469
470 * src/psnames/pstables.h: Regenerated.
471
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -0500472 * src/psnames/psmodule.c: Include `pstables.h' twice to get both
Werner Lemberg248eaa42017-01-03 00:27:07 +0100473 declaration and definition.
474
475 * src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
476 casting.
477
Werner Lemberg63765a82017-01-01 10:43:41 +01004782017-01-01 Werner Lemberg <wl@gnu.org>
479
Werner Lembergbdec1622017-01-01 20:51:55 +0100480 [cff] Handle multiple `blend' operators in a row correctly.
481
482 Reported as
483
484 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
485
486 * src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
487 pointers into `subFont->blend_stack' after reallocation.
488
4892017-01-01 Werner Lemberg <wl@gnu.org>
490
Werner Lemberg63765a82017-01-01 10:43:41 +0100491 [sfnt] Return correct number of named instances for TTCs.
492
493 Without this patch, requesting information for face index N returned
494 the data for face index N+1 (or index 0).
495
496 * src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
497 for negative `face_instance_index' values.
498
Werner Lemberge9a154e2016-12-31 21:41:08 +01004992016-12-31 Werner Lemberg <wl@gnu.org>
500
Werner Lemberg24be60b2017-01-01 08:20:38 +0100501 */*: Use hex numbers for errors in tracing messages.
502
5032016-12-31 Werner Lemberg <wl@gnu.org>
504
Werner Lemberge9a154e2016-12-31 21:41:08 +0100505 [truetype] Check axis count in HVAR table.
506
507 Reported as
508
509 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
510
511 * src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
512 (ft_var_load_avar): Fix tracing message.
513
5142016-12-30 Werner Lemberg <wl@gnu.org>
Werner Lemberg069083c2016-12-30 21:16:46 +0100515
516 * Version 2.7.1 released.
517 =========================
518
519
520 Tag sources with `VER-2-7-1'.
521
522 * docs/VERSION.TXT: Add entry for version 2.7.1.
523
524 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
525 builds/windows/vc2005/index.html,
526 builds/windows/vc2008/freetype.vcproj,
527 builds/windows/vc2008/index.html,
528 builds/windows/vc2010/freetype.vcxproj,
529 builds/windows/vc2010/index.html,
530 builds/windows/visualc/freetype.dsp,
531 builds/windows/visualc/freetype.vcproj,
532 builds/windows/visualc/index.html,
533 builds/windows/visualce/freetype.dsp,
534 builds/windows/visualce/freetype.vcproj,
535 builds/windows/visualce/index.html,
536 builds/wince/vc2005-ce/freetype.vcproj,
537 builds/wince/vc2005-ce/index.html,
538 builds/wince/vc2008-ce/freetype.vcproj,
539 builds/wince/vc2008-ce/index.html: s/2.7/2.7.1/, s/27/271/.
540
541 * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
542
543 * builds/unix/configure.raw (version_info): Set to 19:0:13.
544 * CMakeLists.txt (VERSION_PATCH): Set to 1.
545
Werner Lemberg6b21d122016-12-30 10:00:54 +01005462016-12-30 Werner Lemberg <wl@gnu.org>
547
Werner Lemberg8fb9d222016-12-30 19:51:37 +0100548 [ftfuzzer] Replace `rand' with an xorshift algorithm.
549
550 * src/tools/ftfuzzer/ftfuzzer.cc: Don't include `stdlib.h'.
551 (Random): Implement and use a 32bit `xorshift' algorithm.
552
5532016-12-30 Werner Lemberg <wl@gnu.org>
554
Werner Lemberg6b21d122016-12-30 10:00:54 +0100555 [ftfuzzer] Restrict number of tested bitmap strikes.
556
557 Malformed fonts often have large values for the number of bitmap
558 strikes, and FreeType doesn't check the validity of all bitmap
559 strikes in advance.
560
561 Reported as
562
563 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=353
564
565 * src/tools/ftfuzzer/ftfuzzer.cc: Include `stdlib.h' for `rand'.
566 (Random): Small class to provide n randomly selected numbers
Alexei Podtelezhnikovca472222017-01-17 23:45:08 -0500567 (without repetition) out of the value set [1,N].
Werner Lemberg6b21d122016-12-30 10:00:54 +0100568 (LLVMFuzzerTestOneInput): Use it to test only up to 10 bitmap
569 strikes.
570
Werner Lemberg346b1412016-12-29 06:03:40 +01005712016-12-29 Werner Lemberg <wl@gnu.org>
572
Werner Lemberg7591bf12016-12-29 21:39:06 +0100573 [truetype] Variation font API stability issues.
574
575 Make some functions work before a call to `TT_Set_MM_Blend'.
576
577 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Exit immediately if
578 we don't blend.
579 (TT_Get_MM_Blend, TT_Get_Var_Design): Return default values if we
580 don't blend.
581
5822016-12-29 Werner Lemberg <wl@gnu.org>
583
Werner Lemberg91fc3bd2016-12-29 21:34:46 +0100584 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Check axis data.
585
586 Reported as
587
588 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=348
589
5902016-12-29 Werner Lemberg <wl@gnu.org>
591
Werner Lemberg18018512016-12-29 21:30:06 +0100592 [truetype] Tracing fixes.
593
594 * src/truetype/ttgxvar.c (tt_hadvance_adjust): Emit correct
595 information.
596 (TT_Set_Var_Design): Fix typo.
597 (TT_Get_Var_Design): Fix typos.
598
5992016-12-29 Werner Lemberg <wl@gnu.org>
600
Werner Lemberg84b0d992016-12-29 10:38:51 +0100601 */*: Use `0.5f' for tracing 16.16 numbers.
602
6032016-12-29 Werner Lemberg <wl@gnu.org>
604
Werner Lemberg346b1412016-12-29 06:03:40 +0100605 [pcf] Protect against gzip bombs.
606
607 Fix suggested by Kostya; reported as
608
609 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=345
610
611 * src/pcf/pcfread.c (pcf_read_TOC): Limit number of TOC entries to
612 1024.
613
Werner Lembergc4cd34a2016-12-28 08:33:35 +01006142016-12-28 Werner Lemberg <wl@gnu.org>
615
Werner Lemberg6fb549d2016-12-28 22:23:33 +0100616 [psnames] Only declare, not define, data in `pstables.h' (#49949).
617
618 Pdfium includes `pstables.h' a second time; moving the definition
619 from `pstables.h' to `psmodule.c' saves more than 60kByte data
620 segment space for this case.
621
622 * src/tools/glnames.py (StringTable::dump,
623 StringTable::dump_sublist, dump_encoding, dump_array): Emit
624 additional code to only define tables if `DEFINE_PS_TABLES' is set.
625
626 * src/psnames/pstables.h: Regenerated.
627 * src/psnames/psmodule.c (DEFINE_PS_TABLES): Define.
628
6292016-12-28 Werner Lemberg <wl@gnu.org>
630
Werner Lembergc4a1ef32016-12-28 21:22:45 +0100631 [cff] Catch `blend' op in non-variant fonts.
632
633 Reported as
634
635 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=334
636
637 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>: Don't
638 allow `blend' op for non-variant fonts.
639
6402016-12-28 Werner Lemberg <wl@gnu.org>
641
Werner Lembergc4cd34a2016-12-28 08:33:35 +0100642 [cff] Better check of number of blends.
643
644 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdBLEND>,
645 src/cff/cffparse.c (cff_parse_blend): Compare number of blends with
646 stack size.
647
Werner Lemberge5e35562016-12-27 06:49:37 +01006482016-12-27 Werner Lemberg <wl@gnu.org>
649
Werner Lemberg48fd5bb2016-12-27 10:20:23 +0100650 Documentation updates.
651
652 * docs/CHANGES: Add missing information.
653
654 * docs/formats.txt: Rewritten and updated.
655
6562016-12-27 Werner Lemberg <wl@gnu.org>
657
Werner Lemberge5e35562016-12-27 06:49:37 +0100658 [truetype, type1] Implement `FT_Get_Var_Design_Coordinates'.
659
660 * src/truetype/ttgxvar.c (TT_Get_Var_Design): Implement.
661 (TT_Set_Var_Design): Fix tracing.
662
663 * src/type1/t1load.c (T1_Get_Var_Design): Implement.
664
Werner Lemberg1fecdfe2016-12-24 07:50:45 +01006652016-12-24 Werner Lemberg <wl@gnu.org>
666
Werner Lemberga300c1c2016-12-24 09:27:15 +0100667 * src/truetype/ttpload.c (tt_face_load_hdmx): Ignore `version'.
668
669 Problem reported by 張俊芝 <418092625@qq.com>.
670
6712016-12-24 Werner Lemberg <wl@gnu.org>
672
Werner Lembergd1db57c2016-12-24 09:05:16 +0100673 * src/sfnt/ttsbit.c (tt_face_load_sbit): Allow more version values.
674
675 Some fonts seem to have the `version' field in the wrong byte order.
676
677 Problem reported by 張俊芝 <418092625@qq.com>.
678
6792016-12-24 Werner Lemberg <wl@gnu.org>
680
Werner Lembergfde0b782016-12-24 08:17:19 +0100681 * src/truetype/ttpload.c (tt_face_load_loca): Sanitize table length.
682
683 This trivial fix allows us to accept more fonts.
684
685 Problem reported by 張俊芝 <418092625@qq.com>.
686
6872016-12-24 Werner Lemberg <wl@gnu.org>
688
Werner Lemberg1fecdfe2016-12-24 07:50:45 +0100689 * src/sfnt/sfobjs.c (sfnt_init_face): Fix tracing.
690
Werner Lembergada82972016-12-22 08:25:42 +01006912016-12-22 Werner Lemberg <wl@gnu.org>
692
Werner Lemberg18bd1762016-12-22 12:24:23 +0100693 * CMakeLists.txt: Make it work with cmake 2.8.11.2 (#49909).
694
6952016-12-22 Werner Lemberg <wl@gnu.org>
696
Werner Lemberg06d61b42016-12-22 10:43:46 +0100697 Ensure used preprocessor symbols are defined (#49790).
698
699 * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
700 include/freetype/config/ftconfig.h: Check `__GNUC__', `__IBMC__',
701 and `__SUNPRO_C' correctly.
702
7032016-12-22 Werner Lemberg <wl@gnu.org>
704
Werner Lemberg7f733392016-12-22 10:12:17 +0100705 * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Check `count'.
706
707 Reported as
708
709 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=308
710
7112016-12-22 Werner Lemberg <wl@gnu.org>
712
Werner Lembergb44e6c22016-12-22 08:30:15 +0100713 [cff] Protect against invalid `vsindex' and `blend' values.
714
715 Reported as
716
717 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=305
718
719 * src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVSINDEX,
720 cf2_cmdBLEND>: Implement it.
721
7222016-12-22 Werner Lemberg <wl@gnu.org>
723
Werner Lembergada82972016-12-22 08:25:42 +0100724 [ftfuzzer] Always use Adobe CFF engine.
725
726 * src/tools/ftfuzzer/ftfuzzer.cc (FT_Global::FT_Global): Implement
727 it.
728
Werner Lemberg57a67332016-12-21 06:52:23 +01007292016-12-21 Werner Lemberg <wl@gnu.org>
730
Werner Lembergd44daf92016-12-21 23:03:48 +0100731 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
732
Werner Lemberg72091102016-12-21 23:46:29 +0100733 I should really stop coding late in the evening...
734
735 Thanks again to Ben for checking.
736
7372016-12-21 Werner Lemberg <wl@gnu.org>
738
Werner Lemberg8d37efb2016-12-22 20:48:28 +0100739 [autofit] Support variation fonts.
740
741 (This ChangeLog entry was added later on.)
742
743 * src/autofit/afglobal.c (af_face_globals_free): Remove useless
744 code.
745
746 * src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
747 * FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
748 FT_Set_Var_Blend_Coordinates): Finalize
749 auto-hinter data to enforce recomputation. Note that this is a
750 brute-force method which should be improved.
751
7522016-12-21 Werner Lemberg <wl@gnu.org>
753
Werner Lemberg72091102016-12-21 23:46:29 +0100754 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Thinko.
755
Werner Lembergd44daf92016-12-21 23:03:48 +0100756 Don't apply deltas twice for non-phantom points.
757
758 Spotted by Ben Wagner.
759
7602016-12-21 Werner Lemberg <wl@gnu.org>
761
Werner Lemberge6a429e2016-12-21 20:27:48 +0100762 [cff, truetype] Another try for #49829.
763
764 * src/cff/cffdrivr.c: Don't include
765 `FT_SERVICE_METRICS_VARIATIONS_H'.
766 (cff_get_advances): Use `ttface->variation_support'.
767
768 * src/truetype/ttdriver.c (tt_get_advances): Use
769 `ttface->variation_support'.
770
771 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
772 load_truetype_glyph): Use `ttface->variation_support'.
773
7742016-12-21 Werner Lemberg <wl@gnu.org>
775
Werner Lemberg64a91132016-12-21 19:30:33 +0100776 [truetype, sfnt] Introduce font variation flags to `TT_Face'.
777
778 * include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
779 New macros describing available functionality of various OpenType
780 tables related to font variation.
781 (TT_Face): New fields `variation_support' and `mvar_support',
782 replacing and extending `use_fvar'.
783
784 * src/sfnt/sfobjs.c (sfnt_init_face, sfnt_load_face): Use
785 `variation_support'.
786
787 * src/truetype/ttgxvar.c (ft_var_load_hvar): Set `variation_support'
788 field.
789 (TT_Vary_Apply_Glyph_Deltas): Updated.
790
7912016-12-21 Werner Lemberg <wl@gnu.org>
792
Werner Lemberg57a67332016-12-21 06:52:23 +0100793 [base] Improve sanity check for Mac resources (#49888).
794
795 * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Abort if `rlen' is not
796 positive.
797
Werner Lemberg70704b32016-12-20 12:27:22 +01007982016-12-20 Werner Lemberg <wl@gnu.org>
799
Werner Lembergded4bdb2016-12-20 23:26:38 +0100800 [base] More sanity checks for Mac resources.
801
802 We use
803
804 https://github.com/kreativekorp/ksfl/wiki/Macintosh-Resource-File-Format
805
806 and
807
808 https://developer.apple.com/legacy/library/documentation/mac/pdf/MoreMacintoshToolbox.pdf#page=151
809
810 as references.
811
812 * include/freetype/internal/ftrfork.h (FT_RFork_Ref): Use FT_Short
813 for `res_id'.
814
815 * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Extract map length
816 and use it to improve sanity checks.
817 Follow the specification more closely;in particular, all data types
818 are signed, not unsigned.
819 (FT_Raccess_Get_DataOffsets): Follow the specification more closely;
820 in particular, all data types are signed, not unsigned.
821 Add some sanity checks.
822
8232016-12-20 Werner Lemberg <wl@gnu.org>
824
Werner Lemberg70704b32016-12-20 12:27:22 +0100825 [truetype] Improve logic for getting fast advance widths.
826
827 * src/cff/cffdrivr.c (cff_get_advances), src/truetype/ttdriver.c
828 (tt_get_advances): Use `is_default_instance' for test; this gets
829 recomputed after changing blend coordinates.
830
Ben Wagnercc576f82016-12-20 11:37:42 +01008312016-12-20 Ben Wagner <bungeman@google.com>
832 Werner Lemberg <wl@gnu.org>
833
Werner Lembergd678b372016-12-20 12:45:31 +0100834 [truetype] Fix linear metrics of GX variation fonts (#49829).
Ben Wagnercc576f82016-12-20 11:37:42 +0100835
836 When asking for an unhinted non-default variations,
837 `linearVertAdvance' is currently the value from the `hmtx' table
838 instead of the actual value after applying the variation. `HVAR'
839 support fixes this, but fonts will exist without that table and will
840 need sane fallback.
841
Werner Lembergd678b372016-12-20 12:45:31 +0100842 Problem also reported as
Werner Lemberg59b0b3a2016-12-20 11:39:52 +0100843
844 https://bugs.chromium.org/p/skia/issues/detail?id=5917
845
Ben Wagnercc576f82016-12-20 11:37:42 +0100846 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
847 load_truetype_glyph): Implement linear advance adjustments if `HVAR'
848 or `VVAR' tables are missing.
849
Werner Lemberga1e85f12016-12-20 10:52:26 +01008502016-12-20 Werner Lemberg <wl@gnu.org>
851
852 [cff, truetype] Fast advance width retrieval for fonts with HVAR.
853
854 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
855
856 * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Don't handle MM.
857
858 * src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
859 (cff_get_advances): Test for HVAR and VVAR.
860
861 * src/truetype/ttdriver.c (tt_get_advances): Test for HVAR and VVAR.
862
Werner Lemberg8f633a02016-12-18 06:42:31 +01008632016-12-18 Werner Lemberg <wl@gnu.org>
864
Werner Lemberg5743df72016-12-18 21:01:03 +0100865 [base] Fix invalid mac font recursion.
866
867 Reported as
868
869 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=304
870
871 * src/base/ftobjs.c (FT_Open_Face): Code moved to...
872 (ft_open_face_internal): ... this function.
873 Add a parameter to control whether we try special Mac font handling
874 in case of failure.
875 (FT_Open_Face, FT_New_Face, FT_New_Memory_Face,
876 open_face_from_buffer): Use `ft_open_face_internal'.
877
8782016-12-18 Werner Lemberg <wl@gnu.org>
879
Werner Lembergca3d4012016-12-18 18:23:19 +0100880 * src/cff/cffobjs.c (cff_face_init): Make named instances work.
881
8822016-12-18 Werner Lemberg <wl@gnu.org>
883
Werner Lemberga8652c52016-12-18 18:12:03 +0100884 [truetype, cff] Extend `get_var_blend' function of MM service.
885
886 In particular, we need access to named instance data.
887
888 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
889 Add argument for `FT_MM_Var'.
890
891 * src/cff/cffload.c (cff_get_var_blend): Updated.
892 * src/cff/cffload.h: Updated.
893
894 * src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
895
896 * src/truetype/ttgxvar.c (tt_get_var_blend): Updated.
897 Accept value `NULL' for arguments.
898 * src/truetype/ttgxvar.h: Updated.
899
9002016-12-18 Werner Lemberg <wl@gnu.org>
901
Werner Lemberg25f3ac22016-12-18 15:50:18 +0100902 [sfnt] Handle `fvar' with zero axes as a non-MM font.
903
904 This is better behaviour than exiting with an error.
905
906 * include/freetype/internal/tttypes.h (TT_Face): Add `use_fvar'
907 field.
908
909 * src/sfnt/sfobjs.c (sfnt_init_face): Compute `use_fvar', also
910 updating the validation code.
911 Use `use_fvar' to compute FT_FACE_FLAG_MULTIPLE_MASTERS.
912
913 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Remove `fvar' validation
914 code.
915
9162016-12-18 Werner Lemberg <wl@gnu.org>
917
Werner Lembergeb6d0202016-12-18 09:29:58 +0100918 Minor GX code shuffling.
919
920 * include/freetype/internal/tttypes.h (TT_Face): Move
921 `is_default_instance' into TT_CONFIG_OPTION_GX_VAR_SUPPORT
922 block.
923
924 * src/sfnt/sfobjs.c (sfnt_init_face): Updated.
925 * src/truetype/ttgload.c (IS_DEFAULT_INSTANCE): New macro.
926 (TT_Load_Glyph): Use it.
927
9282016-12-18 Werner Lemberg <wl@gnu.org>
929
Werner Lemberg8f633a02016-12-18 06:42:31 +0100930 [cff] Better handling of non-CFF font formats.
931
932 * src/cff/cffload.c (cff_font_load): Pure CFFs don't have a
933 signature, so return `FT_Err_Unknown_File_Format' more often.
934
Werner Lemberg50ff6c12016-12-17 07:44:46 +01009352016-12-17 Werner Lemberg <wl@gnu.org>
936
Werner Lemberg4cd68172016-12-17 22:52:50 +0100937 * src/cff/cffload.c (cff_build_blend_vector): Remove redundant code.
938
9392016-12-17 Werner Lemberg <wl@gnu.org>
940
Werner Lembergdb17ceb2016-12-17 13:39:31 +0100941 * src/truetype/ttobjs.c (tt_face_init): Simplify conditional code.
942
9432016-12-17 Werner Lemberg <wl@gnu.org>
944
Werner Lemberg7c75b162016-12-17 13:28:24 +0100945 [sfnt, truetype] Various sanitizing fixes.
946
947 * src/sfnt/sfobjs.c (sfnt_init_face): If the axis count in `fvar' is
948 zero, set `num_instances' to zero.
949
950 * src/truetype/ttgxvar.c (TT_Get_MM_Var): Handle `fvar' table with
951 zero axes as invalid.
952
953 * src/truetype/ttobjs.c (tt_face_init): Improve logic of loading
954 `loca', `cvt', `fpgm', and `prep' table.
955
9562016-12-17 Werner Lemberg <wl@gnu.org>
957
Werner Lemberg3b125e92016-12-17 10:02:19 +0100958 Improve tracing of `FT_Open_Face'.
959
960 * src/base/ftobjs.c (FT_Open_Face): Return info on number of
961 available faces and numbered instances, or the indices of the
962 requested face and numbered instance.
963
964 * src/sfnt/sfobjs. (sfnt_open_font): Trace number of subfonts.
965
9662016-12-17 Werner Lemberg <wl@gnu.org>
967
Werner Lemberg50ff6c12016-12-17 07:44:46 +0100968 * src/cff/cffload.c (cff_load_private_dict): Always init `blend'.
969
970 Reported as
971
972 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=295
973
Werner Lembergbeecf802016-12-16 08:52:03 +01009742016-12-16 Werner Lemberg <wl@gnu.org>
975
Werner Lembergdf2cf432016-12-16 11:38:20 +0100976 [truetype] Fix `cvar' sanity test.
977
978 Reported by Dave Arnold.
979
980 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Use tuple count mask.
981
9822016-12-16 Werner Lemberg <wl@gnu.org>
983
Werner Lemberg68620242016-12-16 11:15:17 +0100984 [cff, truetype] Remove compiler warnings; fix `make multi'.
985
986 * src/cff/cf2font.h: Include `cffload.h'.
987
988 * src/cff/cffload.c: Include FT_MULTIPLE_MASTERS_H and
989 FT_SERVICE_MULTIPLE_MASTERS_H.
990 (cff_vstore_load): Eliminate `vsSize'.
991 (cff_load_private_dict): Tag as `FT_LOCAL_DEF'.
992
993 * src/cff/cffload.h: Include `cffobjs.h'.
994 Provide declaration for `cff_load_private_dict'.
995
996 * src/truetype/ttgxvar.c (ft_var_load_hvar): Eliminate
997 `minorVersion' and `map_offset'.
998
9992016-12-16 Werner Lemberg <wl@gnu.org>
1000
Werner Lembergbeecf802016-12-16 08:52:03 +01001001 [cff] Fix heap buffer overflow (#49858).
1002
1003 * src/cff/cffparse.c (cff_parser_run): Add one more stack size
1004 check.
1005
Werner Lemberg01658be2016-12-15 23:10:59 +010010062016-12-15 Werner Lemberg <wl@gnu.org>
1007
1008 Fix clang warnings.
1009
1010 * src/cff/cffload.c (cff_blend_doBlend): Add cast.
1011 (cff_subfont_load): Set `error' correctly.
1012
1013 * src/sfnt/ttmtx.c (tt_face_get_metrics): Typo.
1014
Dave Arnold9f62d2c2016-12-15 20:27:47 +010010152016-12-15 Dave Arnold <darnold@adobe.com>
1016 Werner Lemberg <wl@gnu.org>
1017
Dave Arnoldedf40142016-12-15 21:56:44 +01001018 [cff] Implement CFF2 support (2/2).
1019
1020 The font variation code. All parts dependent on the GX code in the
1021 `truetype' module are guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1022 In other words, you can still compile the `cff' module without
1023 defining TT_CONFIG_OPTION_GX_VAR_SUPPORT (which brings you CFF2
1024 support without font variation).
1025
1026 * src/cff/cf2font.c (cf2_font_setup): Add support for font
1027 variation.
1028 * src/cff/cf2font.h (CF2_Font): Add fields for variation data.
1029
1030 * src/cff/cf2ft.c (cf2_free_instance): Free blend data.
1031 (cf2_getVStore, cf2_getNormalizedVector): New functions.
1032 * src/cff/cf2ft.h: Updated.
1033
1034 * src/cff/cf2intrp.c: Include `cffload.h'.
1035 (cf2_cmdRESERVED_15, cf2_cmdRESERVED_16): Replace with...
1036 (cf2_cmdVSINDEX, cf2_cmdBLEND): ... this new enum values.
1037 (cf2_doBlend): New function.
1038 (cf2_interpT2CharString): Handle `vsindex' and `blend' opcodes.
1039
1040 * src/cff/cffload.c (FT_fdot14ToFixed): New macro.
1041 (cff_vstore_done, cff_vstore_load): New functions.
1042 (cff_blend_clear, cff_blend_doBlend, cff_blend_build_vector,
1043 cff_blend_check_vector): New functions.
1044 (cff_load_private_dict): Add arguments for blend vector.
1045 Handle blend data.
1046 (cff_subfont_load, cff_subfont_done): Updated.
1047 (cff_font_load): Handle CFF2 variation store data.
1048 (cff_font_done): Updated.
1049 * src/cff/cffload.h: Include `cffparse.h'.
1050 Updated.
1051
1052 * src/cff/cffobjs.c (cff_face_done): Updated.
1053
1054 * src/cff/cffparse.c: Include `cffload.h'.
1055 (cff_parse_num): Handle internal value 255.
1056 (cff_parse_vsindex, cff_parse_blend): New functions.
1057 (CFF_FIELD_BLEND): New macro.
1058 (cff_parser_run): Updated.
1059 * src/cff/cffparse.h (cff_kind_blend): New enum value.
1060
1061 * src/cff/cfftoken.h: Handle `vstore', `vsindex', and `blend'
1062 dictionary values.
1063
1064 * src/cff/cfftypes.h (CFF_VarData, CFF_AxisCoords, CFF_VarRegion,
1065 CFF_VStore, CFF_Blend): New structures.
1066 (CFF_FontRecDict): Add `vstore_offset' field.
1067 (CFF_Private): Add `vsindex' field.
1068 (CFF_SubFont): Add fields for blend data.
1069 (CFF_Font): Add `vstore' field.
1070
1071 * src/truetype/ttgxvar.c (TT_Get_MM_Var): `CFF2' is equal to `gvar',
1072 since glyph variation data is directly embedded.
1073 (TT_Set_MM_Blend): Don't load `gvar' table for CFF2 fonts.
1074
10752016-12-15 Dave Arnold <darnold@adobe.com>
1076 Werner Lemberg <wl@gnu.org>
1077
Dave Arnold9f62d2c2016-12-15 20:27:47 +01001078 [cff] Implement CFF2 support (1/2).
1079
1080 This commit does not contain the blend code for font variation
1081 support, which follows in another commit.
1082
1083 You should ignore whitespace while inspecting this commit.
1084
1085 * include/freetype/internal/tttypes.h (TT_Face): Add `isCFF2'
1086 member.
1087
1088 * src/cff/cf2font.h (CF2_Font): Add `isCFF2' member.
1089
1090 * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Handle `isCFF2'
1091 flag.
1092 (cf2_getMaxstack): New function.
1093 * src/cff/cf2ft.h: Updated.
1094
1095 * src/cff/cf2intrp.c (cf2_escRESERVED_38): New enum.
1096 (cf2_interpT2CharString): Handle CFF2 differences.
1097 Add tracing message for errors.
1098
1099 * src/cff/cffdrivr.c (cff_get_glyph_name, cff_get_name_index):
1100 Update for CFF2.
1101
1102 * src/cff/cffload.c (FT_FIXED_ONE): New macro.
1103 (cff_index_init, cff_index_load_offsets, cff_index_access_element,
1104 cff_index_get_name, cff_ft_select_get, cff_load_private_dict,
1105 cff_subfont_load, cff_font_load): Handle CFF2.
1106 * src/cff/cffload.h: Updated.
1107
1108 * src/cff/cffobjs.c (cff_face_init): Handle CFF2.
1109
1110 * src/cff/cffparse.c (cff_parse_maxstack): New function.
1111 (CFFCODE_TOPDICT, CFFCODE_PRIVATE): Removed
1112 * src/cff/cffparse.h (CFF2_MAX_STACK, CFF2_DEFAULT_STACK): New
1113 macros.
1114 (CFF2_CODE_TOPDICT, CFF2_CODE_FONTDICT, CFF2_CODE_PRIVATE): New
1115 macros.
1116
1117 * src/cff/cfftoken.h: Add fields for CFF2 dictionaries (but no blend
1118 stuff).
1119
1120 * src/cff/cfftypes.h (CFF_Index): Add `hdr_size' field.
1121 (CFF_FontRecDict): Add `maxstack' field.
1122 (CFF_Private): Add `subfont' field.
1123 (CFF_Font): Add `top_dict_length' and `cff2' fields.
1124
1125 * src/sfnt/sfobjs.c (sfnt_load_face): Handle `CFF2' table.
1126
Werner Lemberg3bd79cc2016-12-15 14:34:57 +010011272016-12-15 Werner Lemberg <wl@gnu.org>
1128 Dave Arnold <darnold@adobe.com>
1129
1130 [truetype] Provide HVAR advance width variation as a service.
1131
1132 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1133
1134 * src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
1135
1136 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Prevent
1137 double adjustment of advance width.
1138
1139 * src/sfnt/ttmtx.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1140 (tt_face_get_metrics): Apply metrics variations.
1141
Dave Arnold41533b92016-12-15 00:00:45 +010011422016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold097cd872016-12-15 12:58:26 +01001143 Werner Lemberg <wl@gnu.org>
1144
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01001145 [truetype] Provide function to apply `HVAR' advance width variation.
1146
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01001147 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1148
Dave Arnoldaa0c4b42016-12-15 14:04:51 +01001149 * src/truetype/ttgxvar.c (tt_hadvance_adjust): New function.
1150 * src/truetype/ttgxvar.h: Updated.
1151
11522016-12-15 Dave Arnold <darnold@adobe.com>
1153 Werner Lemberg <wl@gnu.org>
1154
Dave Arnold097cd872016-12-15 12:58:26 +01001155 [truetype] Add `HVAR' table parsing.
1156
1157 Note that this is not complete yet; it only handles advance width
1158 variation.
1159
1160 Activation of the code follows in another commit.
1161
Werner Lemberg3bd79cc2016-12-15 14:34:57 +01001162 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1163
Dave Arnold097cd872016-12-15 12:58:26 +01001164 * include/freetype/ftmm.h (FT_Var_Named_Style): Add `psid' member.
1165
1166 * src/truetype/ttgxvar.h (GX_HVarData, GX_AxisCoords, GX_HVarRegion,
1167 GX_HVStore, GX_WidthMap): New auxiliary structures for...
1168 (GX_HVarTable): ... HVAR main structure.
1169 (GX_BlendRec): Add data for HVAR loading.
1170
1171 * src/truetype/ttgxvar.c (FT_FIXED_ONE, FT_fdot14ToFixed,
1172 FT_intToFixed, FT_fixedToInt): New macros.
1173 (ft_var_load_hvar): New function.
1174 (TT_Get_MM_Var): Updated.
1175 (tt_done_blend): Deallocate HVAR data.
1176
11772016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold010e0612016-12-15 11:22:15 +01001178
Dave Arnoldabd58582016-12-15 12:17:22 +01001179 [cff] Extend number parsing.
1180
1181 The forthcoming CFF2 support needs a dynamic parsing limit.
1182
1183 * src/cff/cffparse.c (cff_parse_num, do_fixed, cff_parse_fixed,
1184 cff_parse_fixed_scaled, cff_parse_fixed_dynamic): Add argument for
1185 parser.
1186 (cff_parse_font_matrix, cff_parse_font_bbox, cff_parse_private_dict,
1187 cff_parse_multiple_master, cff_parse_cid_ros, cff_parser_run): Updated.
1188
1189 * src/cff/cffparse.h (cff_parse_num): Export locally.
1190
11912016-12-15 Dave Arnold <darnold@adobe.com>
1192
Dave Arnold010e0612016-12-15 11:22:15 +01001193 [cff] Implement dynamic stack size for Adobe engine.
1194
1195 This also adds `cf2_stack_setReal' and `cf2_stack_pop', needed for
1196 the forthcoming CFF2 support.
1197
1198 * src/cff/cf2stack.c (cf2_stack_init): Add argument for stack size.
1199 (cf2_stack_free): Deallocate stack.
1200 (cf2_stack_count, cf2_stack_pushInt, cf2_stack_pushFixed,
1201 cf2_stack_popInt, cf2_stack_popFixed, cf2_stack_getReal,
1202 cf2_stack_clear): Updated.
1203 (cf2_stack_setReal, cf2_stack_pop): New functions.
1204
1205 * src/cff/cf2stack.h (CF2_Stack): Add `stackSize' member.
1206 Update function declarations.
1207
1208 * src/cff/cf2intrp.c (cf2_interpT2CharString): Updated.
1209
1210 * src/cff/cffparse.c (cff_parser_init): Add parameter for stack
1211 size; return error code.
1212 (cff_parser_done): New function.
1213 (cff_parser_run): Updated.
1214
1215 * src/cff/cffparse.h (CFF_Parser): Add `stackSize' member and make
1216 `stack' a pointer.
1217 Update function declarations.
1218
1219 * src/cff/cffload.c (cff_load_private_dict, cff_subfont_load):
1220 Updated.
1221
12222016-12-15 Dave Arnold <darnold@adobe.com>
Dave Arnold41533b92016-12-15 00:00:45 +01001223 Werner Lemberg <wl@gnu.org>
1224
1225 [cff] Code shuffling.
1226
1227 * src/cff/cfftypes.h (CFF_Font): Add `library' and `base_offset'
1228 fields.
1229
1230 * src/cff/cffload.c (cff_subfont_load): Change last argument to
1231 `CFF_Font'
1232 Split off parsing of private dictionary into...
1233 (cff_load_private_dict): ...this new function.
1234 (cff_font_load): Updated.
1235
Werner Lembergab22b432016-12-14 18:34:55 +010012362016-12-14 Werner Lemberg <wl@gnu.org>
1237
Werner Lemberg09183252016-12-14 20:44:11 +01001238 [sfnt, truetype] Add framework for Metrics Variations service.
1239
1240 No effect yet; service functions will be implemented later on.
1241
1242 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1243
1244 * include/freetype/internal/services/svmetric.h: New file.
1245
1246 * include/freetype/internal/ftserv.h
1247 (FT_SERVICE_METRICS_VARIATIONS_H): New macro.
1248
1249 * include/freetype/internal/tttypes.h (TT_Face): New field `var'.
1250
1251 * src/sfnt/sfobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1252 (sfnt_init_face): Initialize `face->var'.
1253
1254 * src/truetype/ttdriver.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
1255 (tt_service_metrics_variations): New service.
1256 (tt_services): Updated.
1257
1258 * src/truetype/ttpic.h: Updated.
1259
12602016-12-14 Werner Lemberg <wl@gnu.org>
1261
Werner Lembergc628a7d2016-12-14 19:31:42 +01001262 [cff] Add Multiple Masters service.
1263
1264 The code simply uses the MM functions from the `truetype' module.
1265
1266 Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1267
1268 * include/freetype/internal/tttypes.h (TT_Face): New field `mm'.
1269
1270 * src/cff/cffdrivr.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
1271 (cff_set_mm_blend, cff_get_mm_blend, cff_get_mm_var,
1272 cff_set_var_design, cff_get_var_design): New functions.
1273 (cff_service_multi_masters): New service.
1274 (cff_services): Updated.
1275
1276 * src/cff/cffload.c (cff_get_var_blend, cff_done_blend): New
1277 functions.
1278 * src/cff/cffload.h: Updated.
1279
1280 * src/cff/cffpic.h (CFF_SERVICE_MULTI_MASTERS_GET): New macro.
1281
1282 * src/sfnt/sfobjs.c: Include FT_SERVICE_MULTIPLE_MASTERS_H.
1283 (sfnt_init_face): Initialize `face->mm'.
1284
12852016-12-14 Werner Lemberg <wl@gnu.org>
1286
Werner Lemberga7dc0c32016-12-14 18:54:21 +01001287 Extend functionality of `ft_module_get_service'.
1288
1289 It can now differentiate between local and global searches.
1290
1291 * src/base/ftobjs.c (ft_module_get_service): Add `global' argument.
1292 (FT_Get_TrueType_Engine_Type): Updated.
1293
1294 * src/cff/cffdrivr.c (cff_get_ps_name, cff_get_cmap_info): Updated.
1295
1296 * include/freetype/internal/ftobjs.h: Updated.
1297 * include/freetype/internal/ftserv.h (FT_FACE_FIND_GLOBAL_SERVICE):
1298 Updated.
1299
13002016-12-14 Werner Lemberg <wl@gnu.org>
1301
Werner Lembergab22b432016-12-14 18:34:55 +01001302 * src/truetype/ttgxvar.c (tt_get_var_blend): Fix compiler warning.
1303
Werner Lemberg4e075162016-12-14 18:25:44 +010013042016-12-14 Dave Arnold <darnold@adobe.com>
1305 Werner Lemberg <wl@gnu.org>
1306
1307 [sfnt, cff] Minor preparations.
1308
1309 * include/freetype/tttags.h (TTAG_CFF2, TTAG_HVAR, TTAG_MVAR,
1310 TTAG_VVAR): New SFNT table tags.
1311
1312 * src/cff/cf2fixed.h (CF2_FIXED_ONE, CF2_FIXED_EPSILON): Add cast.
1313
Werner Lemberg27bdb362016-12-10 09:56:03 +010013142016-12-10 Werner Lemberg <wl@gnu.org>
1315
Werner Lemberg8b174b42016-12-11 09:16:52 +01001316 [truetype, type1] Add `get_var_blend' to MM service.
1317
1318 For internal use; we want to share code between the forthcoming CFF2
1319 support and TrueType.
1320
1321 * include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
1322 New typedef.
1323 (MultiMasters): Add `get_var_blend'.
1324 (FT_Service_MultiMasters): Updated.
1325
1326 * src/truetype/ttgxvar.c (tt_get_var_blend): New function.
1327 * src/truetype/ttgxvar.h: Updated.
1328
1329 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
1330 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
1331
13322016-12-10 Werner Lemberg <wl@gnu.org>
1333
Werner Lemberg27bdb362016-12-10 09:56:03 +01001334 [truetype, type1] Add `done_blend' to MM service.
1335
1336 For internal use; we want to share code between the forthcoming CFF2
1337 support and TrueType.
1338
1339 * include/freetype/internal/services/svmm.h (FT_Done_Blend_Func):
1340 New typedef.
1341 (MultiMasters): Add `done_blend'.
1342 (FT_Service_MultiMasters): Updated.
1343
1344 * src/truetype/ttgxvar.c (tt_done_blend): Use `TT_Face' as argument.
1345 * src/truetype/ttgxvar.h: Updated.
1346
1347 * src/truetype/ttobjs.c (TT_Face_Done): Updated.
1348
1349 * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Updated.
1350 * src/type1/t1driver.c (t1_service_multi_masters): Updated.
1351
Werner Lemberg3205a442016-12-09 06:55:34 +010013522016-12-09 Werner Lemberg <wl@gnu.org>
1353
1354 [sfnt] Revert change from 2016-12-08.
1355
1356 I missed the functionality of `ft_module_get_service', which makes
1357 the change unnecessary.
1358
Werner Lemberg29aa9572016-12-08 08:59:34 +010013592016-12-08 Werner Lemberg <wl@gnu.org>
1360
Werner Lemberg4191b772016-12-08 22:33:46 +01001361 Add framework to support services with 8 functions.
1362
1363 We will need this for CFF variation font support.
1364
1365 * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC8):
1366 New macro.
1367
13682016-12-08 Werner Lemberg <wl@gnu.org>
1369
Werner Lemberg29aa9572016-12-08 08:59:34 +01001370 [sfnt] Add `get_glyph_name' and `get_name_index' to SFNT interface.
1371
1372 CFF2 fonts will need access to those two functions.
1373
1374 * include/freetype/internal/sfnt.h: Include FT_SERVICE_GLYPH_DICT_H.
1375 (SFNT_Interface): Add `get_glyph_name' and `get_name_index' members.
1376 (FT_DEFINE_SFNT_INTERFACE): Updated.
1377
1378 * src/sfnt/sfdriver.c (sfnt_get_glyph_name, sfnt_get_name_index):
1379 Fix signatures to exactly correspond to the glyph dict service
1380 function typedefs.
1381 (sfnt_interface): Updated.
1382
Dave Arnoldbcae6572016-12-05 22:08:15 +010013832016-12-06 Dave Arnold <darnold@adobe.com>
1384
1385 Add `FT_Get_Var_Design_Coordinates' function.
1386
1387 Note that the low-level functions aren't implemented yet.
1388
1389 * include/freetype/ftmm.h: Declare.
1390
1391 * include/freetype/internal/services/svmm.h
1392 (FT_Get_Var_Design_Func): New typedef.
1393 (MultiMasters): New MM service function `get_var_design'.
1394 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
1395 Update all callers.
1396
1397 * src/base/ftmm.c (FT_Get_Var_Design_Coordinates): Implement.
1398
1399 * src/truetype/ttdriver.c: Updated.
1400
1401 * src/truetype/ttgxvar.c (TT_Get_Var_Design): New dummy function to
1402 handle `get_var_design' service.
1403 * src/truetype/ttgxvar.h: Updated.
1404
1405 * src/type1/t1driver.c: Updated.
1406
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05001407 * src/type1/t1load.c (T1_Get_Var_Design): New dump function to
Dave Arnoldbcae6572016-12-05 22:08:15 +01001408 handle `get_var_design' service.
1409 * src/type1/t1load.h: Updated.
1410
Werner Lembergc0fae7d2016-12-06 11:13:19 +010014112016-12-06 Werner Lemberg <wl@gnu.org>
1412
1413 * src/type1/t1load.c (parse_subrs): Fix memory leak.
1414
1415 The `subrs' keyword might erroneously occur multiple times.
1416
1417 Reported as
1418
1419 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=231
1420
Werner Lemberg602be7c2016-12-01 11:36:37 +010014212016-12-01 Werner Lemberg <wl@gnu.org>
1422
1423 [gzip] Improve building with external zlib (#49673).
1424
1425 Building FreeType with external zlib 1.2.8 makes msvc 14 stop with
1426 the following error.
1427
1428 ftgzip.c
1429 zlib-1.2.8\zlib.h(86): error C2061:
1430 syntax error: identifier 'z_const'
1431 zlib-1.2.8\zlib.h(94): error C2054:
1432 expected '(' to follow 'z_const'
1433 zlib-1.2.8\zlib.h(94): error C2085:
1434 'msg': not in formal parameter list
1435 ...
1436 zlib-1.2.8\zlib.h(877): fatal error C1003:
1437 error count exceeds 100; stopping compilation
1438
1439 The error happens because FreeType keeps an own copy of zlib-1.1.4
1440 under `src/gzip'. When building `src/gzip/ftgzip.c' with
1441 FT_CONFIG_OPTION_SYSTEM_ZLIB defined, it uses
1442
1443 #include <zlib.h>
1444
1445 which correctly finds an external `zlib.h', but `zlib.h' itself has
1446 a line
1447
1448 #include "zconf.h"
1449
1450 which makes Visual Studio 2015 find `src/gzip/zconf.h' while
1451 compiling the files in `src/gzip'.
1452
1453 * src/gzip/zconf.h: Rename to...
1454 * src/gzip/ftzconf.h: ... this.
1455 * src/gzip/zlib.h, src/gzip/rules.mk (GZIP_DRV_SRCS): Updated.
1456
Oleksandr Chekhovskyi255828c2016-12-01 07:07:22 +010014572016-12-01 Oleksandr Chekhovskyi <oleksandr.chekhovskyi@gmail.com>
1458
1459 [autofit] Fix Emscripten crash (patch #9180).
1460
1461 Function calls through pointers must use a matching signature to
1462 work on Emscripten, since such calls are dispatched through lookup
1463 tables grouped by signature.
1464
1465 * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Fix
1466 typedef.
1467
Werner Lembergd949a3d2016-11-29 12:09:56 +010014682016-11-29 Werner Lemberg <wl@gnu.org>
1469
Werner Lemberg1d28f692016-11-29 18:45:22 +01001470 [smooth] Revert previous commit. Already fixed with 6ca54c64.
1471
14722016-11-29 Werner Lemberg <wl@gnu.org>
1473
Werner Lembergd949a3d2016-11-29 12:09:56 +01001474 [smooth] Avoid conditional jump on uninitialized value (#49711).
1475
1476 * src/smooth/ftgrays.c (gray_raster_render): Initialize `worker'.
1477
Nikolaus Waxweilerb37b7992016-11-27 16:30:53 +010014782016-11-27 Nikolaus Waxweiler <madigens@gmail.com>
1479
1480 [autofit] Code shuffling.
1481
1482 Also improve some comments and remove unused code.
1483
1484 No functional change.
1485
1486 * src/autofit/afloader.c (af_loader_load_g): Merged with...
1487 (af_loader_load_glyph): ...this function.
1488 Split off emboldening code into...
1489 (af_loader_embolden_glyph_in_slot): ... this function.
1490
Werner Lemberg78150502016-11-17 12:00:20 +010014912016-11-17 Werner Lemberg <wl@gnu.org>
1492
1493 Better support of LLP64 systems with gcc (and clang).
1494
1495 * builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
1496
1497 * builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
1498 suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
1499
Werner Lembergdd26e3d2016-11-10 12:03:32 +010015002016-11-10 Werner Lemberg <wl@gnu.org>
1501
1502 Fix `lcd_weights' array size.
1503
1504 * include/freetype/internal/ftobjs.h (FT_LibraryRec): Do it.
1505
1506 Reported by Nikolaus.
1507
Werner Lemberg565db952016-11-06 12:33:51 +010015082016-11-06 Werner Lemberg <wl@gnu.org>
1509
Werner Lemberge1ee5472016-11-06 12:39:05 +01001510 * src/base/ftobjs.c (FT_Render_Glyph_Internal): Fix tracing.
1511
15122016-11-06 Werner Lemberg <wl@gnu.org>
1513
Werner Lemberg1c6fd992016-11-06 12:37:55 +01001514 [sfnt] Improve FT_LOAD_BITMAP_METRICS_ONLY for `sbix' format.
1515
1516 It's unavoidable to call the PNG engine, but to get the metrics it
1517 is sufficient to read the PNG image's header only.
1518
1519 * src/sfnt/pngshim.c (Load_SBit_Png): Add argument to control the
1520 allocation of the glyph slot.
1521 * src/sfnt/pngshim.h: Updated.
1522 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_png,
1523 tt_face_load_sbix_image, tt_face_load_sbit_image): Updated.
1524
15252016-11-06 Werner Lemberg <wl@gnu.org>
1526
Werner Lemberg565db952016-11-06 12:33:51 +01001527 [sfnt] Speed up `sbix' lookup.
1528
1529 This also fixes a bug introduced in 2016-10-01 which prevents
1530 display of embedded bitmap fonts that use the `sbix' format.
1531
1532 * src/sfnt/ttsbit.c (tt_face_load_sbit): Store `sbix' size and
1533 offset also in `ebdt_size' and `ebdt_start', respectively. This
1534 makes the test for an embedded bitmap data table succeed for this
1535 format.
1536
1537 (tt_face_load_strike_metrics) <TT_SBIT_TABLE_TYPE_SBIX>: Use
1538 `ebdt_size' and `ebdt_start'
1539 (tt_face_load_sbix_image): Ditto.
1540
Werner Lemberg37e193e2016-11-06 12:32:51 +010015412016-11-06 Seigo Nonaka <nona@google.com>
1542 Werner Lemberg <wl@gnu.org>
1543
1544 Introduce a way of quickly retrieving (embedded) bitmap metrics.
1545
1546 `FT_Load_Glyph' doesn't generate a bitmap for a non-bitmap glyph
1547 until the user calls `FT_Render_Glyph'. However, it always
1548 allocates memory for bitmaps and copies or decodes the contents of a
1549 bitmap glyph, which can be quite slow for PNG data.
1550
1551 * include/freetype/freetype.h (FT_LOAD_BITMAP_METRICS_ONLY): New
1552 macro.
1553
1554 * src/base/ftobjs.c (FT_Load_Glyph): Unset FT_LOAD_RENDER if
1555 FT_LOAD_BITMAP_METRICS_ONLY is used.
1556
1557 * src/sfnt/ttsbit.c (tt_sbit_decoder_alloc_bitmap,
1558 tt_sbit_decoder_load_bitmap): Add argument to control allocation of
1559 the glyph slot.
1560 (tt_sbit_decoder_load_image, tt_sbit_decoder_load_compound,
1561 tt_face_load_sbit_image): Updated.
1562
1563 * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Quickly exit if
1564 `FT_LOAD_BITMAP_METRICS_ONLY' is set.
1565
1566 * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h (pfr_slot_load_bitmap): Add
1567 argument to control allocation of the glyph slot.
1568 * src/pfr/pfrobjs (pfr_slot_load): Updated.
1569
1570 * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
1571
1572 * docs/CHANGES: Updated.
1573
15742016-11-06 Werner Lemberg <wl@gnu.org>
Werner Lemberg57f73d12016-11-06 06:06:30 +01001575
1576 Synchronize with gnulib (#49448).
1577
1578 * include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
1579 builds/vms/ftconfig.h (FT_TYPEOF): Update code to use definition in
1580 current version of `intprops.h'.
1581 Other minor synchronization to reduce code differences between the
1582 three files.
1583
Behdad Esfahbodb72858c2016-11-03 06:41:00 +010015842016-11-03 Behdad Esfahbod <behdad@behdad.org>
1585
1586 [truetype] Clamp variation requests to valid range.
1587
1588 This is required by OpenType 1.8; it also avoids rounding surprises.
1589
1590 * src/truetype/ttgxvar.c (TT_Set_Var_Design): Clamp design coordinates
1591 outside of the allowed range to always stay within the range instead
1592 of producing an error.
1593
Werner Lemberg328d6842016-10-29 00:18:56 +020015942016-10-29 Werner Lemberg <wl@gnu.org>
1595
1596 [truetype] Remove clang warnings.
1597
1598 * src/truetype/ttinterp.h (TT_ExecContextRec): Using `FT_ULong' for
1599 loop counter handling.
1600
1601 * src/truetype/ttinterp.c: Updated.
1602 (Ins_SCANTYPE): Use signed constant.
1603 (TT_RunIns): Ensure `num_twilight_points' is 16bit.
1604
Werner Lembergddf38722016-10-27 07:27:27 +020016052016-10-27 Werner Lemberg <wl@gnu.org>
1606
1607 [truetype] Fix commit from 2014-11-24.
1608
1609 Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1610
1611 * src/truetype/ttpload.c (tt_face_load_hdmx): Fix file checking
1612 logic.
1613
Werner Lemberg56140902016-10-26 08:10:59 +020016142016-10-26 Werner Lemberg <wl@gnu.org>
1615
Werner Lemberg9c45ac32016-10-26 16:00:00 +02001616 Add `FT_Get_{MM,Var}_Blend_Coordinates' functions.
1617
1618 * include/freetype/ftmm.h: Declare.
1619
1620 * include/freetype/internal/services/svmm.h (FT_Get_MM_Blend_Func):
1621 New typedef.
1622 (MultiMasters): New MM service function `get_mm_blend'.
1623 (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
1624 Update all callers.
1625
1626 * src/base/ftmm.c (FT_Get_MM_Blend_Coordinates,
1627 FT_Get_Var_Blend_Coordinates): Implement.
1628
1629 * src/truetype/ttdriver.c: Updated.
1630
1631 * src/truetype/ttgxvar.c (TT_Get_MM_Blend): New function to handle
1632 `get_mm_blend' service.
1633 * src/truetype/ttgxvar.h: Updated.
1634
1635 * src/type1/t1driver.c: Updated.
1636
1637 * src/type1/t1load.c (T1_Get_MM_Blend): New function to handle
1638 `get_mm_blend' service.
1639 * src/type1/t1load.h: Updated.
1640
1641 * docs/CHANGES: Document.
1642
16432016-10-26 Werner Lemberg <wl@gnu.org>
1644
Werner Lemberg56140902016-10-26 08:10:59 +02001645 * src/type1/t1load.c (parse_subrs): Fix limit check.
1646
1647 Reported as
1648
1649 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=81
1650
Alexei Podtelezhnikovc5f1bc42016-10-25 22:31:42 -040016512016-10-25 Alexei Podtelezhnikov <apodtele@gmail.com>
1652
1653 [cff] Correct cmap format reporting (#24819).
1654
1655 * src/cff/cffdrivr.c (cff_get_cmap_info): Throw an error on synthetic
1656 charmap instead of guessing its format and language.
1657
Werner Lemberg57741402016-10-22 18:34:48 +020016582016-10-22 Werner Lemberg <wl@gnu.org>
1659
Werner Lemberg50816742016-10-22 19:16:08 +02001660 [truetype] Fix SCANTYPE instruction (#49394).
1661
1662 * src/truetype/ttinterp.c (Ins_SCANTYPE): Only use lower 16bits.
1663
16642016-10-22 Werner Lemberg <wl@gnu.org>
1665
Werner Lemberg57741402016-10-22 18:34:48 +02001666 [sfnt] Improve handling of invalid post 2.5 tables [#49393].
1667
1668 * src/sfnt/ttpost.c (load_format_25): We need at least a single
1669 table entry.
1670
Werner Lemberg7eeaf982016-10-14 08:58:17 +020016712016-10-14 Werner Lemberg <wl@gnu.org>
1672
1673 [truetype] Fix handling of `cvar' table data.
1674
1675 Reported as
1676
1677 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53
1678
1679 * src/truetype/ttgxvar.c (tt_face_vary_cvt): Ignore invalid CVT
1680 indices.
1681
Werner Lemberg92281222016-10-11 07:12:12 +020016822016-10-11 Werner Lemberg <wl@gnu.org>
1683
Werner Lemberg9c54d122016-10-11 08:57:55 +02001684 [psaux] Fix handling of invalid flex subrs.
1685
1686 Problem reported as
1687
1688 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52
1689
1690 * src/psaux/t1decode.c (t1_decoder_parse_charstrings)
1691 <op_callothersubr>: Set `flex_state' after error checking.
1692
16932016-10-11 Werner Lemberg <wl@gnu.org>
1694
Werner Lemberg92281222016-10-11 07:12:12 +02001695 * src/truetype/ttgxvar.c (tt_done_blend): Fix deallocation.
1696
Werner Lembergd61b0422016-10-08 19:20:33 +020016972016-10-08 Werner Lemberg <wl@gnu.org>
1698
Werner Lemberg6b354932016-10-08 20:26:59 +02001699 * src/cid/cidload.c (cid_face_open): Properly propagate `error'.
1700
17012016-10-08 Werner Lemberg <wl@gnu.org>
1702
Werner Lembergd61b0422016-10-08 19:20:33 +02001703 [cid] Fix parsing of subr offsets.
1704
1705 Bug introduced 2016-05-16.
1706
1707 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one error.
1708
Werner Lembergfcc0ee82016-10-01 20:12:25 +020017092016-10-01 Werner Lemberg <wl@gnu.org>
1710
1711 [sfnt] Disable bitmap strikes if we don't have a bitmap data table.
1712
1713 * src/sfnt/ttsbit.c (tt_face_load_sbit): Check whether we have
1714 a bitmap data table.
1715
Alexei Podtelezhnikovb0aacff2016-10-01 12:55:33 -040017162016-10-01 Alexei Podtelezhnikov <apodtele@gmail.com>
1717
1718 [smooth] Remove impossibility.
1719
1720 * src/smooth/ftgrays.c (TWorker): Rearrange fields.
1721 (gray_convert_glyph): Remove impossible condition and clean up.
1722
Werner Lembergbf902392016-09-29 13:04:46 +020017232016-09-29 Werner Lemberg <wl@gnu.org>
1724
Werner Lemberg35764872016-09-30 08:11:52 +02001725 [pcf] Enrich family name with foundry name and glyph width info.
1726
1727 This is a very old patch from openSuSE (from 2006, submitted to
1728 FreeType in 2011) that I forgot to apply.
1729
1730 https://build.opensuse.org/package/view_file/openSUSE:Factory/freetype2/freetype2-bitmap-foundry.patch
1731
1732 Prepend the foundry name plus a space to the family name. There are
1733 many fonts just called `Fixed' which look completely different, and
1734 which have nothing to do with each other. When selecting `Fixed' in
1735 KDE or Gnome one gets results that appear rather random, the style
1736 changes often if one changes the size and one cannot select some
1737 fonts at all.
1738
1739 We also check whether we have `wide' characters; all put together,
1740 we get family names like `Sony Fixed' or `Misc Fixed Wide'.
1741
1742 * src/pcf/pcfread.c (pcf_load_font): Implement it.
1743
1744 * docs/CHANGES: Document it.
1745
17462016-09-29 Werner Lemberg <wl@gnu.org>
1747
Werner Lemberg71b617d2016-09-29 19:53:39 +02001748 [ftfuzzer] Speed up.
1749
1750 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Don't
1751 check for embedded bitmaps if we have a non-default instance.
1752
17532016-09-29 Werner Lemberg <wl@gnu.org>
1754
Werner Lemberg2067c692016-09-29 19:49:07 +02001755 [truetype] Disallow bitmap strokes for non-default instances.
1756
1757 Also speed up access of default instances if GX variations are
1758 active.
1759
1760 * include/freetype/internal/tttypes.h (TT_FaceRec): Add
1761 `is_default_instance' member.
1762
1763 * src/sfnt/sfobjs.c (sfnt_init_face): Initialize
1764 `is_default_instance'.
1765
1766 * src/truetype/ttgload.c (TT_Process_Simple_Glyph,
1767 load_truetype_glyph): Add test for default instance.
1768 (TT_Load_Glyph): Load embedded bitmaps for default instance only.
1769
1770 * src/truetype/ttgxvar.c (TT_Set_MM_Blend): Compute
1771 `is_default_instance'.
1772
17732016-09-29 Werner Lemberg <wl@gnu.org>
1774
Werner Lembergbf902392016-09-29 13:04:46 +02001775 [truetype] Clean up `TT_Face' structure.
1776
1777 * include/freetype/internal/tttypes.h (TT_FaceRec): Remove unused
1778 fields `horz_metrics' and `vert_metrics'.
1779 Update documentation.
1780
1781 * src/sfnt/sfobjs.c (sfnt_done_face): Updated.
1782
Werner Lemberg2ecf89b2016-09-28 19:06:21 +020017832016-09-28 Werner Lemberg <wl@gnu.org>
1784
Werner Lemberg45cad2e2016-09-28 19:10:52 +02001785 More FT_ZERO usage.
1786
1787 * src/gxvalid/gxvcommn.c (gxv_ClassTable_validate):
1788 s/ft_memset/FT_MEM_ZERO/.
1789
1790 * src/psaux/t1decode.c (t1_decoder_parse_charstrings):
1791 s/ft_memset/FT_ARRAY_ZERO/.
1792
1793 * src/raster/ftraster.c (FT_ZERO): Define.
1794 (ft_black_new): Use it.
1795 * src/raster/ftrend1.c (ft_raster1_get_cbox):
1796 s/FT_MEM_ZERO/FT_ZERO/.
1797
1798 * src/smooth/ftgrays.c (FT_ZERO): Define.
1799 (gray_raster_new): Use it.
1800 * src/smooth/ftsmooth.c (ft_smooth_get_cbox):
1801 s/FT_MEM_ZERO/FT_ZERO/.
1802
18032016-09-28 Werner Lemberg <wl@gnu.org>
1804
Werner Lemberg2ecf89b2016-09-28 19:06:21 +02001805 */*: s/FT_MEM_ZERO/FT_ZERO/ where appropriate.
1806
Werner Lemberg0d945922016-09-27 08:44:31 +020018072016-09-27 Werner Lemberg <wl@gnu.org>
1808
Werner Lemberga3e2c832016-09-27 21:42:02 +02001809 [truetype] Trace number of executed opcodes.
1810
1811 * src/truetype/ttinterp.c (TT_RunIns): Implement it.
1812
18132016-09-27 Werner Lemberg <wl@gnu.org>
1814
Werner Lemberge27b8a52016-09-27 21:21:01 +02001815 [truetype] Speed up `TT_Load_Glyph'.
1816
1817 This avoids additional calls to `tt_face_lookup_table' for the
1818 `glyf' table, which can be expensive.
1819
1820 * include/freetype/internal/tttypes.h (TT_LoaderRec): Move
1821 `glyf_offset' field to ...
1822 (TT_FaceRec): ... this structure.
1823 * src/truetype/ttgload.c (load_truetype_glyph): Updated.
1824 (tt_loader_init): Move initialization of `glyf_offset' to ...
Werner Lemberga3e2c832016-09-27 21:42:02 +02001825 * src/truetype/ttpload.c (tt_face_load_loca): ... this function.
Werner Lemberge27b8a52016-09-27 21:21:01 +02001826
18272016-09-27 Werner Lemberg <wl@gnu.org>
1828
Werner Lemberg0d945922016-09-27 08:44:31 +02001829 [truetype] Introduce dynamic limits for some bytecode opcodes.
1830
1831 This speeds up FreeType's handling of malformed fonts.
1832
1833 * src/truetype/ttinterp.c (TT_RunIns): Set up limits for the number
1834 of twilight points, the total number of negative jumps, and the
1835 total number of loops in LOOPCALL opcodes. The values are based on
1836 the number of points and entries in the CVT table.
1837 (Ins_JMPR): Test negative jump counter.
1838 (Ins_LOOPCALL): Test loopcall counter.
1839
1840 * src/truetype/ttinterp.h (TT_ExecContext): Updated.
1841
1842 * docs/CHANGES: Updated.
1843
Werner Lembergd11e8b62016-09-25 15:32:04 +020018442016-09-25 Werner Lemberg <wl@gnu.org>
1845
Werner Lemberga7649632016-09-25 16:29:05 +02001846 [truetype] Sanitize only last entry of `loca' table.
1847
1848 Without this patch, a loca sequence like `0 100000 0 100000 ...',
1849 where value 100000 is larger than the `glyf' table size, makes
1850 FreeType handle the whole `glyf' table as a single glyph again and
1851 again, which is certainly invalid (and can be very slow, too).
1852
1853 * src/truetype/ttpload.c (tt_face_get_location): Implement.
1854 Improve tracing messages.
1855
18562016-09-25 Werner Lemberg <wl@gnu.org>
1857
Werner Lembergd11e8b62016-09-25 15:32:04 +02001858 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Fix typo.
1859
Werner Lemberg2f2e73c2016-09-24 22:42:58 +020018602016-09-24 Werner Lemberg <wl@gnu.org>
1861
1862 [autofit] Tracing fixes.
1863
1864 * src/autofit/afmodule.c (af_autofitter_load_glyph): Call dumping
1865 functions only if we actually do tracing.
1866
Alexei Podtelezhnikov53ae7a52016-09-22 22:48:15 -040018672016-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
1868
1869 [smooth] Reduce divisions in the line renderer.
1870
1871 We don't need some divisions if a line segments stays within a single
1872 row or a single column of pixels.
1873
1874 * src/smooth/ftgrays.c (gray_render_line) [FT_LONG64]: Make divisions
1875 conditional.
1876
Alexei Podtelezhnikovd5f75332016-09-15 00:13:36 -040018772016-09-15 Alexei Podtelezhnikov <apodtele@gmail.com>
1878
1879 * src/smooth/ftgrays.c (gray_sweep): Remove check for empty table.
1880
Alexei Podtelezhnikovad475502016-09-14 23:15:03 -040018812016-09-14 Alexei Podtelezhnikov <apodtele@gmail.com>
1882
1883 [smooth] Another tiny speed-up.
1884
1885 * src/smooth/ftgrays.c (gray_find_cell): Merge into...
1886 (gray_record_cell): ... this function.
1887
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -040018882016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1889
Alexei Podtelezhnikovc38be522016-09-11 22:44:44 -04001890 * src/smooth/ftgrays.c (gray_{find,set}_cell): Remove dubious code.
1891
18922016-09-11 Alexei Podtelezhnikov <apodtele@gmail.com>
1893
Alexei Podtelezhnikov6ca54c62016-09-11 16:00:52 -04001894 [smooth] Fix valgrind warning and reoptimize.
1895
1896 The algorithm calls `gray_set_cell' at the start of each new contour
1897 or when the contours cross the cell boundaries. Double-checking for
1898 that is wasteful.
1899
1900 * src/smooth/ftgrays.c (gray_set_cell): Remove check for a new cell.
1901 (gray_convert_glyph): Remove initialization introduced by 44b172e88.
1902
Werner Lemberge421a0b2016-09-10 08:02:30 +020019032016-09-10 Werner Lemberg <wl@gnu.org>
1904
1905 [sfnt] Fix previous commit.
1906
1907 Problems reported as
1908
1909 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40
1910
1911 We now map the strike index right before accessing the physical
1912 data, not earlier.
1913
1914 * src/sfnt/sfobjs.c (sfnt_load_face): Set `face->sbit_strike_map'
1915 after creating the map so that...
1916
1917 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): ... this function
1918 can be used before and after setting up `sbit_strike_map'.
1919 (tt_face_set_sbit_strike): Revert change.
1920 (tt_sbit_decoder_init, tt_face_load_sbix_image): Map strike index.
1921
1922 * src/truetype/ttdriver.c (tt_size_select): Revert change.
1923
Werner Lembergd609b7c2016-09-09 22:11:07 +020019242016-09-09 Werner Lemberg <wl@gnu.org>
1925
Werner Lembergdeb26152016-09-09 22:13:33 +02001926 [ftfuzzer] Minor improvements.
1927
1928 * src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Ignore
1929 invalid strikes.
1930 Use better values for call to `FT_Set_Char_Size'.
1931
19322016-09-09 Werner Lemberg <wl@gnu.org>
1933
Werner Lembergd609b7c2016-09-09 22:11:07 +02001934 [sfnt] Don't provide (completely) broken strike data.
1935
1936 FreeType tries to sanitize strike header data; we now reject
1937 completely broken ones.
1938
1939 * include/freetype/internal/tttypes.h (TT_FaceRec): New
1940 `sbit_strike_map' array pointer.
1941
1942 * src/base/ftobjs.c (FT_Match_Size): Reject matches where either
1943 width or height would be zero.
1944 Add tracing message in case of error.
1945
1946 * src/sfnt/sfobjs.c (sfnt_load_face): Populate `sbit_strike_map',
1947 only using (more or less) valid strike header data for
1948 FT_Face's `available_sizes' array.
1949 (sfnt_done_face): Updated.
1950
1951 * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use
1952 `sbit_strike_map'.
1953 (tt_face_load_strike_metrics): Improve tracing.
1954
1955 * src/truetype/ttdriver.c (tt_size_select): Use `sbit_strike_map'.
1956
Werner Lemberg9749f262016-09-08 07:51:03 +020019572016-09-08 Werner Lemberg <wl@gnu.org>
1958
Werner Lembergd2d59682016-09-08 09:04:32 +02001959 * Version 2.7 released.
1960 =======================
1961
1962
1963 Tag sources with `VER-2-7'.
1964
1965 * docs/VERSION.TXT: Add entry for version 2.7.
1966
1967 * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1968 builds/windows/vc2005/index.html,
1969 builds/windows/vc2008/freetype.vcproj,
1970 builds/windows/vc2008/index.html,
1971 builds/windows/vc2010/freetype.vcxproj,
1972 builds/windows/vc2010/index.html,
1973 builds/windows/visualc/freetype.dsp,
1974 builds/windows/visualc/freetype.vcproj,
1975 builds/windows/visualc/index.html,
1976 builds/windows/visualce/freetype.dsp,
1977 builds/windows/visualce/freetype.vcproj,
1978 builds/windows/visualce/index.html,
1979 builds/wince/vc2005-ce/freetype.vcproj,
1980 builds/wince/vc2005-ce/index.html,
1981 builds/wince/vc2008-ce/freetype.vcproj,
1982 builds/wince/vc2008-ce/index.html: s/2.6.5/2.7/, s/265/27/.
1983
1984 * include/freetype/freetype.h (FREETYPE_MINOR): Set to 7.
1985 (FREETYPE_PATCH): Set to 0.
1986
1987 * builds/unix/configure.raw (version_info): Set to 18:6:12.
1988 * CMakeLists.txt (VERSION_MINOR): Set to 7.
1989 (VERSION_PATCH): Set to 0.
1990
1991 * docs/CHANGES: Updated.
1992
19932016-09-08 Werner Lemberg <wl@gnu.org>
1994
Werner Lembergb1e7b682016-09-08 08:56:34 +02001995 * src/truetype/ttinterp.c: Include `ttgxvar.h'.
1996
1997 This fixes the `multi' build.
1998
19992016-09-08 Werner Lemberg <wl@gnu.org>
2000
Werner Lemberg9749f262016-09-08 07:51:03 +02002001 [autofit] Another improvement to Armenian support.
2002
2003 Suggested by Hrant H Papazian <hpapazian@gmail.com>.
2004
2005 * src/autofit/afscript.h: Use better suited characters to derive
2006 default stem widths.
2007
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -040020082016-09-07 Alexei Podtelezhnikov <apodtele@gmail.com>
2009
Alexei Podtelezhnikov15c6e8d2017-01-22 23:09:05 -05002010 * src/smooth/ftgrays.c (gray_hline): Micro-optimize.
Alexei Podtelezhnikova0b92bc2016-09-07 23:19:57 -04002011
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -040020122016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
2013
Alexei Podtelezhnikov9d0a3bd2016-09-06 23:59:33 -04002014 [smooth] Operate in absolute bitmap coordinates.
2015
2016 Simpler bitmap addressing improves performance by 1.5%.
2017
2018 * src/smooth/ftgrays.c (gray_TWorker): Remove count fields.
2019 (gray_dump_cells, gray_find_cell, gray_set_cell, gray_hline,
2020 gray_sweep, gray_convert_glyph, gray_raster_render): Updated.
2021
20222016-09-06 Alexei Podtelezhnikov <apodtele@gmail.com>
2023
Alexei Podtelezhnikov44b172e2016-09-06 23:24:17 -04002024 [smooth] Improve contour start (take 2).
2025
2026 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
2027 instead of...
2028 (gray_start_cell): ... this function, which is removed.
2029 (gray_convert_glyph): Make initial y-coordinate invalid.
2030
Werner Lembergebbb8b22016-09-06 16:28:57 +020020312016-09-06 Werner Lemberg <wl@gnu.org>
2032
2033 [type1] MM fonts support exactly zero named instances (#48748).
2034
2035 * src/type1/t1load.c (T1_Get_MM_Var): Set `num_namedstyles' to zero.
2036
Jonathan Kewa15133e2016-09-06 06:33:36 +020020372016-09-06 Jonathan Kew <jfkthame@gmail.com>
2038
2039 [cff] Fix uninitialized memory.
2040
2041 Problem reported as
2042
2043 https://bugzilla.mozilla.org/show_bug.cgi?id=1270288
2044
2045 * src/cff/cf2interp.c (cf2_interpT2CharString): Initialize `storage'
2046 array to handle a `get' opcode without a previous `put'.
2047
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -040020482016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2049
Alexei Podtelezhnikov9773d5f2016-09-05 23:33:35 -04002050 * src/smooth/ftgrays.c (gray_move_to, gray_start_cell): Revert.
2051
20522016-09-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2053
Alexei Podtelezhnikov7effc272016-09-05 21:58:56 -04002054 [smooth] Improve contour start.
2055
2056 * src/smooth/ftgrays.c (gray_move_to): Call `gray_set_cell' directly
2057 instead of...
2058 (gray_start_cell): ... this function, which is removed.
2059
Werner Lembergc9adf1a2016-09-05 07:32:37 +020020602016-09-05 Werner Lemberg <wl@gnu.org>
2061
Werner Lemberg3ebfe3c2016-09-05 10:55:07 +02002062 [cff] Fix memory initialization.
2063
2064 * src/cff/cf2stack.c (cf2_stack_init): Use `FT_NEW'. The `Q'
2065 variants of FreeType's memory allocation macros don't do zeroing.
2066
20672016-09-05 Werner Lemberg <wl@gnu.org>
2068
Werner Lemberg1c8bb632016-09-05 08:13:42 +02002069 [ftrandom] Minor improvements.
2070
2071 * src/tools/ftrandom/ftrandom.c (_XOPEN_SOURCE): New macro, set to
2072 500.
2073
2074 * src/tools/ftrandom/Makefile (CFLAGS): Split off include
2075 directories to ...
2076 (INCLUDES): ... this new variable.
2077 (LDFLAGS): New variable.
2078 (ftrandom.o, ftrandom): Updated.
2079
20802016-09-05 Werner Lemberg <wl@gnu.org>
2081
Werner Lembergc9adf1a2016-09-05 07:32:37 +02002082 [autofit] Improve Armenian support.
2083
2084 Thanks to Hrant H Papazian <hpapazian@gmail.com> for help.
2085
2086 * src/autofit/afblue.dat (AF_BLUE_STRING_ARMENIAN_*): Improve
2087 selection of characters.
2088
2089 * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
2090
Werner Lemberg4b28f6a2016-09-04 19:05:45 +020020912016-09-04 Werner Lemberg <wl@gnu.org>
2092
2093 [ftrandom] Improve Makefile.
2094
2095 It now supports both a normal build (`./configure && make') and a
2096 development build (`make devel').
2097
2098 * src/tools/ftrandom/Makefile (VPATH): Set it so that
2099 `libfreetype.a' gets searched in both `objs' (for the development
2100 build) and `objs/.libs' (for a normal build which uses libtool).
2101 (LIBS): Add missing libraries.
2102 (ftrandom.o): New rule.
2103 (ftrandom): Use automatic variables.
2104
Werner Lembergf0fa7a62016-09-03 06:33:36 +020021052016-09-03 Werner Lemberg <wl@gnu.org>
2106
Werner Lemberg4e659d72016-09-03 18:14:00 +02002107 [truetype] More fixes for handling of GX deltas.
2108
2109 Problems reported by Bob Taylor <Bob.Taylor@monotype.com>.
2110
2111 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix rough
2112 sanity test for glyph variation array header size.
2113 Always set stream position before reading packed x and y deltas.
2114 Fix thinko w.r.t. `localpoints' array.
2115
21162016-09-03 Werner Lemberg <wl@gnu.org>
2117
Werner Lembergca8e98d2016-09-03 13:06:16 +02002118 [ftrandom] Various fixes.
2119
2120 * src/tools/ftrandom/ftrandom.c (GOOD_FONTS_DIR): Provide better
2121 default.
2122 (error_fraction): Make it of type `double' to work as advertized –
2123 this was completely broken.
2124 Update all related code.
2125 (error_count, fcnt): Make it unsigned to fix compiler warnings.
2126 Update all related code.
2127 (fontlist): Change `len' member to `long' to fix compiler warnings.
2128 (FT_MoveTo, FT_LineTo, FT_ConicTo, FT_CubicTo, abort_test): Tag
2129 unused variables.
2130 (TestFace, FindFonts, copyfont, do_test): Fix compiler warnings.
2131 (ExecuteTest): Ditto.
2132 Call `FT_Done_FreeType'.
2133 (getErrorCnt): Replace `ceil' with an ordinary cast to `unsigned
2134 int'.
2135 (usage): Improve output.
2136 (main): Fix compiler warnings.
2137
2138 * src/tools/ftrandom/README: Updated.
2139
21402016-09-03 Werner Lemberg <wl@gnu.org>
2141
Werner Lembergb98dfda2016-09-03 08:20:31 +02002142 [base] Avoid negative bitmap stroke dimensions (#48985).
2143
2144 * src/base/ftobjs.c (FT_Open_Face): Check whether negation was
2145 actually successful. For example, this can fail for value
2146 -32768 if the type is `signed short'. If there are problems,
2147 disable the stroke.
2148
21492016-09-03 Werner Lemberg <wl@gnu.org>
2150
Werner Lembergf0fa7a62016-09-03 06:33:36 +02002151 [cff] Avoid null pointer passed to FT_MEM_COPY (#48984).
2152
2153 * src/cff/cffload.c (cff_index_get_name): Check `byte_len'.
2154
Werner Lembergd8ef7262016-09-02 23:27:50 +020021552016-09-02 Werner Lemberg <wl@gnu.org>
2156
Werner Lembergd87bb912016-09-02 23:56:27 +02002157 [unix] Enable 64bit support in file system access (#48962).
2158
2159 * builds/unix/configure.raw: Call `AC_SYS_LARGEFILE'.
2160
21612016-09-02 Werner Lemberg <wl@gnu.org>
2162
Werner Lembergd8ef7262016-09-02 23:27:50 +02002163 [sfnt] Avoid left shift of negative value (#48980).
2164
2165 * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Use unsigned
2166 constant.
2167
21682016-09-02 Werner Lemberg <wl@gnu.org>
Werner Lemberg16583cc2016-09-02 22:45:14 +02002169
2170 * src/smooth/ftgrays.c (gray_hline): Fix clang compiler warnings.
2171
Werner Lemberg7a13dc02016-09-02 08:24:01 +020021722016-09-02 Werner Lemberg <wl@gnu.org>
2173
2174 Some preparations for the next release.
2175
2176 * include/freetype/config/ftoption.h
2177 (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Enable.
2178
2179 * docs/CHANGES: Updated.
2180
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -040021812016-09-01 Alexei Podtelezhnikov <apodtele@gmail.com>
2182
2183 [smooth] Simplify span rendering more.
2184
2185 It turns out that there is significant cost associated with `FT_Span'
Alexei Podtelezhnikov15c6e8d2017-01-22 23:09:05 -05002186 creation and calls to `gray_render_span' because it happens so
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04002187 frequently. This removes these steps from our internal use but leaves
2188 it alone for `FT_RASTER_FLAG_DIRECT" to preserve API. The speed gain
2189 is about 5%.
2190
2191 * src/smooth/ftgrays.c (gray_render_span): Removed. The code is
2192 migrated to...
2193 (gray_hline): ... here.
2194
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -040021952016-08-30 Alexei Podtelezhnikov <apodtele@gmail.com>
2196
2197 [smooth] Streamline pixmap drawing a bit more.
2198
2199 Zero coverage is unlikely (1 out of 256) to warrant checking. This
Alexei Podtelezhnikov11d33362016-09-01 22:56:24 -04002200 gives 0.5% speed improvement in rendering simple glyphs.
Alexei Podtelezhnikovf44ddfd2016-08-30 23:21:23 -04002201
2202 * src/smooth/ftgrays.c (gray_hline, gray_render_span): Remove checks.
2203
Alexei Podtelezhnikove73055c2016-08-29 23:15:35 -040022042016-08-29 Alexei Podtelezhnikov <apodtele@gmail.com>
2205
2206 [smooth] Streamline pixmap drawing.
2207
2208 This gives 2% speed improvement in rendering simple glyphs.
2209
2210 * src/smooth/ftgrays.c (TPixmap): Reduced pixmap descriptor with a
2211 pointer to its bottom-left and pitch to be used in...
2212 (gray_TWorker): ... here.
2213 (gray_render_span): Move pixmap flow check from here...
2214 (gray_raster_render): .. to here.
2215
Alexei Podtelezhnikov4d3f7ca2016-08-27 23:25:54 -040022162016-08-27 Alexei Podtelezhnikov <apodtele@gmail.com>
2217
2218 [smooth] Reduce stack of band boundaries.
2219
2220 * src/smooth/ftgrays.c (gray_TBand): Removed.
2221 (gray_convert_glyph): Updated to stack band boundaries concisely.
2222
Werner Lembergf3e71ba2016-08-26 10:31:30 +020022232016-08-26 Werner Lemberg <wl@gnu.org>
2224
Werner Lemberg57aa8392016-08-26 11:59:50 +02002225 * src/cid/cidload.c (cid_face_open): Improve handling of `SDBytes'.
2226
22272016-08-26 Werner Lemberg <wl@gnu.org>
2228
Werner Lemberg3c61a2f2016-08-26 11:50:09 +02002229 [cid] Fix commit from 2016-05-16.
2230
2231 * src/cid/cidparse.c (cid_parser_new): Fix off-by-one errors.
2232
22332016-08-26 Werner Lemberg <wl@gnu.org>
2234
Werner Lembergf3e71ba2016-08-26 10:31:30 +02002235 [sfnt] Cache offset and size to bitmap data table.
2236
2237 This commit avoids `EBDT' and friends being looked up again and
2238 again while loading a single embedded bitmap.
2239
2240 * include/freetype/internal/tttypes.h (TT_FaceRec)
2241 [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New fields `ebdt_start' and
2242 `ebdt_size'.
2243
2244 * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Move table lookup to ...
2245 (tt_face_load_sbit): ... this function; also store the table size
2246 and offset.
2247
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -040022482016-08-26 Alexei Podtelezhnikov <apodtele@gmail.com>
2249
2250 * src/smooth/ftgrays.c (gray_raster_render): Minor tweaks.
2251
Werner Lemberga660e3d2016-08-26 00:23:27 +020022522016-08-26 Werner Lemberg <wl@gnu.org>
2253
2254 [type1] Fix heap buffer overflow.
2255
2256 Reported as
2257
2258 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36
2259
2260 * src/type1/t1load.c (parse_charstrings): Reject fonts that don't
2261 contain glyph names.
2262
Werner Lemberg327f2e32016-08-25 12:46:08 +020022632016-08-25 Werner Lemberg <wl@gnu.org>
2264
Werner Lemberg69ce9732016-08-25 19:49:52 +02002265 [sfnt] Fix previous commit (#48901).
2266
2267 * src/sfnt/ttcmap.c (tt_cmap4_char_map_binary): Thinkos.
2268
22692016-08-25 Werner Lemberg <wl@gnu.org>
2270
Werner Lembergacd18792016-08-25 17:12:46 +02002271 [sfnt] Speed up handling of invalid format 4 cmaps.
2272
2273 * src/sfnt/ttcmap.c (tt_cmap4_next, tt_cmap4_char_map_binary): Add
2274 tests for `num_glyph' from `tt_cmap4_char_map_linear'.
2275
22762016-08-25 Werner Lemberg <wl@gnu.org>
2277
Werner Lemberg327f2e32016-08-25 12:46:08 +02002278 * include/freetype/internal/ftdriver.h: Remove unused typedefs.
2279
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -040022802016-08-22 Alexei Podtelezhnikov <apodtele@gmail.com>
2281
2282 [smooth] Simplify span rendering.
2283
2284 This removes unnecessary complexity of span merging and buffering.
2285 Instead, the spans are rendered as they come, speeding up the
Alexei Podtelezhnikov9a444f02016-08-25 22:36:01 -04002286 rendering by about 5% as a result.
Alexei Podtelezhnikovcb438872016-08-22 23:06:45 -04002287
2288 * src/smooth/ftgrays.c [FT_MAX_GRAY_SPANS]: Macro removed.
2289 (gray_TWorker): Remove span buffer and related fields.
2290 (gray_sweep, gray_hline): Updated.
2291
2292 * include/freetype/ftimage.h: Remove documentation note about
2293 `FT_MAX_GRAY_SPANS', which was never in `ftoption.h' and is now gone.
2294
Werner Lembergcf4224a2016-08-16 06:44:23 +020022952016-08-16 Werner Lemberg <wl@gnu.org>
2296
Werner Lemberga4c2a312016-08-22 19:32:34 +02002297 [truetype] Fix `MPS' instruction.
2298
2299 According to Greg Hitchcock, MPS in DWrite really returns the point
2300 size.
2301
2302 * src/truetype/ttobjs.h (TT_SizeRec): Add `point_size' member.
2303
2304 * src/truetype/ttdriver.c (tt_size_request): Set `point_size'.
2305
2306 * src/truetype/ttinterp.h (TT_ExecContextRec): Add `pointSize'
2307 member.
2308
2309 * src/truetype/ttinterp.c (TT_Load_Context): Updated.
2310 (Ins_MPS): Fix instruction.
2311
23122016-08-16 Werner Lemberg <wl@gnu.org>
2313
Werner Lemberg8521ad92016-08-16 13:44:38 +02002314 [lzw] Optimize last commit.
2315
2316 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Move check into
2317 conditional clause.
2318
23192016-08-16 Werner Lemberg <wl@gnu.org>
2320
Werner Lemberg548f68d2016-08-16 09:46:40 +02002321 [lzw] Avoid invalid left shift.
2322
Werner Lemberg6df68332016-08-16 09:50:07 +02002323 Reported as
2324
2325 https://bugzilla.mozilla.org/show_bug.cgi?id=1295366
2326
Werner Lemberg548f68d2016-08-16 09:46:40 +02002327 * src/lzw/ftzopen.c (ft_lzwstate_get_code): Limit `num_bits'.
2328
23292016-08-16 Werner Lemberg <wl@gnu.org>
2330
Werner Lemberg8d7b9192016-08-16 08:07:58 +02002331 [lzw] Avoid buffer overrun.
2332
2333 Reported as
2334
2335 https://bugzilla.mozilla.org/show_bug.cgi?id=1273283
2336
2337 * src/lzw/ftzopen.c (ft_lzwstate_refill): Ensure `buf_size' doesn't
2338 underflow.
2339
23402016-08-16 Werner Lemberg <wl@gnu.org>
2341
Werner Lembergcf4224a2016-08-16 06:44:23 +02002342 [truetype] Fix compiler warning.
2343
2344 * src/truetype/ttgload.c (load_truetype_glyph): Add cast.
2345
Werner Lemberg248f5622016-08-13 06:53:53 +020023462016-08-13 Werner Lemberg <wl@gnu.org>
2347
2348 [winfonts] Avoid zero bitmap width and height.
2349
2350 Reported as
2351
2352 https://bugzilla.mozilla.org/show_bug.cgi?id=1272173
2353
2354 * src/winfonts/winfnt.c (FNT_Face_Init): Check zero pixel height.
2355 (FNT_Load_Glyph): Check for zero pitch.
2356
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +020023572016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2358
Alexei Podtelezhnikov125f2b62016-08-11 23:40:05 -04002359 * src/truetype/ttinterp.c (Pop_Push_Count): Revert changes.
2360
23612016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2362
Alexei Podtelezhnikov49d474f2016-08-11 23:03:09 -04002363 * src/truetype/ttinterp.c (TT_RunIns): Minor and formatting.
2364
23652016-08-11 Alexei Podtelezhnikov <apodtele@gmail.com>
2366
Alexei Podtelezhnikovdce554b2016-08-11 07:29:19 +02002367 * src/truetype/ttinterp.c (Pop_Push_Count): Fix some entries.
2368
Peter Klotz3b37bfc2016-08-10 22:38:08 -040023692016-08-10 Peter Klotz <Peter.Klotz@ith-icoserve.com>
2370
2371 * src/smooth/ftgrays.c (gray_hline): Fix uninitialized access.
2372
Werner Lemberg5224aae2016-08-10 19:47:29 +020023732016-08-10 Werner Lemberg <wl@gnu.org>
2374
2375 [sfnt] Use correct type for `italicAngle' field (#48732).
2376
2377 * src/sfnt/ttload.c (tt_face_load_post): Fix types.
2378
Werner Lemberg53059f92016-08-07 09:01:33 +020023792016-08-06 Jon Spencer <jon@jonspencer.ca>
2380
2381 [sfnt] Fix `FT_Get_Advance' for bitmap strikes.
2382
2383 `FT_Get_Advance' returns 0 for bitmap fonts. It first gets the
2384 advance value from the font table and then scales it by the
2385 `font->size->metrics->x_scale' field. But `FT_Select_Size' doesn't
2386 set that value for bitmap fonts and the advance gets scaled to zero.
2387
2388 Taken from
2389
2390 https://github.com/behdad/harfbuzz/issues/252
2391
2392 * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
2393 <TT_SBIT_TABLE_TYPE_EBLC>: Set scale values.
2394
23952016-08-06 Behdad Esfahbod <behdad@behdad.org>
Behdad Esfahbod8183eeb2016-08-06 23:12:55 +02002396
2397 [truetype] Fix GX variation handling of composites.
2398
2399 * src/truetype/ttgload.c (load_truetype_glyph)
2400 [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check `ARGS_ARE_XY_VALUES' flag.
2401
Alexei Podtelezhnikov97718f32016-08-05 23:36:16 -040024022016-08-05 Alexei Podtelezhnikov <apodtele@gmail.com>
2403
2404 [smooth] Minor refactoring.
2405
2406 * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line):
2407 Updated.
2408
Werner Lembergfae4ec02016-07-29 06:43:32 +020024092016-07-29 Werner Lemberg <wl@gnu.org>
2410
2411 [sfnt, truetype] Don't abort on invalid `maxComponentDepth'.
2412
2413 Since 2016-05-16 we detect infinite recursion directly.
2414
2415 * src/sfnt/ttload.c (tt_face_load_maxp): Don't adjust
2416 `maxComponentDepth'.
2417 * src/truetype/ttgload.c (load_truetype_glyph): Don't abort if
2418 `maxComponentDepth' is not valid. Instead, simply adjust its value
2419 and emit a tracing message.
2420
Werner Lembergd9c7f5a2016-07-26 20:20:27 +020024212016-07-26 Werner Lemberg <wl@gnu.org>
2422
2423 * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Minor.
2424
2425 No functional change.
2426
Hin-Tak Leung3a528bb2016-07-22 06:59:36 +020024272016-07-22 Hin-Tak Leung <htl10@users.sourceforge.net>
2428
2429 [truetype] Record the end of IDEFs.
2430
2431 To match the logic in FDEF. The value of the end is only used for
2432 bound-checking in `Ins_JMPR', so it may not have been obvious that
2433 it was not recorded. Tested (as part of Font Validator 2.0) all the
2434 fonts on Fedora and did not see any change.
2435
2436 * src/truetype/ttinterp.c (Ins_IDEF): Updated.
2437
Werner Lemberge69f34b2016-07-19 07:06:19 +020024382016-07-19 Werner Lemberg <wl@gnu.org>
2439
Werner Lemberg7f631052016-07-19 21:35:58 +02002440 [truetype] Sanitizer fix, second try.
2441
2442 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
2443 tests and use only one slot more.
2444
24452016-07-19 Werner Lemberg <wl@gnu.org>
2446
Werner Lemberge69f34b2016-07-19 07:06:19 +02002447 [truetype] Sanitizer fix.
2448
2449 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Increase array
2450 to fix nested loops.
2451
Werner Lemberga3b70d72016-07-18 06:23:36 +020024522016-07-18 Werner Lemberg <wl@gnu.org>
2453
2454 [truetype] Make GETDATA work only for GX fonts.
2455
2456 * src/truetype/ttinterp.c (opcode_name): Updated.
2457 (Ins_GETDATA): Only define for `TT_CONFIG_OPTION_GX_VAR_SUPPORT'.
2458 (TT_RunIns): Updated.
2459
24602016-07-17 Werner Lemberg <wl@gnu.org>
Werner Lemberg32a32062016-07-16 16:39:26 +02002461
Werner Lemberg8c930132016-07-17 22:40:31 +02002462 [truetype] Add support for Apple's
2463
2464 GETDATA[], opcode 0x92
2465
2466 bytecode instruction. It always returns 17, and we have absolutely
2467 no idea what it is good for...
2468
2469 * src/truetype/ttinterp.c (Pop_Push_Count, opcode_name): Updated.
2470 (Ins_GETDATA): New function.
2471 (TT_RunIns): Add it.
2472
24732016-07-16 Werner Lemberg <wl@gnu.org>
2474
Werner Lemberge0843602016-07-16 18:46:28 +02002475 [truetype] Add bytecode support for GX variation fonts.
2476
2477 This commit implements undocumented (but confirmed) stuff from
2478 Apple's old bytecode engine.
2479
2480 GETVARIATION[], opcode 0x91
2481 This opcode pushes normalized variation coordinates for all axes
2482 onto the stack (in 2.14 format). Coordinate of first axis gets
2483 pushed first.
2484
2485 GETINFO[], selector bit 3
2486 If GX variation support is enabled, bit 10 of the result is set
2487 to 1.
2488
2489 * src/truetype/ttinterp.c: Include FT_MULTIPLE_MASTERS_H.
2490 (opcode_name) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
2491 (Ins_GETINFO) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle selector
2492 bit 3, checking support for variation glyph hinting.
2493 (Ins_GETVARIATION) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New function
2494 to implement opcode 0x91.
2495 (TT_RunIns) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Handle opcode 0x91.
2496
24972016-07-16 Werner Lemberg <wl@gnu.org>
2498
Werner Lemberg32a32062016-07-16 16:39:26 +02002499 [truetype] Fix GETINFO bytecode instruction.
2500
2501 * src/truetype/ttinterp.c (Ins_GETINFO): Fix return value for
2502 stretching information.
2503
Behdad Esfahbod69446dd2016-07-16 10:52:38 +020025042016-07-16 Behdad Esfahbod <behdad@behdad.org>
2505
2506 [truetype] Make all glyphs in `Zycon' GX font work.
2507
2508 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix boundary
2509 tests.
2510
Werner Lemberga3b61252016-07-16 08:16:16 +020025112016-07-16 Werner Lemberg <wl@gnu.org>
2512
2513 [truetype] Fix GX delta tracing.
2514
2515 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Trace
2516 relative point movements.
2517
25182016-07-16 Behdad Esfahbod <behdad@behdad.org>
Werner Lembergf147fb22016-07-16 07:06:21 +02002519
2520 [truetype] More fixes for GX.
2521
2522 This finally fixes the rendering of the cyclist and the lizard in
2523 the `Zycon' font.
2524
2525 * src/truetype/ttgxvar.c (ft_var_readpackedpoints): `first' point
2526 index is always cumulative.
2527
2528 (tt_handle_deltas): Rename to...
2529 (tt_interpolate_deltas): ... This.
2530 Add new parameter for output point array.
2531 Update caller.
2532
2533 (TT_Vary_Apply_Glyph_Deltas): Add `points_out' array; it now holds
2534 the intermediate results of `tt_interpolate_deltas' that are to be
2535 added to `outline->points'.
2536
Werner Lembergaafff572016-07-16 06:41:39 +020025372016-07-15 Werner Lemberg <wl@gnu.org>
2538
2539 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Thinko.
2540
2541 `max_pos' is always larger than `min_pos' so `FT_ABS' is not needed.
2542
2543 Reported by Alexei.
2544
Nikolaus Waxweiler86eb43a2016-07-16 06:37:57 +020025452016-07-16 Nikolaus Waxweiler <madigens@gmail.com>
2546
2547 * src/truetype/ttinterp.c (Ins_MIRP): Fix copy-and-paste error.
2548
2549 Problem reported by Hin-Tak Leung.
2550
Werner Lemberg894c0222016-07-15 10:23:11 +020025512016-07-15 Werner Lemberg <wl@gnu.org>
2552
Werner Lemberg1831e6f2016-07-15 10:35:32 +02002553 [autofit] Update and improve segment and edge tracing.
2554
2555 * src/autofit/afhints.c (af_glyph_hints_dump_segments): Trace
2556 `delta' also.
2557 Don't show first point of segment as a replacement for `pos'; this
2558 is (a) misleading, since the difference to `pos' can be almost
2559 arbitrarily large in corner cases, and (b) it is better to have all
2560 segment data in font units instead of a single value given in output
2561 space coordinates.
2562 Improve layout.
2563 (af_glyph_hints_dump_edges): Show px->units and units->px conversion
2564 values for convenience.
2565 Improve layout.
2566
25672016-07-15 Werner Lemberg <wl@gnu.org>
2568
Werner Lemberg894c0222016-07-15 10:23:11 +02002569 [autofit] For edges, reject segments wider than 1px (#41334).
2570
2571 * src/autofit/afhints.h (AF_SegmentRec): New member `delta'.
2572
2573 * src/autofit/aflatin.c (af_latin_hints_compute_segments): Compute
2574 `delta'.
2575 (af_latin_hints_compute_edges): Reject segments with a delta larger
2576 than 0.5px.
2577
Werner Lemberg631e2182016-07-14 06:25:05 +020025782016-07-14 Werner Lemberg <wl@gnu.org>
2579
Werner Lembergff655432016-07-14 15:01:55 +02002580 * include/freetype/freetype.h (FT_IS_NAMED_INSTANCE): New macro.
2581
25822016-07-14 Werner Lemberg <wl@gnu.org>
2583
Werner Lembergee3f36f2016-07-14 10:25:20 +02002584 [sfnt] Fix `face_index' value in `FT_Face' for named instances.
2585
Alexei Podtelezhnikov236bbdb2017-01-18 23:12:31 -05002586 * src/sfnt/sfobjs.c (sfnt_init_face): Don't strip off higher 16bits.
Werner Lembergee3f36f2016-07-14 10:25:20 +02002587
25882016-07-14 Werner Lemberg <wl@gnu.org>
2589
Werner Lemberg631e2182016-07-14 06:25:05 +02002590 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix tracing.
2591
Behdad Esfahbod0f9ddf22016-07-14 06:08:39 +020025922016-07-14 Behdad Esfahbod <behdad@behdad.org>
2593
2594 [truetype] Fix gxvar delta interpolation.
2595
2596 The coordinates of the base font should be used for interpolation
2597 purposes, NOT the current points (i.e., the result of accumulation
2598 of previous deltas).
2599
2600 * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Initialize
2601 `points_org' before looping over all tuples.
2602
Werner Lembergf6aa0892013-05-10 07:58:47 +02002603
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002604----------------------------------------------------------------------------
2605
Werner Lemberg563ae782017-01-04 20:16:34 +01002606Copyright 2016-2017 by
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002607David Turner, Robert Wilhelm, and Werner Lemberg.
2608
2609This file is part of the FreeType project, and may only be used, modified,
2610and distributed under the terms of the FreeType project license,
2611LICENSE.TXT. By continuing to use, modify, or distribute this file you
2612indicate that you have read the license and understand and accept it
2613fully.
2614
2615
2616Local Variables:
2617version-control: never
Werner Lemberg4e03fe72006-04-29 06:20:09 +00002618coding: utf-8
Werner Lemberg8e6c56f2005-10-18 06:09:13 +00002619End: