12017-09-16  Werner Lemberg  <wl@gnu.org>
2
3	* Version 2.8.1 released.
4	=========================
5
6
7	Tag sources with `VER-2-8-1'.
8
9	* docs/VERSION.TXT: Add entry for version 2.8.1.
10	* docs/CHANGES: Updated.
11
12	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
13	builds/windows/vc2005/index.html,
14	builds/windows/vc2008/freetype.vcproj,
15	builds/windows/vc2008/index.html,
16	builds/windows/vc2010/freetype.vcxproj,
17	builds/windows/vc2010/index.html,
18	builds/windows/visualc/freetype.dsp,
19	builds/windows/visualc/freetype.vcproj,
20	builds/windows/visualc/index.html,
21	builds/windows/visualce/freetype.dsp,
22	builds/windows/visualce/freetype.vcproj,
23	builds/windows/visualce/index.html,
24	builds/wince/vc2005-ce/freetype.vcproj,
25	builds/wince/vc2005-ce/index.html,
26	builds/wince/vc2008-ce/freetype.vcproj,
27	builds/wince/vc2008-ce/index.html: s/2.8/2.8.1/, s/28/281/.
28
29	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
30
31	* builds/unix/configure.raw (version_info): Set to 21:0:15.
32	* CMakeLists.txt (VERSION_PATCH): Set to 1.
33
342017-09-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
35
36	[sfnt] lowest gcc for vectors (e1d0249e) is changed to 4.7.
37
38	__builtin_shuffle() was introduced in gcc-4.7.  The lowest
39	gcc to enable vector operation is delayed from 4.6 to 4.7.
40
41	* src/sfnt/pngshim.c (premultiply_data): Fix cpp-macro to
42	enable the vector operation, to change the lowest gcc version
43	from 4.6 to 4.7.
44
452017-09-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
46
47	[cache] Fix a possible overflow by signed integer comparison.
48
49	Improve the code by 5d3ff05615dda6d1325ed612381a17a0df04c975 ,
50	issues are found by Behdad Esfahbod and Werner Lemberg.
51
52	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Replace
53	a subtraction to check higher bit by a bit operation,
54	and cpp-conditionalize for appropriate systems.  Add better
55	documentation to the comment.
56	(FTC_ImageCache_LookupScaler): Ditto.
57	(FTC_SBitCache_Lookup): Ditto.
58	(FTC_SBitCache_LookupScaler): Ditto.
59
602017-09-13  Werner Lemberg  <wl@gnu.org>
61
62	[autofit] Really fix #41334 (#52000).
63
64	* src/autofit/aflatin.c (af_latin_hints_compute_segments): Set
65	`segment->delta' everywhere.
66
672017-09-12  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
68
69	[autofit, sfnt] Fix for `make multi'.
70
71	* src/autofit/afshaper.c: Include FT_ADVANCE_H, to use
72	FT_Get_Advance() in it.
73	* src/sfnt/ttcmap.c: Include FT_SERVICE_POSTSCRIPT_CMAPS_H
74	to use PS_Unicodes in it, also include `ttpost.h' to use
75	tt_face_get_ps_name() in it.
76
772017-09-11  Azzuro  <azzuro@team-mediaportal.com>
78
79	[build] Improve builds with different MS Visual Studio versions.
80
81	* builds/windows/vc2010/freetype.vcxproj: Switch platform toolset
82	according to the Visual Studio version.
83
842017-09-11  Werner Lemberg  <wl@gnu.org>
85
86	* src/sfnt/ttkern.c (tt_face_load_kern): Reject format 2 tables.
87
88	Reported by Behdad.
89
902017-09-09  Werner Lemberg  <wl@gnu.org>
91
92	[autofit] Improve communication with ftgrid.
93
94	* src/autofit/afhints.c (af_glyph_hints_get_segment_offset):
95	Provide values in font units.
96
972017-09-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
98
99	[base] Remove a check for resource ID in the resource fork driver.
100
101	LastResort.dfont has a marginal resource ID 0xFFFF for sfnt
102	resource.  Inside Macintosh: More Macintosh Toolbox, `Resource IDs'
103	(1-46), tells that some IDs are reserved and should not be used.
104	FreeType2 just uses resource ID to sort the fragmented resource.
105	To accept the marginal fonts, the checking is removed.
106
107	* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove res_id
108	validity check, fix a trace message format.
109
1102017-09-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
111
112	[sfnt, truetype] Register the tags for marginal fonts.
113
114	The first 32bit of standard TrueType variants is 0x00010000,
115	`OTTO', `ttcf', `true' or `typ1'.  2 marginal dfonts on legacy Mac
116	OS X, Keyboard.dfont and LastResort.dfont, have the sfnt resources
117	starting 0xA5 followed by `kbd' or `lst'.  Considering the following
118	data could be parsed as conventional TrueType fonts, the header
119	checking is updated to allow these tags.  It seems that recent Mac
120	OS X has already switched to normal TTF for these fonts.
121
122	See the discussion at
123	http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3931.0
124
125	* include/freetype/tttags.h (TTAG_0xA5kbd, TTAG_0xA5lst): New header
126	tags for Keyboard.dfont and LastResort.dfont.
127	* src/sfnt/sfobjs.c (sfnt_open_font): Accept the sfnt resource
128	starts with TTAG_0xA5kbd or TTAG_0xA5lst.
129	* src/truetype/ttobjs.c (tt_face_init): Accept the face with the
130	format tag is TTAG_0xA5kbd or TTAG_0xA5lst.
131
1322017-09-05  Werner Lemberg  <wl@gnu.org>
133
134	Fix multiple calls of `FT_Bitmap_Convert'.
135
136	The documentation of `FT_Bitmap_Convert' says that multiple calls do
137	proper reallocation of the target FT_Bitmap object.  However, this
138	failed for the sequence
139
140	  non-empty bitmap
141	  empty bitmap
142	  non-empty bitmap
143
144	Reason was that `FT_Bitmap_Convert' only reallocated the bitmap
145	buffer if it became too small; it didn't make the buffer smaller.
146	For an empty bitmap following a non-empty one, only the buffer
147	dimension got set to zero, without deallocation.  If the next call
148	was a non-empty buffer again, an assertion in `ft_mem_qrealloc' was
149	triggered.
150
151	* src/base/ftbitmap.c (FT_Bitmap_Convert): Always reallocate target
152	buffer to the correct size.
153
154	* docs/CHANGES: Document it.
155
1562017-09-05  Werner Lemberg  <wl@gnu.org>
157
158	[bdf] Fix size and resolution handling.
159
160	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use `SIZE' values if
161	`POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties are
162	missing.
163
164	* docs/CHANGES: Document it.
165
1662017-08-25  Alexei Podtelezhnikov  <apodtele@gmail.com>
167
168	Swap `ALLOC_MULT' arguments (#51833).
169
170	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Updated.
171	* src/winfonts/winfnt.c (FNT_Load_Glyph): Updated.
172	* src/raster/ftrend1.c (ft_raster1_render): Updated.
173
1742017-08-23  Werner Lemberg  <wl@gnu.org>
175
176	[sfnt] Fix clang compilation (#51788).
177
178	* src/sfnt/pngshim.c (premultiply_data): Use vectors instead of
179	scalars.
180	(vector_shuffle): New macro to take care of a different built-in
181	function name on clang.
182
1832017-08-22  Werner Lemberg  <wl@gnu.org>
184
185	[base] Don't zero out allocated memory twice (#51816).
186
187	Patch applied from bug report.
188
189	* src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to
190	avoid unnecessary overhead.
191
1922017-08-22  Werner Lemberg  <wl@gnu.org>
193
194	[truetype] Integer overflow.
195
196	Changes triggered by
197
198	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3107
199
200	* src/truetype/ttinterp.c (Ins_MDRP, Ins_MIRP, Ins_ALIGNPTS): Use
201	NEG_LONG.
202
2032017-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
204
205	[sfnt] Avoid synthetic unicode for symbol fonts with PUA.
206
207	Reported as
208
209	  https://bugs.chromium.org/p/chromium/issues/detail?id=754574
210
211	* src/sfnt/sfobjs.c (sfnt_load_face): Check for FT_ENCODING_MS_SYMBOL.
212
2132017-08-16  Werner Lemberg  <wl@gnu.org>
214
215	* src/sfnt/pngshim.c (premultiply_data): Fix compiler warnings.
216
2172017-08-15  Behdad Esfahbod  <behdad@behdad.org>
218
219	[sfnt] Speed up PNG image loading.
220
221	This reduces the overhead of `premultiply_data' by 60%.
222
223	* src/sfnt/pngshim.c (premultiply_data): Provide code which uses
224	gcc's (and clang's) `vector_byte' attribute to process 4 pixels at a
225	time.
226
2272017-08-11  Werner Lemberg  <wl@gnu.org>
228
229	[sfnt, truetype] Improve handling of missing sbits.
230
231	Requested by Behdad.
232
233	Modern bitmap-only SFNTs like `NotoColorEmoji.ttf' don't contain
234	entries in the bitmap strike(s) for empty glyphs.  Instead, they
235	rely that a space glyph gets created from the font's metrics data.
236	This commit makes FreeType behave accordingly.
237
238	* include/freetype/fterrdef.h (FT_Err_Missing_Bitmap): New error
239	code.
240
241	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_image): Change error codes
242	to make a distinction between a missing bitmap in a composite and a
243	simple missing bitmap.
244
245	* src/truetype/ttgload.c (TT_Load_Glyph): For a missing bitmap (in a
246	bitmap-only font), synthesize an empty bitmap glyph if metrics are
247	available.
248
2492017-08-10  Werner Lemberg  <wl@gnu.org>
250
251	[base] Minor API improvement for default variation axis setting.
252
253	* src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
254	FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
255	FT_Set_Var_Blend_Coordinates): Allow coords==NULL if num_coords==0.
256
257	* docs/CHANGES: Updated.
258
2592017-08-08  Werner Lemberg  <wl@gnu.org>
260
261	[psnames] Really fix issue #49949.
262
263	We now use a separate preprocessor macro to handle both definition
264	and declaration of the glyph name arrays.
265
266	* src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro.
267
268	* src/tools/glnames.py (StringTable::dump,
269	StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'.
270	(dump_encoding): Ditto.
271	(main): Use `wb' mode for writing the output file, which works on
272	Windows also.
273
274	* src/psnames/pstables.h: Regenerated.
275
2762017-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
277
278	[smooth] Harmony LCD rendering.
279
280	This is a new technology for LCD-optimized rendering. It capitalizes
281	on the fact that each color channel grid is shifted by a third of a
282	pixel.  Therefore it is logical to render 3 separate monochrome
283	bitmaps shifting the outline by 1/3 pixel, and then combine them.
284	Importantly, the resulting output does not require additional LCD
285	filtering.
286
287	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
288	[!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized
289	rendering.
290
291	* include/freetype/ftlcdfil.h, include/freetype/freetype.h,
292	include/freetype/config/ftoption.h, devel/ftoption.h: Updated
293	documentation.
294
2952017-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
296
297	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up.
298
2992017-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
300
301	* src/sfnt/ttpost.c (format): Use otspec-compliant versions.
302
3032017-08-05  Werner Lemberg  <wl@gnu.org>
304
305	[truetype] Integer overflow.
306
307	Reported as
308
309	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2868
310
311	* src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG.
312
3132017-08-05  Werner Lemberg  <wl@gnu.org>
314
315	[base, truetype] New function `FT_Get_Var_Axis_Flags'.
316
317	The reserved `flags' field got a value in OpenType version 1.8.2;
318	unfortunately, the public `FT_Var_Axis' structure misses the
319	corresponding element.  Since we can't add a new field, we add an
320	access function.
321
322	* src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function.
323
324	* include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro.
325	Updated.
326
327	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory
328	of `mmvar' to hold axis flags.
329	Fill the axis flags array.
330
331	* docs/CHANGES: Updated.
332
3332017-08-03  Nikolaus Waxweiler  <madigens@gmail.com>
334
335	[truetype] Fix metrics of B/W hinting in v40 mode.
336
337	Phantom points are now saved outside v40 backwards compatibility
338	mode.  This fixes the jumping glyphs when switching between v35 and
339	v40 monochrome mode.
340
341	* src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic.
342
3432017-08-03  Nikolaus Waxweiler  <madigens@gmail.com>
344
345	[truetype] Do not set any ClearType flags in v40 monochrome mode.
346
347	This fixes weird behavior of instructions that resulted in rendering
348	differences between v35 and v40 in monochrome mode, e.g., in
349	`timesbi.ttf'.
350
351	* src/truetype/ttinterp.c (Ins_GETINFO)
352	[TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check
353	`subpixel_hinting_lean'.
354
3552017-08-01  Werner Lemberg  <wl@gnu.org>
356
357	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko.
358
3592017-08-01  Behdad Esfahbod  <behdad@behdad.org>
360
361	[truetype] Fix loading of named instances.
362
363	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position
364	while loading the `avar' table.
365
3662017-08-01  Werner Lemberg  <wl@gnu.org>
367
368	[sfnt, truetype] Minor adjustments for OpenType 1.8.2.
369
370	* src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now
371	(tighter) limits.
372
373	* src/truetype/ttgload.c (load_truetype_glyph): The new OpenType
374	version explicitly allows all negative values for the number of
375	contours if we have a composite glyph (this is for better backwards
376	compatibility I guess), but it still recommends value -1.
377
3782017-07-26  Werner Lemberg  <wl@gnu.org>
379
380	[cff] Integer overflow.
381
382	Reported as
383
384	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2738
385
386	* src/cff/cf2hints.c (cf2_glyphpath_computeOffset,
387	cf2_glyphpath_curveTo): Use ADD_INT32.
388
3892017-07-13  Werner Lemberg  <wl@gnu.org>
390
391	[base] Fix memory leak.
392
393	Reported as
394
395	  https://bugs.chromium.org/p/chromium/issues/detail?id=738362
396
397	* src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case
398	of error.
399
4002017-07-12  Werner Lemberg  <wl@gnu.org>
401
402	[base] Integer overflow.
403
404	Reported as
405
406	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2573
407
408	* src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
409	FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG.
410
4112017-07-12  Werner Lemberg  <wl@gnu.org>
412
413	* src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo.
414
415	Also improve tracing message.
416
417	Problem reported as
418
419	  https://bugs.chromium.org/p/chromium/issues/detail?id=738919
420
4212017-07-07  Werner Lemberg  <wl@gnu.org>
422
423	[cff] Integer overflow.
424
425	Reported as
426
427	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2517
428
429	* src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32.
430
4312017-07-05  Werner Lemberg  <wl@gnu.org>
432
433	* src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning.
434
4352017-07-05  Werner Lemberg  <wl@gnu.org>
436
437	* src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395).
438
4392017-07-04  Werner Lemberg  <wl@gnu.org>
440
441	[truetype] Prevent address overflow (#51365).
442
443	* src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard.
444
4452017-07-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
446
447	* src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code.
448
4492017-07-03  Werner Lemberg  <wl@gnu.org>
450
451	[truetype] Integer overflow.
452
453	Reported as
454
455	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2455
456
457	* src/truetype/ttinterp.c (Ins_SCFS): Use SUB_LONG.
458
4592017-07-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
460
461	* src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name.
462
4632017-06-28  Ben Wagner  <bungeman@google.com>
464
465	Avoid Microsoft compiler warnings (#51331).
466
467	While clang's sanitizer recommends a cast to unsigned for safe
468	negation (to handle -INT_MIN), both MSVC and Visualc emit warning
469	C4146 if an unsigned value gets negated.
470
471	* include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32),
472	src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a
473	subtraction.
474
4752017-06-27  Werner Lemberg  <wl@gnu.org>
476
477	* src/cff/cffparse.c (do_fixed): Fix typo.
478
479	Spotted by chris <chris@gcjd.org>.
480
4812017-06-27  Werner Lemberg  <wl@gnu.org>
482
483	[truetype] Integer overflows.
484
485	Reported as
486
487	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2384
488	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2391
489
490	* src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use
491	NEG_LONG.
492
493	* src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG.
494
4952017-06-24  Werner Lemberg  <wl@gnu.org>
496
497	[truetype] Integer overflows.
498
499	Reported as
500
501	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2364
502
503	* src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG.
504
5052017-06-22  Werner Lemberg  <wl@gnu.org>
506
507	[cff, truetype] Integer overflows.
508
509	Reported as
510
511	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2323
512	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2328
513
514	* src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and
515	SUB_INT32.
516
517	* src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG.
518
5192017-06-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
520
521	[sfnt] Synthesize a Unicode charmap if one is missing.
522
523	* src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it.
524	* src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init,
525	tt_cmap_unicode_done, tt_cmap_unicode_char_index,
526	tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement
527	synthetic Unicode charmap class.
528	(tt_get_cmap_info): Make sure the callback is available.
529
530	* src/sfnt/sfobjs.c (sfnt_load_face)
531	[FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing,
532	synthesize one.
533
534	* include/freetype/config/ftoption.h: Document it.
535	* devel/ftoption.h: Ditto.
536
5372017-06-20  Tony Theodore  <tonyt@logyst.com>
538
539	Fix pkg-config in freetype-config for cross-compiling (#51274).
540
541	* builds/unix/unix-def.in (PKG_CONFIG): New variable.
542	(freetype-config): Use it in sed expression.
543
544	* builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/.
545
5462017-06-20  Werner Lemberg  <wl@gnu.org>
547
548	[cff, truetype] Integer overflows.
549
550	Reported as
551
552	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2300
553	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2313
554
555	* src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32.
556
557	* src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS.
558
5592017-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
560
561	[base, smooth] LCD filtering cleanups.
562
563	* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
564	Clean up, start filtering from the bottom-left origin.
565
566	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.
567
5682017-06-16  Werner Lemberg  <wl@gnu.org>
569
570	[truetype] Integer overflows.
571
572	Reported as
573
574	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2270
575	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2276
576
577	* src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use
578	ADD_LONG and SUB_LONG.
579
5802017-06-15  Werner Lemberg  <wl@gnu.org>
581
582	[bdf, cff] Integer overflows.
583
584	Reported as
585
586	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2244
587	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2261
588
589	* src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with
590	direct code to avoid value negation.
591
592	* src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and
593	ADD_INT32.
594
5952017-06-13  Werner Lemberg  <wl@gnu.org>
596
597	* src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding.
598
599	FreeType only sets a default active encoding for Unicode.
600
6012017-06-13  Werner Lemberg  <wl@gnu.org>
602
603	[cff, truetype] Integer overflows.
604
605	Reported as
606
607	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2216
608	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2218
609
610	* src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32.
611
612	* src/truetype/ttinterp.c (Ins_IP): Use SUB_LONG.
613
6142017-06-11  Werner Lemberg  <wl@gnu.org>
615
616	[cff] Integer overflows.
617
618	Reported as
619
620	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2200
621	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2210
622
623	* src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and
624	ADD_INT32.
625
626	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO>: Use
627	ADD_INT32.
628
6292017-06-10  Werner Lemberg  <wl@gnu.org>
630
631	[truetype] Fix TT_Set_Var_Design.
632
633	Reported by Nikolaus Waxweiler <madigens@gmail.com>.
634
635	* src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the
636	case where we have less input coordinates than axes.
637
6382017-06-10  Werner Lemberg  <wl@gnu.org>
639
640	* src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo.
641
642	Bug introduced 2017-05-28.
643
6442017-06-09  Werner Lemberg  <wl@gnu.org>
645
646	[cff, truetype] Integer overflows.
647
648	Reported as
649
650	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144
651	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151
652	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153
653	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173
654	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186
655
656	* src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32.
657
658	* src/truetype/ttinterp.c (Round_None, Round_To_Grid,
659	Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid,
660	Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG,
661	SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG,
662	FT_PAD_ROUND_LONG
663	(Ins_SxVTL, Ins_MIRP): Use SUB_LONG.
664	(_iup_worker_shift): Use SUB_LONG and ADD_LONG.
665
6662017-06-09  Werner Lemberg  <wl@gnu.org>
667
668	Provide more macros for flooring, ceiling, and rounding.
669
670	These versions don't produce run-time errors due to integer
671	overflow.
672
673	* include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
674	(FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
675	FT_PIX_CEIL_LONG): New macros.
676	(FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
677	FT_PIX_CEIL_INT32): New macros.
678
6792017-06-09  Werner Lemberg  <wl@gnu.org>
680
681	Remove unused macros.
682
683	* include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT,
684	NEG_INT): Deleted.
685
6862017-06-09  Werner Lemberg  <wl@gnu.org>
687
688	*/*: Remove `OVERFLOW_' prefix.
689
690	This increases readability.
691
6922017-06-07  Werner Lemberg  <wl@gnu.org>
693
694	[cff, truetype] Integer overflows.
695
696	Reported as
697
698	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2133
699	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2137
700
701	* src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32.
702
703	* src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use
704	OVERFLOW_SUB_LONG.
705
7062017-06-06  Werner Lemberg  <wl@gnu.org>
707
708	[cff] Integer overflows.
709
710	Reported as
711
712	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2109
713	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2110
714	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2122
715
716	* src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
717
718	* src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else
719	branches.
720
7212017-06-05  Werner Lemberg  <wl@gnu.org>
722
723	[cff] Integer overflow.
724
725	Reported as
726
727	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2089
728
729	* src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32.
730
7312017-06-04  Werner Lemberg  <wl@gnu.org>
732
733	[cff, truetype] Integer overflows.
734
735	Reported as
736
737	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2075
738	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2088
739
740	* src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32.
741
742	* src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG,
743	OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG.
744
7452017-06-03  Werner Lemberg  <wl@gnu.org>
746
747	[base, cff, truetype] Integer overflows.
748
749	Reported as
750
751	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060
752	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062
753	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063
754	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068
755
756	* src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
757	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
758
759	* src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c
760	(cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32.
761
762	* src/truetype/ttgload.c (compute_glyph_metrics): User
763	OVERFLOW_SUB_LONG.
764
765	* src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig,
766	Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X,
767	Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use
768	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
769
7702017-06-03  Werner Lemberg  <wl@gnu.org>
771
772	* builds/unix/freetype-config.in: Fix pkg-config test (#51162).
773
774	Patch directly taken from bug report.
775
7762017-06-03  Werner Lemberg  <wl@gnu.org>
777
778	[bdf] Synchronize sanity checks with pcf driver.
779
780	Reported as
781
782	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2054
783	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2058
784
785	* src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent.
786	Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
787	RESOLUTION_Y properties.
788
7892017-06-03  Werner Lemberg  <wl@gnu.org>
790
791	[cff, truetype] Integer overflows.
792
793	Reported as
794
795	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2047
796	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2057
797
798	* src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32.
799
800	* src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG.
801	(Ins_SUB): Use OVERFLOW_SUB_LONG.
802	(Ins_NEG): Use NEG_LONG.
803
8042017-06-03  Werner Lemberg  <wl@gnu.org>
805
806	ftcalc.h: Avoid left-shift of negative numbers.
807
808	Reported as
809
810	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2055
811
812	* include/freetype/internal/ftcalc.h (INT_TO_F26DOT6,
813	INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication.
814
8152017-06-02  Werner Lemberg  <wl@gnu.org>
816
817	[cff] Even more integer overflows.
818
819	Reported as
820
821	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2046
822
823	* src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use
824	OVERFLOW_ADD_INT32.
825
8262017-06-02  Werner Lemberg  <wl@gnu.org>
827
828	[cff] More integer overflows.
829
830	Reported as
831
832	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2032
833
834	* src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
835
8362017-06-02  Werner Lemberg  <wl@gnu.org>
837
838	[bdf] Don't left-shift negative numbers.
839
840	Reported as
841
842	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2031
843
844	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication.
845
8462017-06-02  Werner Lemberg  <wl@gnu.org>
847
848	[bdf] Fix integer scanning routines.
849
850	Reported as
851
852	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2029
853
854	* src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos):
855	Stop scanning if result would overflow.
856
8572017-06-02  Werner Lemberg  <wl@gnu.org>
858
859	[cff] Fix integer overflows.
860
861	Reported as
862
863	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2027
864	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2028
865
866	* src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c
867	(cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32.
868
8692017-06-01  Werner Lemberg  <wl@gnu.org>
870
871	[smooth] Some 32bit integer overflow run-time errors.
872
873	* src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG,
874	OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros.
875	[!STANDALONE]: Include FT_INTERNAL_CALC_H.
876	(gray_render_cubic): Use those macros where appropriate.
877
8782017-06-01  Werner Lemberg  <wl@gnu.org>
879
880	* src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'.
881
8822017-06-01  Werner Lemberg  <wl@gnu.org>
883
884	[psaux] 32bit integer overflow tun-time errors (#46149).
885
886	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use
887	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate.
888
8892017-06-01  Werner Lemberg  <wl@gnu.org>
890
891	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again.
892
893	Problem reported by Marek Kašík <mkasik@redhat.com>.
894
895	The problematic font that exceeds the old limit is Padauk-Bold,
896	version 3.002, containing bytecode generated by a buggy version of
897	ttfautohint.
898
8992017-05-31  Werner Lemberg  <wl@gnu.org>
900
901	[cff] 32bit integer overflow run-time errors 2/2 (#46149).
902
903	This commit handles the new engine.
904
905	* include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32,
906	OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG,
907	NEG_INT32): New macros.
908
909	* src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32.
910
911	* src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init,
912	cf2_hintmap_map, cf2_glyphpath_hintPoint,
913	cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset,
914	cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use
915	OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and
916	NEG_INT32 where appropriate.
917
918	* src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend,
919	cf2_interpT2CharString): Ditto.
920	Also add some other code where needed to avoid overflow.
921
9222017-05-30  Werner Lemberg  <wl@gnu.org>
923
924	[cff] 32bit integer overflow run-time errors 1/2 (#46149).
925
926	This commit handles the old engine.
927
928	* src/cff/cffgload.c: Include FT_INTERNAL_CALC_H.
929	(cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and
930	OVERFLOW_SUB_LONG where needed.
931
932	* src/cff/cffparse.c: Include FT_INTERNAL_CALC_H.
933	(power_ten_limits): New static array.
934	(do_fixed): Use it to prevent multiplication overflow.
935	(cff_parser_run): Use OVERFLOW_ADD_LONG.
936
9372017-05-30  Werner Lemberg  <wl@gnu.org>
938
939	[psaux] Correctly handle sequences of multiple number signs.
940
941	* src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero
942	if we encounter more than a single sign.
943
9442017-05-29  Werner Lemberg  <wl@gnu.org>
945
946	[pcf] 32bit integer overflow run-time errors (#46149).
947
948	* src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for
949	`fontAscent' and `fontDescent'.
950	(pcf_load_font): Add sanity checks for global height.
951	Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
952	RESOLUTION_X, and RESOLUTION_Y properties.
953
9542017-05-29  Werner Lemberg  <wl@gnu.org>
955
956	Handle some integer overflow run-time errors (#46149, #48979).
957
958	This commit (mainly for 32bit CPUs) is the first of a series of
959	similar commits to handle known integer overflows.  Basically, all
960	of them are harmless, since they affect rendering of glyphs only,
961	not posing security threats.  It is expected that fuzzying will show
962	up more overflows, to be fixed in due course.
963
964	The idea is to mark places where overflows can occur, using macros
965	that simply cast to unsigned integers, because overflow arithmetic
966	is well defined in this case.  Doing so suppresses run-time errors
967	of sanitizers without adding computational overhead.
968
969	* include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT,
970	OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG,
971	OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros.
972
973	* src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply,
974	FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled,
975	ft_corner_orientation): Use new macros.
976
977	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros.
978
9792017-05-28  Werner Lemberg  <wl@gnu.org>
980
981	* include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove.
982
983	This macro is not used.
984
9852017-05-28  Werner Lemberg  <wl@gnu.org>
986
987	[cff] s/cf2_floatToFixed/cf2_doubleToFixed/.
988
989	The new name better describes what the macro actually does;
990	additionally, we don't need a trailing `f' for literals (there was
991	only a single such instance in the code, but this caused a clang
992	warning because the macro itself uses `double' literals).
993
994	* src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h,
995	src/cff/cf2font.c, src/cff/cf2hints.c: Updated.
996
9972017-05-28  Werner Lemberg  <wl@gnu.org>
998
999	Fix negation of INT_MIN and LONG_MIN (#46149).
1000
1001	* src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned
1002	value, to be used as the result.
1003	(FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix,
1004	FT_Vector_NormLen): Updated.
1005
10062017-05-27  Werner Lemberg  <wl@gnu.org>
1007
1008	[truetype] Fix handling of design coordinates (#51127).
1009
1010	* src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design
1011	coordinates if we have to create the `blends->coord' array.
1012	(TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance
1013	coordinates if no instance is selected yet.
1014
10152017-05-24  Werner Lemberg  <wl@gnu.org>
1016
1017	[bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII).
1018
1019	Problem reported by Marek Kašík <mkasik@redhat.com>, cf.
1020
1021	  https://bugzilla.redhat.com/show_bug.cgi?id=1451795
1022
1023	* src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c
1024	(PCF_Face_Init): Implement it.
1025
10262017-05-20  Nikolaus Waxweiler  <madigens@gmail.com>
1027
1028	[truetype] Always use interpreter v35 for B/W rendering (#51051).
1029
1030	* src/truetype/ttgload.c (tt_loader_init)
1031	[TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust
1032	`subpixel_hinting_lean', `grayscale_cleartype', and
1033	`vertical_lcd_lean' accordingly.
1034
1035	* src/truetype/ttinterp.c (Ins_GETINFO): Updated.
1036	(TT_RunIns): Update `backward_compatibility' flag.
1037
10382017-05-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
1039
1040	[smooth] Implement minimal dynamic padding for LCD filtering.
1041
1042	Extra bitmap padding for LCD filtering depends on the filter.  The
1043	default 5-tap filter needs 2 extra subpixels.  The light 3-tap filter
1044	needs only 1 extra subpixel.  This space could be already available
1045	due to rounding.  In order to optimize the padding, we now expand
1046	CBox for the given filter weights before rounding.
1047
1048	This change breaks current Skia (and Firefox).
1049
1050	* include/freetype/internal/ftobjs.h (FT_LibraryRec)
1051	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field.
1052
1053	* src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights,
1054	FT_Library_SetLcdFilter): Remove `lcd_extra' initializations.
1055
1056	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic
1057	LCD padding.
1058
10592017-05-15  Werner Lemberg  <wl@gnu.org>
1060
1061	[sfnt] Return proper scaling values for SBIX bitmaps.
1062
1063	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1064
1065	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Implement it.
1066
10672017-05-15  Werner Lemberg  <wl@gnu.org>
1068
1069	[truetype] Fix error handling for embedded bitmaps.
1070
1071	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
1072
1073	* src/truetype/ttgload.c (TT_Load_Glyph)
1074	[TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not
1075	scalable.
1076
10772017-05-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1078
1079	[autofit] Make autohint warping NORMAL option.
1080
1081	This moves warping option from LIGHT to NORMAL mode.  This makes LIGHT
1082	truly void of hinting in x-direction, with left side bearing never
1083	changed and right side bearing only altered by advance rounding.
1084	Therefore, LIGHT is now ready to return fractional advance.  As a
1085	NORMAL option, warping substitutes normal hinting.
1086
1087	* src/autofit/afcjk.c (af_cjk_hints_apply): Updated.
1088	* src/autofit/aflatin.c (af_latin_hints_apply): Updated.
1089	* src/autofit/aflatin2.c (af_latin2_hints_apply): Updated.
1090
1091	* src/autofit/afloader.c (af_loader_load_glyph): Handle warping
1092	phantom points as normal.
1093
10942017-05-14  Werner Lemberg  <wl@gnu.org>
1095
1096	Remove remnants of raster pool.
1097
1098	* include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove
1099	`raster_pool' and `raster_pool_size' fields.
1100
1101	* src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c
1102	(ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated.
1103
11042017-05-13  Werner Lemberg  <wl@gnu.org>
1105
1106	* Version 2.8 released.
1107	=======================
1108
1109
1110	Tag sources with `VER-2-8'.
1111
1112	* docs/VERSION.TXT: Add entry for version 2.8.
1113	* docs/CHANGES: Updated.
1114
1115	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
1116	builds/windows/vc2005/index.html,
1117	builds/windows/vc2008/freetype.vcproj,
1118	builds/windows/vc2008/index.html,
1119	builds/windows/vc2010/freetype.vcxproj,
1120	builds/windows/vc2010/index.html,
1121	builds/windows/visualc/freetype.dsp,
1122	builds/windows/visualc/freetype.vcproj,
1123	builds/windows/visualc/index.html,
1124	builds/windows/visualce/freetype.dsp,
1125	builds/windows/visualce/freetype.vcproj,
1126	builds/windows/visualce/index.html,
1127	builds/wince/vc2005-ce/freetype.vcproj,
1128	builds/wince/vc2005-ce/index.html,
1129	builds/wince/vc2008-ce/freetype.vcproj,
1130	builds/wince/vc2008-ce/index.html: s/2.7.1/2.8/, s/271/28/.
1131
1132	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 8.
1133	(FREETYPE_PATCH): Set to 0.
1134
1135	* builds/unix/configure.raw (version_info): Set to 20:0:14.
1136	* CMakeLists.txt (VERSION_MINOR): Set to 8.
1137	(VERSION_PATCH): Set to 0.
1138
11392017-05-12  Hin-Tak Leung  <htl10@users.sourceforge.net>
1140
1141	Fix `FT_UINT_TO_POINTER' macro for Windows.
1142
1143	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
1144	include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER) [_WIN64]:
1145	Fix definition.
1146
11472017-05-11  Sascha Brawer  <sascha@google.com>
1148	    Werner Lemberg  <wl@gnu.org
1149
1150	[autofit] Add support for Chakma script.
1151
1152	* src/autofit/afblue.dat: Add blue zone data for Chakma.
1153	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1154
1155	* src/autofit/afscript.h: Add Chakma standard character.
1156
1157	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data.
1158
11592017-05-10  Sascha Brawer  <sascha@google.com>
1160	    Werner Lemberg  <wl@gnu.org
1161
1162	[autofit] Add support for Kayah Li script.
1163
1164	* src/autofit/afblue.dat: Add blue zone data for Kayah Li.
1165	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1166
1167	* src/autofit/afscript.h: Add Kayah Li standard character.
1168
1169	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Kayah Li data.
1170
11712017-05-10  Sascha Brawer  <sascha@google.com>
1172	    Werner Lemberg  <wl@gnu.org
1173
1174	[autofit] Add support for Bamum script.
1175
1176	* src/autofit/afblue.dat: Add blue zone data for Bamum.
1177	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1178
1179	* src/autofit/afscript.h: Add Bamum standard character.
1180
1181	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Bamum data.
1182
11832017-05-10  Sascha Brawer  <sascha@google.com>
1184	    Werner Lemberg  <wl@gnu.org
1185
1186	[autofit] Add support for Saurashtra script.
1187
1188	* src/autofit/afblue.dat: Add blue zone data for Saurashtra.
1189	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1190
1191	* src/autofit/afscript.h: Add Saurashtra standard character.
1192
1193	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Saurashtra
1194	data.
1195
11962017-05-10  Sascha Brawer  <sascha@google.com>
1197	    Werner Lemberg  <wl@gnu.org
1198
1199	[autofit] Add support for Buhid script.
1200
1201	* src/autofit/afblue.dat: Add blue zone data for Buhid.
1202	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1203
1204	* src/autofit/afscript.h: Add Buhid standard character.
1205
1206	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Buhid data.
1207
12082017-05-08  Sascha Brawer  <sascha@google.com>
1209	    Werner Lemberg  <wl@gnu.org
1210
1211	[autofit] Add support for Shavian script.
1212
1213	* src/autofit/afblue.dat: Add blue zone data for Shavian.
1214	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1215
1216	* src/autofit/afscript.h: Add Shavian standard character.
1217
1218	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Shavian data.
1219
12202017-05-08  Sascha Brawer  <sascha@google.com>
1221	    Werner Lemberg  <wl@gnu.org
1222
1223	[autofit] Add support for Vai script.
1224
1225	* src/autofit/afblue.dat: Add blue zone data for Vai.
1226	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1227
1228	* src/autofit/afscript.h: Add Vai standard character.
1229
1230	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Vai data.
1231
12322017-05-08  Sascha Brawer  <sascha@google.com>
1233	    Werner Lemberg  <wl@gnu.org
1234
1235	[autofit] Add support for Osmanya script.
1236
1237	* src/autofit/afblue.dat: Add blue zone data for Osmanya.
1238	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1239
1240	* src/autofit/afscript.h: Add Osmanya standard character.
1241
1242	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Osmanya data.
1243
12442017-05-08  Sascha Brawer  <sascha@google.com>
1245	    Werner Lemberg  <wl@gnu.org
1246
1247	[autofit] Add support for Coptic script.
1248
1249	* src/autofit/afblue.dat: Add blue zone data for Coptic.
1250	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1251
1252	* src/autofit/afscript.h: Add Coptic standard character.
1253
1254	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Coptic data.
1255
12562017-05-08  Sascha Brawer  <sascha@google.com>
1257	    Werner Lemberg  <wl@gnu.org
1258
1259	[autofit] Add support for Carian script.
1260
1261	* src/autofit/afblue.dat: Add blue zone data for Carian.
1262	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1263
1264	* src/autofit/afscript.h: Add Carian standard character.
1265
1266	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Carian data.
1267
12682017-05-07  Werner Lemberg  <wl@gnu.org>
1269
1270	[truetype] Add tricky font `DFGirl-W6-WIN-BF' (from Dynalab).
1271
1272	Reported by Roy Tam <roytam@gmail.com>.
1273
1274	* src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
1275
12762017-05-07  Roy Tam  <roytam@gmail.com>
1277	    Werner Lemberg  <wl@gnu.org>
1278
1279	[truetype] More tricky fonts (mainly from Dynalab).
1280
1281	* src/truetype/ttobjs.c (tt_check_trickyness_family,
1282	tt_check_trickyness_sfnt_ids): Add them.
1283
12842017-05-07  Werner Lemberg  <wl@gnu.org>
1285
1286	[truetype] Add tricky font `DLCHayMedium' (from Dynalab).
1287
1288	Reported by Roy Tam <roytam@gmail.com>.
1289
1290	* src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
1291
12922017-05-03  Werner Lemberg  <wl@gnu.org>
1293
1294	*/*: s/backwards compatibility/backward compatibility/.
1295
12962017-05-03  Sascha Brawer  <sascha@google.com>
1297	    Werner Lemberg  <wl@gnu.org
1298
1299	[autofit] Add support for Unified Canadian Syllabics script.
1300
1301	* src/autofit/afblue.dat: Add blue zone data for Unified Canadian
1302	Syllabics.
1303	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1304
1305	* src/autofit/afscript.h: Add Unified Canadian Syllabics standard
1306	character.
1307
1308	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Unified
1309	Canadian Syllabics data.
1310
13112017-05-03  Sascha Brawer  <sascha@google.com>
1312	    Werner Lemberg  <wl@gnu.org>
1313
1314	[autofit] Add blue-zone support for Sundanese script.
1315
1316	This essentially moves the Sundanese script from the `Indic' hinter
1317	to the `Latin' hinter.
1318
1319	* src/autofit/afblue.dat: Add blue zone data for Sundanese.
1320
1321	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1322
1323	* src/autofit/afscript.h: Add Sundanese standard character and move
1324	data out of AF_CONFIG_OPTION_INDIC block.
1325
1326	* src/autofit/afranges.c: Move Sundanese data out of
1327	AF_CONFIG_OPTION_INDIC block.
1328
1329	* src/autofit/afstyles.h: Update Sundanese data; in particular, use
1330	AF_WRITING_SYSTEM_LATIN.
1331
13322017-05-03  Sascha Brawer  <sascha@google.com>
1333	    Werner Lemberg  <wl@gnu.org
1334
1335	[autofit] Add support for Avestan script.
1336
1337	* src/autofit/afblue.dat: Add blue zone data for Avestan.
1338	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1339
1340	* src/autofit/afscript.h: Add Avestan standard character.
1341
1342	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Avestan data.
1343
13442017-05-02  Behdad Esfahbod  <behdad@behdad.org>
1345
1346	[truetype] Make `IUP' gvar deltas do the same as Apple (#50832).
1347
1348	When points are not touched by gvar interpolation deltas, FreeType
1349	gave a slightly different result than Apple's CoreText.
1350
1351	The OpenType working group will update the specification to document
1352	the following behaviour: If the two points with deltas to the `left'
1353	and `right' of the untouched point have the same coordinate, then
1354	the inferred delta for the untouched point should be zero.
1355
1356	* src/truetype/ttgxvar.c (tt_delta_interpolate): Implement new
1357	behaviour.
1358
13592017-05-02  Werner Lemberg  <wl@gnu.org>
1360
1361	[autofit] Remove `slight' auto-hint mode again.
1362
1363	A poll on freetype-devel favoured changes directly applied to
1364	`light'.
1365
1366	* include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT,
1367	FT_RENDER_MODE_SLIGHT): Removed.
1368
1369	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
1370	(af_latin_hints_init), src/autofit/aflatin2.c
1371	(af_latin2_hints_init): Revert change from 2017-04-22.
1372
1373	* src/autofit/afloader.c (af_loader_load_glyph) Remove references to
1374	FT_RENDER_MODE_SLIGHT.
1375	[AF_CONFIG_OPTION_TT_SIZE_METRICS]: Enable TrueType-like metrics
1376	unconditionally.
1377
1378	* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Revert change from
1379	2017-04-22.
1380
1381	* src/base/ftobjs.c (FT_Load_Glyph): Revert change from 2017-04-22.
1382
1383	* src/pshinter/pshalgo.c (ps_hints_apply): Revert change from
1384	2017-04-22.
1385
1386	* src/smooth/ftsmooth.c (ft_smooth_render): Revert change from
1387	2017-04-22.
1388
1389	* docs/CHANGES: Updated.
1390
13912017-04-30  Werner Lemberg  <wl@gnu.org>
1392
1393	[autofit] Fix metrics computation.
1394
1395	Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de> and
1396	Nikolaus Waxweiler <madigens@gmail.com>.
1397
1398	* src/base/ftobjs.c (FT_Request_Size): Trigger recomputation of
1399	auto-hinter metrics.  Without this change, multiple size changing
1400	calls for a single face fail.
1401
14022017-04-29  Werner Lemberg  <wl@gnu.org>
1403
1404	* src/truetype/ttdriver.c (tt_size_request): Properly check `error'.
1405
1406	Reported by Earnestly <zibeon@googlemail.com> in
1407
1408	  https://lists.nongnu.org/archive/html/freetype/2017-04/msg00031.html
1409
14102017-04-27  Werner Lemberg  <wl@gnu.org>
1411
1412	Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option.
1413
1414	* include/freetype/config/ftoption.h
1415	(AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by
1416	default.
1417
1418	* src/autofit/afloader.c (af_loader_load_glyph): Use
1419	AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code.
1420
14212017-04-26  Werner Lemberg  <wl@gnu.org>
1422
1423	* include/freetype/freetype.h (FT_Render_Mode): Fix order.
1424
1425	This retains backward compatibility.
1426
1427	Noted by Alexei.
1428
14292017-04-22  Werner Lemberg  <wl@gnu.org>
1430
1431	[truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470).
1432
1433	* src/truetype/ttobjs.h (TT_SizeRec): Add field `hinted_metrics' to
1434	hold hinted metrics.
1435	Make `metrics' a pointer so that `tt_glyph_load' can easily switch
1436	between metrics.
1437
1438	* src/truetype/ttdriver.c (tt_size_request): Updated.
1439	(tt_glyph_load): Use top-level metrics if FT_LOAD_NO_HINTING is
1440	used.
1441
1442	* src/truetype/ttgload.c (TT_Hint_Glyph, TT_Process_Simple_Glyph,
1443	TT_Process_Composite_Component, load_truetype_glyph,
1444	compute_glyph_metrics, TT_Load_Glyph): Updated.
1445
1446	* src/truetype/ttinterp.c (TT_Load_Context): Updated.
1447
1448	* src/truetype/ttobjs.c (tt_size_reset): Updated.
1449
1450	* src/truetype/ttsubpix.c (sph_set_tweaks): Updated.
1451
14522017-04-22  Werner Lemberg  <wl@gnu.org>
1453
1454	Add new `slight' auto-hinting mode.
1455
1456	This mode uses fractional advance widths and doesn't scale glyphs
1457	horizontally, only applying vertical scaling and hinting.
1458
1459	At the same time, the behaviour of the `light' auto-hinter gets
1460	restored for backward compatibility: Both vertical and horizontal
1461	scaling is again based on rounded metrics values (this was changed
1462	in a commit from 2017-03-30 as a side effect).  To be more precise,
1463	the behaviour is restored for TrueType fonts only; for other font
1464	formats like Type 1, this is a new feature of the `light' hinting
1465	mode.
1466
1467	* include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT): New macro.
1468	(FT_RENDER_MODE_SLIGHT): New render mode.
1469
1470	* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): Add
1471	`autohint_mode' and `autohint_metrics' fields.
1472
1473	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
1474	(af_latin_hints_init), src/autofit/aflatin2 (af_latin2_hints_init):
1475	Updated.
1476
1477	* src/autofit/afloader.c (af_loader_embolden_glyph_in_slot): Use
1478	`autohint_metrics'.
1479	(af_loader_load_glyph): s/internal/slot_internal/.
1480	Initialize `autohint_metrics' and `autohint_mode' depending on
1481	current auto-hint mode.
1482	Use `autohint_metrics'.
1483	Updated.
1484
1485	* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Updated.
1486
1487	* src/base/ftobjs.c (FT_Load_Glyph): Updated.
1488	(FT_New_Size): Allocate `internal' object.
1489
1490	* src/pshinter/pshalgo.c (ps_hints_apply): Updated.
1491
1492	* src/smooth/ftsmooth.c (ft_smooth_render): Updated.
1493
14942017-04-22  Werner Lemberg  <wl@gnu.org>
1495
1496	Introduce `FT_Size_InternalRec' structure.
1497
1498	We are going to extend this later on.
1499
1500	* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New
1501	structure with a single field `module_data'.
1502
1503	* src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of
1504	`FT_Size' structure.
1505
1506	* src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use
1507	`size->internal->module_data' instead of `size->internal'.
1508
1509	* src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'.
1510	(cff_size_init, cff_size_select, cff_size_request): Use
1511	`size->internal->module_data' instead of `size->internal'.
1512
1513	* src/cif/cidobjs.c (cid_size_done, cid_size_init,
1514	cid_size_request): Use `size->internal->module_data' instead of
1515	`size->internal'.
1516
1517	* src/psaux/psobjs.c (t1_builder_ini): Use
1518	`size->internal->module_data' instead of `size->internal'.
1519
1520	* src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request):
1521	Use `size->internal->module_data' instead of `size->internal'.
1522
15232017-04-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
1524
1525	* src/smooth/ftsmooth.h: Remove unused guards and declaration.
1526
15272017-04-16  Hin-Tak Leung  <htl10@users.sourceforge.net>
1528
1529	Fix tracing messages.
1530
1531	* src/base/ftobjs.c (FT_Face_GetCharVariantIndex,
1532	FT_Face_GetCharVariantIsDefault, FT_Face_GetVariantsOfChar): Print
1533	correct function name.
1534
15352017-04-08  Sascha Brawer  <sascha@google.com>
1536	    Werner Lemberg  <wl@gnu.org
1537
1538	[autofit] Add support for Old Turkic script.
1539
1540	* src/autofit/afblue.dat: Add blue zone data for Old Turkic.
1541	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1542
1543	* src/autofit/afscript.h: Add Old Turkic standard characters.
1544
1545	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Old Turkic data.
1546
15472017-04-08  Sascha Brawer  <sascha@google.com>
1548	    Werner Lemberg  <wl@gnu.org
1549
1550	[autofit] Add support for Gothic script.
1551
1552	* src/autofit/afblue.dat: Add blue zone data for Gothic.
1553	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1554
1555	* src/autofit/afscript.h: Add Gothic standard characters.
1556
1557	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Gothic data.
1558
15592017-04-08  Sascha Brawer  <sascha@google.com>
1560	    Werner Lemberg  <wl@gnu.org
1561
1562	[autofit] Add support for Cypriot script.
1563
1564	* src/autofit/afblue.dat: Add blue zone data for Cypriot.
1565	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1566
1567	* src/autofit/afscript.h: Add Cypriot standard characters.
1568
1569	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Cypriot data.
1570
15712017-04-08  Sascha Brawer  <sascha@google.com>
1572	    Werner Lemberg  <wl@gnu.org
1573
1574	[autofit] Add support for Deseret script.
1575
1576	* src/autofit/afblue.dat: Add blue zone data for Deseret.
1577	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1578
1579	* src/autofit/afscript.h: Add Deseret standard characters.
1580
1581	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Deseret data.
1582
15832017-04-07  Werner Lemberg  <wl@gnu.org>
1584
1585	[autofit] Fix invalid character range description (#50745).
1586
1587	Also reported as
1588
1589	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1034
1590
1591	* src/autofit/afranges.c (af_glag_nonbase_uniranges): Fix typo in
1592	recent commit.
1593
15942017-04-07  Werner Lemberg  <wl@gnu.org>
1595
1596	[ftfuzzer] Fix clang warnings.
1597
1598	* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Add
1599	casts.
1600
16012017-04-06  Sascha Brawer  <sascha@google.com>
1602	    Werner Lemberg  <wl@gnu.org
1603
1604	[autofit] Add support for Lisu script.
1605
1606	* src/autofit/afblue.dat: Add blue zone data for Lisu.
1607	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1608
1609	* src/autofit/afscript.h: Add Lisu standard characters.
1610
1611	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Lisu data.
1612
16132017-04-06  Sascha Brawer  <sascha@google.com>
1614	    Werner Lemberg  <wl@gnu.org
1615
1616	[autofit] Add support for Osage script.
1617
1618	* src/autofit/afblue.dat: Add blue zone data for Osage.
1619	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1620
1621	* src/autofit/afscript.h: Add Osage standard characters.
1622
1623	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Osage data.
1624
16252017-04-06  Sascha Brawer  <sascha@google.com>
1626	    Werner Lemberg  <wl@gnu.org
1627
1628	[autofit] Add support for Glagolitic script.
1629
1630	* src/autofit/afblue.dat: Add blue zone data for Glagolitic.
1631	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1632
1633	* src/autofit/afscript.h: Add Glagolitic standard characters.
1634
1635	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Glagolitic data.
1636
16372017-04-06  Sascha Brawer  <sascha@google.com>
1638	    Werner Lemberg  <wl@gnu.org
1639
1640	[autofit] Add support for Tai Viet script.
1641
1642	* src/autofit/afblue.dat: Add blue zone data for Tai Viet.
1643	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1644
1645	* src/autofit/afscript.h: Add Tai Viet standard characters.
1646
1647	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Tai Viet data.
1648
16492017-04-06  Sascha Brawer  <sascha@google.com>
1650	    Werner Lemberg  <wl@gnu.org
1651
1652	[autofit] Add support for Tifinagh script.
1653
1654	* src/autofit/afblue.dat: Add blue zone data for Tifinagh.
1655	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1656
1657	* src/autofit/afscript.h: Add Tifinagh standard characters.
1658
1659	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Tifinagh data.
1660
16612017-04-06  Sascha Brawer  <sascha@google.com>
1662	    Werner Lemberg  <wl@gnu.org
1663
1664	[autofit] Add support for N'Ko script.
1665
1666	* src/autofit/afblue.dat: Add blue zone data for N'Ko.
1667	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1668
1669	* src/autofit/afscript.h: Add N'Ko standard characters.
1670
1671	* src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data.
1672
16732017-04-06  Sascha Brawer  <sascha@google.com>
1674
1675	[autofit] Add support for Adlam script.
1676
1677	* src/autofit/afblue.dat: Add blue zone data for Adlam.
1678	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1679
1680	* src/autofit/afscript.h: Add Adlam standard characters.
1681
1682	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Adlam data.
1683
16842017-04-06  Sascha Brawer  <sascha@google.com>
1685
1686	[autofit] Add support for Ol Chiki script.
1687
1688	* src/autofit/afblue.dat: Add blue zone data for Ol Chiki.
1689	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
1690
1691	* src/autofit/afscript.h: Add Ol Chiki standard character.
1692
1693	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Ol Chiki data.
1694
16952017-04-03  Werner Lemberg  <wl@gnu.org>
1696
1697	[truetype] Avoid reexecution of `fpgm' and `prep' in case of error.
1698
1699	Reported as
1700
1701	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=981
1702
1703	* include/freetype/fterrdef.h (FT_Err_DEF_In_Glyf_Bytecode): New
1704	error code.
1705
1706	* src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Prohibit execution
1707	of these two opcodes in `glyf' bytecode.
1708	(TT_RunIns): Don't enforce reexecution of `fpgm' and `prep' bytecode
1709	in case of error since function tables can no longer be modified
1710	(due to the changes in `Ins_FDEF' and `Ins_IDEF').  This change can
1711	enormously speed up handling of broken fonts.
1712
17132017-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
1714
1715	[autofit] Disable metrics adjustment for `FT_LOAD_TARGET_LCD'.
1716
1717	* src/autofit/aflatin.c (af_latin_hints_init): Updated.
1718	* src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
1719
17202017-04-01  Werner Lemberg  <wl@gnu.org>
1721
1722	* src/truetype/ttgload.c: Include FT_CONFIG_CONFIG_H.
1723
1724	Otherwise FT_UINT_TO_POINTER might not be defined.
1725
1726	Problem reported by Alexei.
1727
17282017-03-31  Alexei Podtelezhnikov  <apodtele@gmail.com>
1729
1730	[autofit] Disable stem adjustment for `FT_LOAD_TARGET_LCD'.
1731
1732	* include/freetype/freetype.h (FT_LOAD_TARGET_LCD): Document it.
1733	* src/autofit/afcjk.c (af_cjk_hints_init): Updated.
1734	* src/autofit/aflatin.c (af_latin_hints_init): Ditto.
1735	* src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
1736
17372017-03-31  Werner Lemberg  <wl@gnu.org>
1738
1739	* src/cff/cffload.c (cff_font_load): Improve fix from 2017-01-04.
1740
1741	Allow CFFs containing a single font to have an empty font name.
1742
1743	Problem reported by 張俊芝 <418092625@qq.com> in
1744
1745	  https://lists.nongnu.org/archive/html/freetype-devel/2017-03/msg00074.html
1746
17472017-03-30  Werner Lemberg  <wl@gnu.org>
1748
1749	* src/cff/cffparse.h (CFF2_DEFAULT_STACK): Set to 513 also.
1750
1751	Requested by Dave Arnold.
1752
17532017-03-30  Werner Lemberg  <wl@gnu.org>
1754
1755	[truetype] Fix HVAR and VVAR handling (#50678).
1756
1757	* src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle
1758	glyph indices larger than `mapCount' as described in the
1759	specification.
1760
17612017-03-30  Werner Lemberg  <wl@gnu.org>
1762
1763	[truetype] Allow linear scaling for unhinted rendering (#50470).
1764
1765	* src/truetype/ttdriver.c (tt_size_request): Revert change from
1766	2011-07-16; the intended metrics fix seems now to be implemented in
1767	a different way, making the patch unnecessary.  Note that this
1768	change was usually patched out by all major GNU/Linux distributions
1769	due to heavy side effects.
1770
1771	* src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph):
1772	Refer to the metrics of the `TT_Size' object.
1773
17742017-03-29  Werner Lemberg  <wl@gnu.org>
1775
1776	[truetype] Fix thinko related to PS name of default named instance.
1777
1778	* src/truetype/ttgxvar.c (TT_Get_MM_Var): `strid' and `psid' are
1779	name ID values, not indices into the array of name entries.
1780
17812017-03-27  Werner Lemberg  <wl@gnu.org>
1782
1783	[cid, truetype] Don't use `index' as a variable name.
1784
1785	At least on FreeBSD there is a global declaration of `index' in file
1786	`/usr/include/strings.h'.
1787
1788	* src/cff/cf2intrp.c, src/truetype/ttgload.c: s/index/idx/ where
1789	appropriate.
1790
17912017-03-27  Wojciech Mamrak  <wmamrak@gmail.com>
1792
1793	[sfnt] Minor improvement for handling kern tables.
1794
1795	* src/sfnt/ttkern.c (tt_face_load_kern): Don't check for
1796	cross-stream kerning tables since we reject format 2 tables later
1797	on anyways.
1798	Modify code for limit test...
1799	(tt_face_get_kerning): ... to avoid a limit test here.
1800
18012017-03-27  Werner Lemberg  <wl@gnu.org>
1802
1803	[pcf] Fix compiler warnings.
1804
1805	Reported by Alexander Hedges <ahedges@student.ethz.ch>.
1806
1807	* src/pcf/pcfdrivr.c (pcf_property_set, pcf_property_get): Tag
1808	`property_name' with `FT_UNUSED' where necessary.
1809
18102017-03-26  Werner Lemberg  <wl@gnu.org>
1811
1812	* src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard.
1813
1814	Reported as
1815
1816	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941
1817
18182017-03-23  Werner Lemberg  <wl@gnu.org>
1819
1820	[psaux] Better protect `flex' handling.
1821
1822	Reported as
1823
1824	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935
1825
1826	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
1827	<callothersubr>: Since there is not a single flex operator but a
1828	series of subroutine calls, malformed fonts can call arbitrary other
1829	operators after the start of a flex, possibly adding points.  For
1830	this reason we have to check the available number of points before
1831	inserting a point.
1832
18332017-03-23  Werner Lemberg  <wl@gnu.org>
1834
1835	[sfnt] Fix check for default named instance.
1836
1837	* src/sfnt/sfobjs.c (sfnt_init_face): A `fixed' number needs four
1838	bytes, not two...
1839
18402017-03-23  Werner Lemberg  <wl@gnu.org>
1841
1842	Make MM fonts work (again).
1843
1844	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
1845	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Ignore
1846	return value of `ft_face_get_mvar_service'; instead, check whether a
1847	service is actually returned.
1848
18492017-03-20  Werner Lemberg  <wl@gnu.org>
1850
1851	[truetype] Some variable renamings.
1852
1853	Too much local variables holding different structures were called
1854	`metrics'.
1855
1856	* src/truetype/ttdriver.c (tt_size_select): s/metrics/size_metrics/.
1857
1858	* src/truetype/ttgload.c (tt_get_metrics_incr_overrides,
1859	compute_glyph_metrics): s/metrics/incr_metrics/.
1860	(load_sbit_image): s/metrics/sbit_metrics/.
1861
1862	* src/truetype/ttobjs.c (tt_size_run_fpgm): s/metrics/size_metrics/.
1863	(tt_size_init_bytecode): s/metrics/tt_metrics/.
1864	(tt_size_reset): s/metrics/size_metrics/.
1865
18662017-03-20  Werner Lemberg  <wl@gnu.org>
1867
1868	[sfnt] Don't add instances to non-variation fonts.
1869
1870	* src/sfnt/sfobjs.c (sfnt_init_face): Fix it.
1871
18722017-03-20  Werner Lemberg  <wl@gnu.org>
1873
1874	* src/cff/cffgload.c (cff_builder_init): Add safety guard (#50578).
1875
18762017-03-18  Werner Lemberg  <wl@gnu.org>
1877
1878	Introduce FT_UINT_TO_POINTER macro (#50560).
1879
1880	We have to make a separate case for Windows 64's LLP64 data model.
1881
1882	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
1883	include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER): New macro.
1884
1885	* src/truetype/ttgload.c (load_truetype_glyph): Use it.
1886
18872017-03-18  Werner Lemberg  <wl@gnu.org>
1888
1889	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#50573).
1890
1891	The problematic font that exceeds the old limit is Lato-Regular,
1892	version 2.007, containing bytecode generated by a buggy version of
1893	ttfautohint.
1894
18952017-03-18  Werner Lemberg  <wl@gnu.org>
1896
1897	[truetype] Another limitation for bytecode loop count maximum.
1898
1899	Reported as
1900
1901	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=900
1902
1903	* src/truetype/ttinterp.c (TT_RunIns): Limit `loopcall_counter_max'
1904	by number of glyphs also.
1905
19062017-03-18  Werner Lemberg  <wl@gnu.org>
1907
1908	[ftfuzzer] Minor improvement.
1909
1910	* src/tools/ftfuzzer/ftfuzzer.cc: Don't set intermediate axis if
1911	bitmap strikes are active.
1912
19132017-03-18  Werner Lemberg  <wl@gnu.org>
1914
1915	Improve `make multi'.
1916
1917	* src/autofit/aflatin2.c: Guard file with FT_OPTION_AUTOFIT2.
1918
1919	* src/base/ftmac.c: Guard more parts of the file with FT_MACINTOSH.
1920
1921	* src/psaux/afmparse.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
1922
1923	* src/sfnt/pngshim.c: Guard file with
1924	TT_CONFIG_OPTION_EMBEDDED_BITMAPS also.
1925
1926	* src/sfnt/ttbdf.c: Avoid empty source file.
1927	* src/sfnt/ttpost.c: Guard file with
1928	TT_CONFIG_OPTION_POSTSCRIPT_NAMES.
1929	* src/sfnt/ttsbit.c: Guard file with
1930	TT_CONFIG_OPTION_EMBEDDED_BITMAPS.
1931
1932	* src/truetype/ttgxvar.c, src/truetype/ttinterp.c: Avoid empty
1933	source file.
1934
1935	* src/truetype/ttsubpix.c: Guard file with
1936	TT_USE_BYTECODE_INTERPRETER also.
1937
1938	* src/type1/t1afm.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
1939
1940	* src/autofit/autofit.c, src/base/ftbase.c, src/cache/ftcache.c,
1941	src/cff/cff.c, src/cid/type1cid.c, src/gxvalid/gxvalid.c,
1942	src/pcf/pcf.c, src/pfr/pfr.c, src/psaux/psaux.c,
1943	src/pshinter/pshinter.c, src/psnames/psnames.c, src/raster/raster.c,
1944	src/sfnt/sfnt.c, src/smooth/smooth.c, src/truetype/truetype.c,
1945	src/type1/type1.c, src/type42/type42.c: Remove conditionals; sort
1946	entries.
1947
19482017-03-17  Werner Lemberg  <wl@gnu.org>
1949
1950	Fixes for conditional compilation.
1951
1952	* src/autofit/afcjk.c, src/autofit/afindic.c: Include `afcjk.h'
1953	earlier.
1954
1955	* src/sfnt/sfobjs.c (sfnt_init_face): Put `memory' variable into
1956	TT_CONFIG_OPTION_GX_VAR_SUPPORT block.
1957	(sfnt_done_face): Protect some code with
1958	TT_CONFIG_OPTION_GX_VAR_SUPPORT.
1959
1960	* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Remove compiler
1961	warning.
1962
1963	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Put `tmp' variable
1964	into TT_USE_BYTECODE_INTERPRETER block.
1965
1966	(tt_loader_init): Put `error' variable into
1967	TT_USE_BYTECODE_INTERPRETER block.
1968
19692017-03-17  Werner Lemberg  <wl@gnu.org>
1970
1971	Fix preprocessor warning.
1972
1973	* devel/ftoption.h, include/freetype/config/ftoption.h: Test whether
1974	TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined before checking its
1975	value.
1976
19772017-03-17  Werner Lemberg  <wl@gnu.org>
1978
1979	`make multi' fixes; compiler warnings.
1980
1981	* src/base/ftsnames.c: Include FT_INTERNAL_DEBUG_H.
1982
1983	* src/cff/cffobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
1984	FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
1985
1986	* src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
1987	FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
1988	(get_win_string, get_apple_string): Initialize `result'.
1989
19902017-03-17  Dave Arnold <darnold@adobe.com>
1991
1992	[cff] Fix potential bugs in default NDV for CFF2.
1993
1994	* src/cff/cffload.c (cff_blend_build_vector): Explicitly build blend
1995	vector when `lenNDV' is zero; don't rely on zero-init.
1996	Save `lenNDV' as part of cache key even when `lenNDV' is zero.
1997
19982017-03-17  Dave Arnold <darnold@adobe.com>
1999
2000	[cff] Fix CFF2 stack allocation.
2001
2002	* src/cff/cffparse.c (cff_parser_init) add 1 for operator.
2003
20042017-03-16  Werner Lemberg  <wl@gnu.org>
2005
2006	* src/truetype/ttgxvar.c (tt_done_blend): Free `vvar_table'.
2007
2008	Reported as
2009
2010	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=883
2011
20122017-03-15  Werner Lemberg  <wl@gnu.org>
2013
2014	Remove clang compiler warnings (#50548).
2015
2016	* include/freetype/internal/tttypes.h (TT_FaceRec): Make
2017	`var_postscript_prefix_len' unsigned.
2018
2019	* src/autofit/afwarp.c (af_warper_compute_line_best): Remove
2020	redundant assignment.
2021
2022	* src/cff/cffload.c (cff_subfont_load): Add casts.
2023
2024	* src/cff/cffparse.c (cff_parse_blend): Remove redundant assignment.
2025
2026	* src/sfnt/sfdriver.c (fmix32, murmur_hash_3_128): Add `static'
2027	keyword.
2028	Add casts.
2029	(fixed2float): Add cast.
2030	(sfnt_get_var_ps_name): Make `p' always initialized.
2031	Add casts.
2032
2033	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Add casts.
2034
20352017-03-15  Werner Lemberg  <wl@gnu.org>
2036
2037	[ftfuzzer] Limit number of tested faces and instances.
2038
2039	This is inspired by the discussion in and analysis of
2040
2041	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=859
2042
2043	* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Use only
2044	up to 20 face indices.
2045	Use only up to 20 instance indices.
2046
20472017-03-15  Werner Lemberg  <wl@gnu.org>
2048
2049	* src/tools/ftfuzzer/ftfuzzer.cc: Improve readability; formatting.
2050
20512017-03-14  Werner Lemberg  <wl@gnu.org>
2052
2053	[sfnt] Implement PS names for font instances [3/3].
2054
2055	Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
2056
2057	* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
2058	`var_postscript_prefix' and `var_postscript_prefix_len'.
2059
2060	* src/sfnt/sfdriver.c: Include FT_TRUETYPE_IDS_H.
2061	(sfnt_is_alphanumeric): New wrapperfunction for `ft_isalnum'.
2062	(get_win_string, get_apple_string): Remove `const' from return
2063	value.
2064	(MAX_VALUE_DESCRIPTOR_LEN, MAX_PS_NAME_LEN): New macros.
2065	(hexdigits): New array.
2066	(sfnt_get_var_ps_name): New function, implementing Adobe TechNote
2067	5902 to construct a PS name for a variation font instance.
2068	(sfnt_get_ps_name): Call `sfnt_get_var_ps_name' for font instances.
2069
2070	* src/sfnt/sfobjs.c (sfnt_done_face): Updated.
2071
2072	* src/truetype/ttgxvar.c (tt_set_mm_blend): Reset
2073	`face->postscript_name' to trigger recalculation for new instance
2074	parameters.
2075
20762017-03-14  Werner Lemberg  <wl@gnu.org>
2077
2078	[sfnt] Implement PS names for font instances [2/3].
2079
2080	* src/sfnt/sfdriver.c (fix2float) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
2081	New function to find the shortest representation of a 16.16
2082	fractional number.
2083
20842017-03-14  Werner Lemberg  <wl@gnu.org>
2085
2086	[sfnt] Implement PS names for font instances [1/3].
2087
2088	Add 128bit MurmurHash 3 function.
2089
2090	Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
2091
2092	* src/sfnt/sfdriver.c (ROTL32): New macro.
2093	(fmix32, murmur_hash_3_128): New functions.
2094
20952017-03-13  Werner Lemberg  <wl@gnu.org>
2096
2097	[truetype] Ignore invalid MVAR tags.
2098
2099	Reported as
2100
2101	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838
2102
2103	* src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit
2104	warning for invalid tags.
2105	(tt_apply_mvar): Ignore invalid tags.
2106
21072017-03-12  Werner Lemberg  <wl@gnu.org>
2108
2109	[truetype] Store and use design coordinates also.
2110
2111	* include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
2112	Add `normalizedcoords' argument.
2113
2114	* src/truetype/ttgxvar.h (GX_BlendRec): Add `coords' field to store
2115	the design coordinates of the current instance.
2116	Updated.
2117
2118	* src/truetype/ttgxvar.c (TT_Set_MM_Blend): Move functionality to...
2119	(tt_set_mm_blend): ... New function.
2120	Convert data in `normalizedcoords' array to `coords' array on
2121	demand.
2122	(TT_Set_Var_Design): Store argument data in `coords' array.
2123	(TT_Get_Var_Design): Get data from `coords' array.
2124	(tt_get_var_blend): Updated.
2125	(tt_done_blend): Updated.
2126
2127	* src/cff/cffload.c, src/cff/cffload.h (cff_get_var_blend): Updated.
2128
2129	* src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
2130
2131	* src/cff/cffobjs.c (cff_face_init): Updated.
2132
21332017-03-12  Werner Lemberg  <wl@gnu.org>
2134
2135	src/truetype/ttgxvar.[ch]: s/avar_checked/avar_loaded/.
2136
21372017-03-08  Werner Lemberg  <wl@gnu.org>
2138
2139	[sfnt] Another fix for buggy variation fonts.
2140
2141	Reported as
2142
2143	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=759
2144
2145	* src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
2146	instances to zero for `CFF' fonts table, ensure that there is no
2147	`CFF2' present also (which gets priority).
2148
21492017-03-07  Werner Lemberg  <wl@gnu.org>
2150
2151	[sfnt] Improve handling for buggy variation fonts.
2152
2153	Reported as
2154
2155	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=738
2156
2157	* src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
2158	instances to zero for `CFF' fonts table, ensure that there is no
2159	`glyf' table present also (which gets priority).
2160
21612017-03-06  Werner Lemberg  <wl@gnu.org>
2162
2163	[sfnt, truetype] Always provide default instance.
2164
2165	As documented in the OpenType specification, an entry for the
2166	default instance may be omitted in the named instance table.  In
2167	particular this means that even if there is no named instance table
2168	in the font we actually do have a named instance, namely the default
2169	instance.
2170
2171	For consistency, we always want the default instance in our list of
2172	named instances.  If it is missing, we try to synthesize it.
2173
2174	* src/sfnt/sfobjs.c (sfnt_init_face): Check whether the default
2175	instance is in the table of named instances.  Otherwise adjust
2176	number of instances.
2177
2178	* src/truetype/ttgxvar.c: Include FT_TRUETYPE_IDS_H.
2179	(TT_Get_MM_Var): Use `face->root.style_flags' as the number of named
2180	instances.
2181	Sythesize a named instance entry if necessary.
2182	(tt_done_blend): Free `normalized_stylecoords'.
2183
21842017-03-05  Werner Lemberg  <wl@gnu.org>
2185
2186	[sfnt] Remove redundant code.
2187
2188	* src/sfnt/sfobjs.c (sfnt_init_face): Remove second test for
2189	`num_instances', which will always succeed.
2190
21912017-03-04  Werner Lemberg  <wl@gnu.org>
2192
2193	[sfnt] Add `get_name_id' service.
2194
2195	* include/freetype/internal/sfnt.h (TT_Get_Name_ID_Func): New
2196	typedef.
2197	(SFNT_Interface): Add `get_name_id' field.
2198	(FT_DEFINE_SFNT_INTERFACE): Updated.
2199
2200	* src/sfnt/sfdriver.c (search_name_id): Rename to...
2201	(sfnt_get_name_id): ... this.
2202	(sfnt_get_ps_name, sfnt_interface): Updated.
2203
22042017-03-04  Werner Lemberg  <wl@gnu.org>
2205
2206	[truetype] Make `TT_Set_MM_Blend' set named instance index.
2207
2208	* src/truetype/ttgxvar.h (GX_Blend): New array
2209	`normalized_stylecoords'.
2210
2211	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Allocate and fill
2212	`normalized_stylecoords'.
2213	(TT_Set_MM_Blend): Check instance tuple and adjust `face_index'
2214	accordingly.
2215
22162017-03-02  Werner Lemberg  <wl@gnu.org>
2217
2218	[truetype] Split off designer/normalized conversion routines.
2219
2220	* src/truetype/ttgxvar.c (TT_Set_Var_Design): Split off conversion
2221	code designer->normalized coordinates to...
2222	(ft_var_to_normalized): ... New function.
2223	(TT_Get_Var_Design): Split off conversion code normalized->designer
2224	coordinates to...
2225	(ft_var_to_design): ... New function.
2226
22272017-02-28  Werner Lemberg  <wl@gnu.org>
2228
2229	[sfnt] Further generalize `sfnt_get_ps_name'; report invalid data.
2230
2231	* src/sfnt/sfdriver.c (sfnt_ps_map): New array.
2232	(sfnt_is_postscript): New function.
2233	(char_type_func): New typedef.
2234	(get_win_string, get_apple_string): Add argument to specify
2235	character checking function.
2236	Add argument whether argument checking failures should be reported.
2237	Update callers.
2238	(search_name_id): Fix return value.
2239
22402017-02-23  Werner Lemberg  <wl@gnu.org>
2241
2242	[sfnt] Split off another bit of `sfnt_get_ps_name'.
2243
2244	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
2245	functionality into...
2246	(search_name_id): ... New function.
2247
22482017-02-23  Werner Lemberg  <wl@gnu.org>
2249
2250	[sfnt] Modularize `sfnt_get_ps_name'.
2251
2252	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
2253	functionality into...
2254	(IS_WIN, IS_APPLE): ... New macros.
2255	(get_win_string, get_apple_string): ... New functions.
2256
22572017-02-23  Werner Lemberg  <wl@gnu.org>
2258
2259	[truetype] Minor improvement.
2260
2261	* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
2262	load_truetype_glyph): Remove unnecessary tests.
2263
22642017-02-23  Werner Lemberg  <wl@gnu.org>
2265
2266	* include/freetype/internal/tttypes.h (TT_Face): s/isCFF2/is_cff2/.
2267
2268	For orthogonality with other structure field names.
2269
2270	Update all users.
2271
22722017-02-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
2273
2274	* src/smooth/ftgrays.c (gray_hline): Improve code.
2275
22762017-02-20  Dominik Röttsches  <drott@google.com>
2277
2278	Fix some `ttnameid.h' entries (#50313).
2279
2280	* include/freetype/ttnameid.h:
2281	s/TT_MS_LANGID_SPANISH_INTERNATIONAL_SORT/TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT/,
2282	s/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIA/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN/.
2283
22842017-02-20  Werner Lemberg  <wl@gnu.org>
2285
2286	[cff] Finish support for `random' operator.
2287
2288	* src/cff/cfftypes.h (CFF_SubFontRec): Add `random' field.
2289
2290	* src/cff/cffobjs.c: Updated.
2291	(cff_driver_init): Initialize random seed value.
2292
2293	* src/cff/cffload.c (cff_random): New function.
2294	(cff_subfont_load): Add `face' argument.
2295	Update all callers.
2296	Initialize random number generator with a proper seed value.
2297	(cff_font_load): Add `face' argument.
2298	Update all callers.
2299
2300	* src/cff/cffload.h: Updated.
2301
2302	* src/cff/cf2intrp.c (CF2_FIXME): Removed.
2303	(cf2_interpT2CharString) <cf2_escRANDOM>: Implement opcode.
2304
2305	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Don't
2306	initialize random seed value.
2307	<cff_op_random>: Use new random seed framework.
2308
23092017-02-20  Werner Lemberg  <wl@gnu.org>
2310
2311	[cff] Sanitize `initialRandomSeed'.
2312
2313	* src/cff/cffload.c (cff_load_private_dict): Make
2314	`initial_random_seed' value always positive.
2315
23162017-02-20  Werner Lemberg  <wl@gnu.org>
2317
2318	[cff] Introduce `random-seed' property (2/2).
2319
2320	* src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
2321	(open_face): Initialize `face->internal->random_seed'.
2322	(FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.
2323
2324	* src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
2325	property.
2326
23272017-02-20  Werner Lemberg  <wl@gnu.org>
2328
2329	[cff] Introduce `random-seed' property (1/2).
2330
2331	We need this for support of the `random' operator.
2332
2333	* include/freetype/ftcffdrv.h (FT_PARAM_TAG_RANDOM_SEED): New macro.
2334
2335	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
2336	field `random_seed'.
2337
2338	* src/cff/cffobjs.h (CFF_DriverRec): New field `random_seed'.
2339
23402017-02-17  Werner Lemberg  <wl@gnu.org>
2341
2342	Remove clang warnings.
2343
2344	* src/autofit/aflatin.c (af_latin_sort_blue): Add missing `static'
2345	keyword.
2346
2347	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
2348	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
2349	Initialize some variables.
2350
23512017-02-16  Nikolaus Waxweiler  <madigens@gmail.com>
2352	    Werner Lemberg  <wl@gnu.org>
2353
2354	Add face property for stem darkening.
2355
2356	* include/freetype/ftautoh.h (FT_PARAM_TAG_STEM_DARKENING): New
2357	macro.
2358
2359	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
2360	`no_stem_darkening' field.
2361
2362	* src/autofit/afloader.c (af_loader_load_glyph),
2363	src/autofit/afmodule.c (af_property_set): Updated.
2364
2365	* src/base/ftobjs.c: Include FT_AUTOHINTER_H.
2366	(ft_open_face_internal): Updated.
2367	(FT_Face_Properties): Handle FT_PARAM_TAG_STEM_DARKENING.
2368
2369	* src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Updated.
2370
2371	* src/cff/cffdrivr.c (cff_property_set): Updated.
2372
23732017-02-16  Nikolaus Waxweiler  <madigens@gmail.com>
2374	    Werner Lemberg  <wl@gnu.org>
2375
2376	Add face property for LCD filter weights.
2377
2378	* include/freetype/ftlcdfil.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS,
2379	FT_LCD_FILTER_FIVE_TAPS): New macros.
2380	(FT_LcdFiveTapFilter): New typedef.
2381
2382	* include/freetype/ftobjs.h (FT_Face_InternalRec)
2383	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add `lcd_weights' field.
2384	(FT_Bitmap_LcdFilterFunc): Change third argument to weights array.
2385	(ft_lcd_filter_fir): New prototype.
2386	(FT_LibraryRec): Updated.
2387
2388	* src/base/ftlcdfil.c (_ft_lcd_filter_fir): Renamed to...
2389	(ft_lcd_filter_fir): ... this base function.
2390	Updated.
2391	(_ft_lcd_filter_legacy): Updated.
2392	(FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated.
2393
2394	* src/base/ftobjs.c (ft_open_face_internal): Updated.
2395	(FT_Face_Properties): Handle FT_PARAM_TAG_LCD_FILTER_WEIGHTS.
2396
2397	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
2398	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Handle LCD weights from
2399	`FT_Face_Internal'.
2400
24012017-02-14  Nikolaus Waxweiler  <madigens@gmail.com>
2402	    Werner Lemberg  <wl@gnu.org>
2403
2404	Add new function `FT_Face_Properties'.
2405
2406	This commit provides the framework, to be filled with something
2407	useful in the next commits.
2408
2409	* include/freetype/freetype.h (FT_Face_Properties): Declare.
2410
2411	* src/base/ftobjs.c (FT_Face_Properties): New function.
2412
24132017-02-13  Werner Lemberg  <wl@gnu.org>
2414
2415	[autofit] Prevent overlapping blue zones.
2416
2417	Problem reported as
2418
2419	  https://github.com/google/fonts/issues/632
2420
2421	The font in question (Nunito) has values 705 and 713 for the
2422	reference and overshoot values, respectively, of the first blue
2423	zone.  Blue zone 2, however, has value 710 for both the reference
2424	and overshoot.  At 12ppem, reference and overshoot of blue zone 0
2425	becomes 8px, while blue zone 2 becomes 9px.
2426
2427	A peculiarity of this font is that the tops of isolated vertical
2428	stems like `N' have a slight overshoot also.  The auto-hinter tries
2429	to find the nearest blue zone using the *original* coordinates.  For
2430	vertical stems, this is value 713.  For normal horizontal tops like
2431	in character `E', this is value 710.  Since value 713 is mapped to
2432	8px but value 710 to 9px, `N' and similar characters are one pixel
2433	higher than `E', which looks very bad.
2434
2435	This commit sanitizes blue zones to avoid such a behaviour.
2436
2437	* src/autofit/aflatin.c (af_latin_sort_blue): New function.
2438	(af_latin_metrics_init_blues): Sort blue values and remove overlaps.
2439
24402017-02-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
2441
2442	* src/smooth/ftgrays.c (gray_sweep): Improve code.
2443
24442017-02-06  Werner Lemberg  <wl@gnu.org>
2445
2446	[truetype] Implement `VVAR' table support.
2447
2448	* src/truetype/ttgxvar.h (GX_HVarTable): Renamed to...
2449	(GX_HVVarTable): ...This.
2450	(GX_Blend): Add fields for `VVAR' table handling.
2451	Other minor updates.
2452
2453	* src/truetype/ttgxvar.c (ft_var_load_hvar): Renamed to...
2454	(ft_var_load_hvvar): ...This.
2455	Handle VVAR loading also (controlled by an additional parameter).
2456	(tt_hadvance_adjust): Renamed to...
2457	(tt_hvadvance_adjust): ...This.
2458	Handle application of advance height also (controlled by an
2459	additional parameter).
2460	(tt_hadvance_adjust, tt_vadvance_adjust): Wrappers for
2461	`tt_hvadvance_adjust'.
2462
2463	* src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
2464
24652017-02-05  Werner Lemberg  <wl@gnu.org>
2466
2467	[autofit] Use better blue zone characters for lowercase latin.
2468
2469	The number of lowercase characters for computing the top flat blue
2470	zone value was too small (in most cases only `x' and `z').  If one
2471	of the two characters has a large serif, say, it can happen that
2472	FreeType must select between two different values, having a 50%
2473	chance to use the wrong one.  As a result, rendering at larger PPEM
2474	values could yield uneven lowercase glyph heights.
2475
2476	Problem reported by Christoph Koeberlin <christoph@koe.berlin>.
2477
2478	* src/autofit/afblue.dat (AF_BLUE_STRING_LATIN_SMALL): Replaced
2479	with...
2480	(AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_STRING_LATIN_SMALL_BOTTOM):
2481	... New, extended sets.
2482	(AF_BLUE_STRINGSET_LATN): Updated.
2483
2484	* src/autofit/afblue.c, scr/autofit/afblue.h: Regenerated.
2485
24862017-02-04  Werner Lemberg  <wl@gnu.org>
2487
2488	Make `freetype-config' a wrapper of `pkg-config' if possible.
2489
2490	Based on ideas taken from
2491
2492	  https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
2493	  https://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch
2494
2495	* builds/unix/freetype-config.in: Rewritten.  Use `pkg-config' to
2496	set output variables if program is available.
2497
2498	* docs/CHANGES, docs/freetype-config.1: Updated.
2499
25002017-02-04  Werner Lemberg  <wl@gnu.org>
2501
2502	* builds/unix/unix-def.in (freetype-config): Fix permissions.
2503
25042017-02-03  Werner Lemberg  <wl@gnu.org>
2505
2506	* src/autofit/afglobal.c (af_face_globals_free): Erase useless code.
2507
25082017-02-03  Werner Lemberg  <wl@gnu.org>
2509
2510	* include/freetype/ftgasp.h (FT_GASP_SYMMETRIC_GRIDFIT): Fix value.
2511
2512	Reported by Behdad.
2513
25142017-02-02  Werner Lemberg  <wl@gnu.org>
2515
2516	[truetype] Fix MVAR post-action handling.
2517
2518	Reported as
2519
2520	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=509
2521
2522	* src/truetype/ttobjs.c (tt_size_reset): Do nothing for CFF2.  This
2523	is important to make `tt_size_reset_iterator' (called in
2524	`tt_apply_mvar') always work.
2525
25262017-02-02  Werner Lemberg  <wl@gnu.org>
2527
2528	Make compilation with FT_CONFIG_OPTION_PIC work again.
2529
2530	All code committed here is guarded with `FT_CONFIG_OPTION_PIC'.
2531
2532	* include/freetype/internal/services/svmetric.h
2533	(FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Remove trailing semicolon.
2534
2535	* src/autofit/aflatin.c (af_latin_hints_compute_edges,
2536	af_latin_hint_edges): Provide `globals' variable.
2537
2538	* src/autofit/afloader.c (af_loader_load_glyph): Remove shadowing
2539	variable.
2540
2541	* src/autofit/afmodule.c (AF_SCRIPT_CLASSES_GET,
2542	AF_STYLE_CLASSES_GET): Redefine.
2543
2544	* src/autofit/aftypes.h (AF_DEFINE_WRITING_SYSTEM_CLASS): Fix typo.
2545
2546	* src/cff/cffparse.c (CFF_FIELD_BLEND): Provide it.
2547
2548	* src/cff/cffpic.h (CffModulePIC): Fix typo.
2549
25502017-01-31  Alexei Podtelezhnikov  <apodtele@gmail.com>
2551
2552	* src/smooth/ftgrays.c (gray_render_scanline): Improve code.
2553
25542017-01-31  Werner Lemberg  <wl@gnu.org>
2555
2556	[cff] Provide metrics variation service interface (#50196).
2557
2558	Only now I've got an OTF with an HVAR table for testing...
2559
2560	The code in `ftmm.c' uses `FT_FACE_LOOKUP_SERVICE' to get the
2561	metrics variations interface.  However, this didn't work with
2562	`FT_FACE_FIND_GLOBAL_SERVICE' used in `sfnt_init_face'.
2563
2564	* src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
2565	(cff_hadvance_adjust, cff_metrics_adjust): Wrapper functions for
2566	metric service functions from the `truetype' module.
2567	(cff_service_metrics_variations): New service.
2568	(cff_services): Updated.
2569
2570	* src/cff/cffpic.h (CFF_SERVICE_METRICS_VAR_GET): New macro.
2571	[FT_CONFIG_OPTION_PIC]: Synchronize code.
2572
2573	* src/sfnt/sfobjs.c (sfnt_init_face): Replace call to
2574	FT_FACE_FIND_GLOBAL_SERVICE with `ft_module_get_service' to always
2575	load the service from the `truetype' module.
2576
25772017-01-31  Werner Lemberg  <wl@gnu.org>
2578
2579	Add framework to support services with 9 functions.
2580
2581	* include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC9):
2582	New macro.
2583
25842017-01-31  Werner Lemberg  <wl@gnu.org>
2585
2586	[base] Fix error handing in MM functions.
2587
2588	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
2589	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
2590	Implement it.
2591
25922017-01-31  Werner Lemberg  <wl@gnu.org>
2593
2594	[truetype] Fix sanity check for `gvar' table (#50184).
2595
2596	* src/truetype/ttgxvar.c (ft_var_load_gvar): There might be missing
2597	variation data for some glyphs.
2598
25992017-01-31  Werner Lemberg  <wl@gnu.org>
2600
2601	[autofit] Avoid uninitialized jumps (#50191).
2602
2603	* src/autofit/afcjk.c (af_cjk_metrics_check_digits),
2604	src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize
2605	`advance'.
2606
26072017-01-27  Werner Lemberg  <wl@gnu.org>
2608
2609	s/GB2312/PRC/.
2610
2611	* include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
2612	(FT_ENCODING_GB2312): Deprecated.
2613
2614	* include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
2615	(TT_MS_ID_GB2312): Deprecated.
2616
2617	* src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.
2618
2619	* docs/CHANGES: Updated.
2620
26212017-01-26  Werner Lemberg  <wl@gnu.org>
2622
2623	[base] Add `FT_Get_Sfnt_LangTag' function.
2624
2625	* include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
2626	(FT_Get_Sfnt_LangTag): New declaration.
2627
2628	* src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New function.
2629
2630	* docs/CHANGES: Updated.
2631
26322017-01-26  Werner Lemberg  <wl@gnu.org>
2633
2634	[sfnt] Support `name' table format 1.
2635
2636	* include/freetype/internal/tttypes.h (TT_LangTagRec): New
2637	structure.
2638	(TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.
2639
2640	* src/sfnt/ttload.c (tt_face_load_name): Add support for language
2641	tags.
2642	Reduce array size of name strings in case of invalid entries.
2643	(tt_face_free_name): Updated.
2644
2645	* docs/CHANGES: Updated.
2646
26472017-01-25  Werner Lemberg  <wl@gnu.org>
2648
2649	[sfnt] s/TT_NameEntry/TT_Name/.
2650
2651	* include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
2652	to...
2653	(TT_NameRec): This.
2654	(TT_NameTableRec): Updated.
2655
2656	* src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.
2657
2658	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated.
2659
2660	* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
2661	tt_name_entry_ascii_from_other): Renamed to...
2662	(tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
2663	respectively.
2664	(TT_NameEntry_ConvertFunc): Renamed to...
2665	(TT_Name_ConvertFunc): This.
2666	(tt_face_get_name): Updated.
2667
2668	* src/sfnt/ttload.c (tt_face_load_name, tt_face_free_name):
2669	Updated.
2670
26712017-01-24  Werner Lemberg  <wl@gnu.org>
2672
2673	[sfnt] Fix Postscript name service for symbol fonts.
2674
2675	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
2676	entries also.
2677
26782017-01-24  Werner Lemberg  <wl@gnu.org>
2679
2680	[truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.
2681
2682	* include/freetype/ftsnames.h
2683	(FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
2684	FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
2685	(FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
2686	FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.
2687
2688	* include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
2689	TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
2690	(TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
2691	Deprecated.
2692
2693	* src/sfnt/sfobjs.c (sfnt_load_face): Updated.
2694
2695	* docs/CHANGES: Updated.
2696
26972017-01-23  Werner Lemberg  <wl@gnu.org>
2698
2699	[base] Add `FT_Set_Default_Properties' (#49187).
2700
2701	* include/freetype/ftmodapi.h: Add declaration.
2702
2703	* src/base/ftinit.c (ft_set_default_properties): Renamed to...
2704	(FT_Set_Default_Properties): ... this.
2705	(FT_Init_FreeType): Updated.
2706
2707	* docs/CHANGES: Updated.
2708
27092017-01-23  Werner Lemberg  <wl@gnu.org>
2710
2711	[truetype] Minor updates for OpenType 1.8.1.
2712
2713	* src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
2714	removed from the specification; it is now reserved.
2715
2716	* src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
2717	(GX_FVar_Head): Remove `countSizePairs'; the corresponding data
2718	field in the `MVAR' table is now reserved.
2719	(fvar_fields): Updated.
2720
27212017-01-23  Werner Lemberg  <wl@gnu.org>
2722
2723	[truetype] Avoid segfault for invalid variation data.
2724
2725	* src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
2726	`itemCount' is not zero.
2727
2728	Reported as
2729
2730	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441
2731
27322017-01-20  Werner Lemberg  <wl@gnu.org>
2733
2734	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
2735
27362017-01-17  Werner Lemberg  <wl@gnu.org>
2737
2738	* include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
2739
2740	(TT_APPLE_ID_FULL_UNICODE): New macro.
2741
2742	(TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
2743	TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
2744	TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
2745	TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
2746	TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
2747	TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
2748	TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
2749	TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
2750	TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
2751	TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
2752	TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
2753	macros.
2754
2755	(TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
2756
2757	(TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
2758	TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
2759	TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
2760	TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
2761	TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
2762	TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
2763	TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
2764	TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
2765	TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
2766	TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
2767	TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
2768	TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
2769	TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
2770	TT_MS_LANGID_UIGHUR_PRC): New aliases.
2771
2772	Remove commented out code.
2773
2774	(TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
2775	TT_NAME_ID_VARIATIONS_PREFIX): New macros.
2776
2777	(HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
2778	years), use guarded long macros by default and define short versions
2779	as aliases for the long ones.
2780
27812017-01-15  Werner Lemberg  <wl@gnu.org>
2782
2783	* src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
2784	also.
2785
27862017-01-11  Werner Lemberg  <wl@gnu.org>
2787
2788	* src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
2789
27902017-01-11  Werner Lemberg  <wl@gnu.org>
2791
2792	[truetype] Actually use metrics variation service.
2793
2794	* src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
2795	(ft_face_get_mvar_service): New auxiliary function to look up
2796	metrics variation service.
2797	(FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
2798	FT_Set_Var_Blend_Coordinates): Call metrics variation service.
2799
2800	* src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
2801	named instances.
2802
28032017-01-11  Werner Lemberg  <wl@gnu.org>
2804
2805	[truetype] Provide metrics variation service.
2806
2807	* include/freetype/internal/services/svmetric.h
2808	(FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
2809
2810	* src/truetype/ttgxvar.c: Include FT_LIST_H.
2811	(tt_size_reset_iterator): New auxiliary function for...
2812	(tt_apply_var): New function.
2813
2814	* src/truetype/ttgxvar.h: Updated.
2815
2816	* src/truetype/ttdriver.c (tt_service_metrics_variations): Add
2817	`tt_apply_mvar'.
2818
2819	* include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
2820	variation service.
2821
28222017-01-11  Werner Lemberg  <wl@gnu.org>
2823
2824	[truetype] Parse `MVAR' table.
2825
2826	* src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
2827	(GX_Value, GX_MVarTable): New structures.
2828	(GX_Blend): Add it.
2829
2830	* src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
2831	GX_GASP_CASE): New macros.
2832	(ft_var_get_value_pointer): New auxiliary function to get a pointer
2833	to a value from various SFNT tables already stored in `TT_Face'.
2834	(ft_var_load_mvar): New function.
2835	(TT_Get_MM_Var): Call it.
2836	(tt_done_blend): Updated.
2837
28382017-01-11  Werner Lemberg  <wl@gnu.org>
2839
2840	[truetype] More preparations for MVAR support.
2841
2842	* src/truetype/ttobjs.c (tt_size_reset): Add argument to make
2843	function only recompute ascender, descender, and height.
2844
2845	* src/truetype/ttobjs.h: Updated.
2846
2847	* src/truetype/ttdriver.c (tt_size_select, tt_size_request):
2848	Updated.
2849
28502017-01-09  Werner Lemberg  <wl@gnu.org>
2851
2852	[pcf] Disable long family names by default.
2853
2854	* include/freetype/config/ftoption.h
2855	(PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
2856
28572017-01-09  Werner Lemberg  <wl@gnu.org>
2858
2859	[pcf] Make long family names configurable.
2860
2861	The change from 2016-09-29 was too radical (except for people using
2862	the openSuSE GNU/Linux distribution).  To ameliorate the situation,
2863	PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
2864	the feature; if set, a new PCF property option
2865	`no-long-family-names' can be used to switch this feature off.
2866
2867	* include/freetype/config/ftoption.h, devel/ftoption.h
2868	(PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
2869
2870	* include/freetype/ftpcfdrv.h: New header file (only containing
2871	comments currently, used for building the documentation).
2872
2873	* include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
2874
2875	* src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
2876
2877	* src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
2878	FT_PCF_DRIVER_H.
2879	(pcf_property_set, pcf_property_get): New functions.
2880	(pcf_service_properties): New service.
2881	(pcf_services): Updated.
2882	(pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
2883	`no_long_family_names'.
2884
2885	* src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
2886	and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
2887
2888	* docs/CHANGES: Updated.
2889
28902017-01-09  Werner Lemberg  <wl@gnu.org>
2891
2892	[pcf] Introduce a driver structure.
2893
2894	To be filled later on with something useful.
2895
2896	* src/pcf/pcf.h (PCF_Driver): New structure.
2897
2898	* src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
2899	functions.
2900	(pcf_driver_class): Updated.
2901
29022017-01-08  Werner Lemberg  <wl@gnu.org>
2903
2904	[truetype] Again some GX code shuffling.
2905
2906	We need this later on for MVAR also.
2907
2908	* src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
2909	an item store variation delta into...
2910	(ft_var_get_item_delta): ...new function.
2911
29122017-01-08  Werner Lemberg  <wl@gnu.org>
2913
2914	[truetype] Adjust font variation flags for MVAR.
2915
2916	* include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
2917	Remove all flags related to MVAR; replace it with...
2918	(TT_FACE_FLAG_VAR_MVAR): ...this new macro.
2919	(TT_Face): Remove `mvar_support' field (which was still unused).
2920
29212017-01-06  Werner Lemberg  <wl@gnu.org>
2922
2923	[truetype] More GX code shuffling.
2924
2925	We need this later on for MVAR also.
2926
2927	* src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
2928	variation store into...
2929	(ft_var_done_item_variation_store): ...new function.
2930
29312017-01-06  Werner Lemberg  <wl@gnu.org>
2932
2933	[truetype] More generalization of GX stuff.
2934
2935	We need this later on for MVAR also.
2936
2937	* src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
2938	parameters for delta-set index mapping and item variation store.
2939	(ft_var_load_item_variation_store): Add parameter for item variation
2940	store.
2941	s/hvarData/varData/.
2942	Move allocation of `hvar_table' to...
2943	(ft_var_load_hvar): ...this function.
2944	Updated.
2945
29462017-01-06  Werner Lemberg  <wl@gnu.org>
2947
2948	[truetype] Some GX structure renames for generalization.
2949
2950	We need this later on for MVAR also.
2951
2952	* src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
2953	(GX_ItemVarData): ...this.
2954	(GX_HVarRegion): Renamed to...
2955	(GX_VarRegion): ...this.
2956	(GX_HVStore): Renamed to...
2957	(GX_ItemVarStore): ...this.
2958	(GX_WidthMap): Renamed to...
2959	(GX_DeltaSetIdxMap): ...this.
2960
2961	(GX_HVarTable): Updated.
2962
2963	* src/truetype/ttgxvar.c: Updated.
2964
29652017-01-06  Werner Lemberg  <wl@gnu.org>
2966
2967	[truetype] Code shuffling.
2968
2969	* src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
2970	item variation store and delta set index mapping into...
2971	(ft_var_load_item_variation_store,
2972	ft_var_load_delta_set_index_mapping): ...new functions.
2973
29742017-01-06  Werner Lemberg  <wl@gnu.org>
2975
2976	[truetype] Add HVAR access without advance width map.
2977
2978	* src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
2979	`offsetToAdvanceWidthMapping' is zero.
2980	(tt_hadvance_adjust): Implement direct deltaSet access by glyph
2981	index.
2982
29832017-01-06  Werner Lemberg  <wl@gnu.org>
2984
2985	[pcf] Revise driver.
2986
2987	This commit improves tracing and handling of malformed fonts.  In
2988	particular, the changes to `pcf_get_properties' fix
2989
2990	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
2991
2992	* src/pcf/pcfread.c (tableNames): Use long names for better
2993	readability.
2994	(pcf_read_TOC): Allow at most 9 tables.
2995	(pcf_get_properties): Allow at most 256 properties.
2996	Limit strings array length to 256 * (65536 + 1) bytes.
2997	Better tracing.
2998	(pcf_get_metric): Trace metric data.
2999	(pcf_get_metrics): Allow at most 65536 metrics.
3000	Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
3001	potential overflow.
3002	Better tracing.
3003	(pcf_get_bitmaps): Allow at most 65536 bitmaps.
3004	Better tracing.
3005	(pcf_get_encodings, pcf_get_accel): Better tracing.
3006
3007	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
3008	These are now shown by `pcf_get_bitmaps'.
3009
30102017-01-04  Werner Lemberg  <wl@gnu.org>
3011
3012	* src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
3013
30142017-01-04  Werner Lemberg  <wl@gnu.org>
3015
3016	[cff] More consistency checks for pure CFFs.
3017
3018	Reported as
3019
3020	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
3021
3022	* src/cff/cffload.c (cff_font_load): Check element number and size
3023	of Name and Top DICT indices.
3024
30252017-01-04  Werner Lemberg  <wl@gnu.org>
3026
3027	[cff, truetype] Minor tracing improvement.
3028
3029	* src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
3030	(tt_face_init): Indent first tracing message from SFNT driver.
3031
30322017-01-03  Werner Lemberg  <wl@gnu.org>
3033
3034	[truetype] Various minor fixes.
3035
3036	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
3037	size only if we do native hinting.
3038	(TT_Load_Glyph): Trace returned error code.
3039
3040	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
3041	returned error code.
3042	(tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
3043	invalid.
3044
30452017-01-03  Werner Lemberg  <wl@gnu.org>
3046
3047	[sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
3048
3049	These tables are optional.
3050
3051	* src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
3052
30532017-01-03  Werner Lemberg  <wl@gnu.org>
3054
3055	* src/cff/cffparse.c (cff_parse_num): Simplify.
3056
30572017-01-03  Werner Lemberg  <wl@gnu.org>
3058
3059	Various fixes for clang's undefined behaviour sanitizer.
3060
3061	* src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
3062	(cff_blend_doBlend): Don't left-shift negative numbers.
3063	Handle 5-byte numbers byte by byte to avoid alignment issues.
3064
3065	* src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
3066	byte to avoid alignment issues.
3067
3068	* src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
3069	subrs.
3070
3071	* src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
3072
3073	* src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
3074	definition of `ft_get_adobe_glyph_index'.
3075
3076	* src/psnames/pstables.h: Regenerated.
3077
3078	* src/psnames/psmodule.c: Include `pstables.h' twice to get both
3079	declaration and definition.
3080
3081	* src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
3082	casting.
3083
30842017-01-01  Werner Lemberg  <wl@gnu.org>
3085
3086	[cff] Handle multiple `blend' operators in a row correctly.
3087
3088	Reported as
3089
3090	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
3091
3092	* src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
3093	pointers into `subFont->blend_stack' after reallocation.
3094
30952017-01-01  Werner Lemberg  <wl@gnu.org>
3096
3097	[sfnt] Return correct number of named instances for TTCs.
3098
3099	Without this patch, requesting information for face index N returned
3100	the data for face index N+1 (or index 0).
3101
3102	* src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
3103	for negative `face_instance_index' values.
3104
31052016-12-31  Werner Lemberg  <wl@gnu.org>
3106
3107	*/*: Use hex numbers for errors in tracing messages.
3108
31092016-12-31  Werner Lemberg  <wl@gnu.org>
3110
3111	[truetype] Check axis count in HVAR table.
3112
3113	Reported as
3114
3115	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
3116
3117	* src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
3118	(ft_var_load_avar): Fix tracing message.
3119
3120
3121----------------------------------------------------------------------------
3122
3123Copyright (C) 2016-2020 by
3124David Turner, Robert Wilhelm, and Werner Lemberg.
3125
3126This file is part of the FreeType project, and may only be used, modified,
3127and distributed under the terms of the FreeType project license,
3128LICENSE.TXT.  By continuing to use, modify, or distribute this file you
3129indicate that you have read the license and understand and accept it
3130fully.
3131
3132
3133Local Variables:
3134version-control: never
3135coding: utf-8
3136End:
3137