Imported Upstream version 2.10.4
[platform/upstream/freetype2.git] / ChangeLog.29
1 2018-05-01  Werner Lemberg  <wl@gnu.org>
2
3         * Version 2.9.1 released.
4         =========================
5
6
7         Tag sources with `VER-2-9-1'.
8
9         * docs/VERSION.TXT: Add entry for version 2.9.1.
10         * docs/CHANGES: Updated.
11
12         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
13         src/base/ftver.rc, 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.9/2.9.1/, s/29/291/.
28
29         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
30
31         * builds/unix/configure.raw (version_info): Set to 22:1:16.
32         * CMakeLists.txt (VERSION_PATCH): Set to 1.
33
34         * include/freetype/ftgasp.h: Use FT_BEGIN_HEADER and FT_END_HEADER.
35
36 2018-04-26  Werner Lemberg  <wl@gnu.org>
37
38         Another fix for handling invalid format 2 cmaps.
39
40         Sigh.
41
42         Reported as
43
44           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8003
45
46         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
47         an endless loop.
48
49 2018-04-24  Ben Wagner  <bungeman@google.com>
50
51         [base] Avoid undefined behaviour in lcd filtering code (#53727).
52
53         * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
54         Ensure `height > 0'.
55
56 2018-04-22  Werner Lemberg  <wl@gnu.org>
57
58         * src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing.
59
60 2018-04-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
61
62         [base] Fix bitmap emboldening.
63
64         Bug introduced after release 2.8.
65
66         * src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use
67         `FT_QALLOC_MULT', which doesn't zero out the buffer.  Adjust the
68         bitmap copying code to take care of this fact.
69
70 2018-04-22  Werner Lemberg  <wl@gnu.org>
71
72         Another fix for handling invalid format 2 cmaps.
73
74         The previous commit was incomplete.
75
76         Reported as
77
78           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7928
79
80         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
81         an endless loop.
82
83 2018-04-19  Werner Lemberg  <wl@gnu.org
84
85         [autofit] Add support for Georgian Mtavruli characters.
86
87         This will be part of the forthcoming Unicode 11.0.
88
89         * src/autofit/afblue.dat: Add blue zone data for Mtavruli.
90         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
91
92         * src/autofit/afscript.h: Add Mtavruli standard character.
93
94 2018-04-18  Werner Lemberg  <wl@gnu.org>
95
96         Fix handling of invalid format 2 cmaps.
97
98         The problem was introduced after the last release.
99
100         Reported as
101
102           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7828
103
104         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop.
105
106 2018-04-17  Werner Lemberg  <wl@gnu.org>
107
108         [truetype] Integer overflow issues.
109
110         Reported as
111
112           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7739
113
114         * src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG.
115
116 2018-04-16  Werner Lemberg  <wl@gnu.org>
117
118         [truetype] Integer overflow issues.
119
120         Reported as
121
122           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7718
123
124         * src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG.
125
126 2018-04-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
127
128         [build] Use `info' function of make 3.81.
129
130         * configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU,
131         docs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements.
132
133         * builds/detect.mk (std_setup): Replace `echo' with `info'.
134         (dos_setup): Removed.
135         * builds/unix/install.mk, builds/modules.mk, builds/dos/detect.mk,
136         builds/windows/detect.mk, builds/os2/detect.mk: Updated.
137         * builds/newline: No longer needed.
138
139 2018-04-15  Werner Lemberg  <wl@gnu.org>
140
141         [truetype]: Limit `SLOOP' bytecode argument to 16 bits.
142
143         This fixes
144
145           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7707
146
147         * src/truetype/ttinterp.c (Ins_SLOOP): Do it.
148
149 2018-04-14  Werner Lemberg  <wl@gnu.org>
150
151         [truetype] Integer overflow issues.
152
153         Reported as
154
155           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7652
156
157         * src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG.
158
159 2018-04-14  Werner Lemberg  <wl@gnu.org>
160
161         [autofit] Update to Unicode 11.0.0.
162
163         But no support new scripts (volunteers welcomed).
164
165         * src/autofit/afranges.c (af_arab_nonbase_uniranges,
166         af_beng_nonbase_uniranges, af_cakm_nonbase_uniranges,
167         af_deva_nonbase_uniranges, af_geor_uniranges,
168         af_gujr_nonbase_uniranges, af_mlym_nonbase_uniranges,
169         af_nkoo_nonbase_uniranges, af_telu_nonbase_uniranges,
170         af_hani_uniranges): Add new data.
171
172 2018-04-10  Nikolaus Waxweiler  <madigens@gmail.com>
173
174         * CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive
175         modernization measures.
176
177         This brings up the minimum required CMake version to 2.8.12.
178
179         The installation paths follow the GNU defaults now, e.g. installing on a
180         64 bit host will place binaries into the lib64/ folder on e.g. Fedora.
181
182         Symbols are hidden by default (e.g. `-fvisibility=hidden' on GCC).
183
184         CMake will no longer look for a C++ compiler.
185
186         Library and .so version now match the Autotools build.
187
188         Comments in the build file and informational messages now use platform
189         agnostic example commands.
190
191         ftoption.h and ftconfig.h are written directly without a redundant `-new'
192         copy.
193
194         External dependencies are expressed as option()s and will turn up as such
195         in cmake-gui.
196
197         Internal: Properties such as dependencies and include directories are now
198         privately set on the freetype library instead of globally.
199
200         The CPack definitions have been cleaned up, the `make dist' has been
201         removed. Source packages generated with CPack don't contain Autotools
202         files and aren't used by the maintainers anyway.
203
204         On Windows, src/base/ftver.rc is compiled to decorate the library with
205         version and copyright information.
206
207         A pkg-config file is now generated and installed.
208
209 2018-04-09  Werner Lemberg  <wl@gnu.org>
210
211         [truetype] Integer overflow issues.
212
213         Reported as
214
215           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7453
216
217         * src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use
218         ADD_LONG and SUB_LONG.
219
220 2018-04-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
221
222         [windows, wince] Clean up legacy project files.
223
224         * builds/wince/vc2005-ce/freetype.vcproj,
225         builds/wince/vc2008-ce/freetype.vcproj,
226         builds/windows/vc2005/freetype.vcproj,
227         builds/windows/vc2008/freetype.vcproj,
228         builds/windows/visualce/freetype.vcproj,
229         builds/windows/visualce/freetype.dsp,
230         builds/windows/visualc/freetype.vcproj,
231         builds/windows/visualc/freetype.dsp: Remove per-file compile flags.
232
233 2018-04-04  Werner Lemberg  <wl@gnu.org>
234
235         [cff, type1] Sanitize `BlueFuzz' and `BlueShift'.
236
237         Reported as
238
239           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7371
240
241         * src/cff/cffload.c (cff_load_private_dict): Sanitize
242         `priv->blue_shift' and `priv->blue_fuzz' to avoid overflows later
243         on.
244
245         * src/type1/t1load.c (T1_Open_Face): Ditto.
246
247 2018-04-04  Ben Wagner  <bungeman@google.com>
248
249         * src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554),
250         `DFHei-Md-HK-BF', `DFKaiShu-Md-HK-BF' and `DFMing-Bd-HK-BF'.
251         (tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts
252         in above.
253
254 2018-04-01  Werner Lemberg  <wl@gnu.org>
255
256         * builds/toplevel.mk (work): Use $(SEP).
257
258         This fixes the `make refdoc' using Cygwin: $(CAT) is `type' on this
259         platform, and this program only understands backslashes in paths.
260
261         Reported by Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>.
262
263 2018-03-30  Werner Lemberg  <wl@gnu.org>
264
265         [truetype] Fix memory leak (only if tracing is on).
266
267         * src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix
268         it.
269
270 2018-03-23  Ben Wagner  <bungeman@google.com>
271
272         [sfnt] Correctly handle missing bitmaps in sbix format (#53404).
273
274         * src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value.
275
276 2018-03-23  Ben Wagner  <bungeman@google.com>
277
278         [truetype] Fix advance of empty glyphs in bitmap fonts (#53393).
279
280         * src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics
281         for empty bitmaps.
282
283 2018-03-22  Werner Lemberg  <wl@gnu.org>
284
285         Remove `ftlcdfil.c' and `ftfntfmt.c' from build files (#53415).
286
287         builds/amiga/makefile, builds/amiga/makefile.os4,
288         builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
289         builds/mac/FreeType.m68k_far.make.txt,
290         builds/mac/FreeType.ppc_carbon.make.txt,
291         builds/mac/FreeType.ppc_classic.make.txt,
292         builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
293         builds/wince/vc2008-ce/freetype.vcproj,
294         builds/windows/vc2005/freetype.vcproj,
295         builds/windows/vc2008/freetype.vcproj,
296         builds/windows/vc2010/freetype.vcxproj,
297         builds/windows/vc2010/freetype.vcxproj.filters,
298         builds/windows/visualc/freetype.dsp,
299         builds/windows/visualc/freetype.vcproj,
300         builds/windows/visualce/freetype.dsp,
301         builds/windows/visualce/freetype.vcproj, vms_make.com: Do it.
302
303 2018-03-13  Werner Lemberg  <wl@gnu.org>
304
305         * src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric
306         overflow.
307
308 2018-03-13  Werner Lemberg  <wl@gnu.org>
309
310         Fix cmap format 2 handling (#53320).
311
312         The patch introduced for #52646 was not correct.
313
314         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
315
316 2018-03-10  Nikolaus Waxweiler  <madigens@gmail.com>
317
318         * CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05.
319
320 2018-03-09  Chun-wei Fan  <fanc999@yahoo.com.tw>
321
322         * CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287).
323
324         Do not limit DLL builds to MinGW, since we already have
325         `__declspec(dllexport)' directives in `ftconfig.h'.
326         Also suppress more warnings for POSIX functions.
327
328 2018-03-08  Hugh McMaster  <hugh.mcmaster@outlook.com>
329
330         Make installation of `freetype-config' optional (#53093).
331
332         * builds/unix/configure.raw: Add option `--enable-freetype-config'
333         and set `INSTALL_FT2_CONFIG'.
334         * builds/unix/unix-def.in (INSTALL_FT2_CONFIG): Define.
335         * builds/unix/install.mk (install): Handle it.
336
337 2018-03-05  Werner Lemberg  <wl@gnu.org>
338
339         Make `ftlcdfil.c' part of the `base' module.
340
341         `ftobjs.c' needs `ft_lcd_padding'.
342
343         Problem reported by duhuanpeng <548708880@qq.com>.
344
345         * modules.cfg (BASE_EXTENSIONS): Don't include `ftlcdfil.c'.
346
347         * src/base/ftbase.c: Include `ftlcdfil.c'.
348         * src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c'.
349         * src/base/Jamfile (_sources): Adjusted.
350
351         * docs/INSTALL.ANY: Updated.
352
353 2018-03-05  Werner Lemberg  <wl@gnu.org>
354
355         Make `ftfntfmt.c' part of the `base' module.
356
357         `ftobjs.c' needs `FT_Get_Font_Format'.
358
359         Problem reported by duhuanpeng <548708880@qq.com>.
360
361         * modules.cfg (BASE_EXTENSIONS): Don't include `ftfntfmt.c'.
362
363         * src/base/ftbase.c: Include `ftfntfmt.c'.
364         * src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c'.
365         * src/base/Jamfile (_sources): Adjusted.
366
367         * docs/INSTALL.ANY: Updated.
368
369 2018-03-01  Werner Lemberg  <wl@gnu.org>
370
371         * src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments.
372
373 2018-02-23  Werner Lemberg  <wl@gnu.org>
374
375         * builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer.
376
377         Problem reported by Alan Coopersmith <alan.coopersmith@oracle.com>.
378
379 2018-02-17  Werner Lemberg  <wl@gnu.org>
380
381         [sfnt] Prefer `CBDT'/`CBLC' over `glyf' table (#53154).
382
383 2018-02-06  Werner Lemberg  <wl@gnu.org>
384
385         [truetype] Integer overflow issues.
386
387         Reported as
388
389           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6027
390
391         * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use
392         SUB_LONG; avoid FT_ABS.
393
394 2018-02-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
395
396         [unix] Use -fvisibility=hidden.
397
398         It is now widely recommended that ELF shared libraries hide symbols
399         except those with explicit __attribute__((visibility("default"))).
400         This is supported by all major compilers and should rather be an
401         option in libtool.
402
403         * builds/unix/configure.raw: Add -fvisibility=hidden to CFLAGS.
404         * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
405         include/freetype/config/ftconfig.h (FT_EXPORT): Use visibility
406         attribute.
407
408 2018-01-27  Werner Lemberg  <wl@gnu.org>
409
410         [truetype] Better protection against invalid VF data.
411
412         Reported as
413
414           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5739
415
416         Bug introduced in commit 08cd62deedefe217f2ea50e392923ce8b5bc7ac7.
417
418         * src/truetype/ttgxvar.c (TT_Set_Var_Design): Always initialize
419         `normalizedcoords'.
420
421 2018-01-27  Werner Lemberg  <wl@gnu.org>
422
423         * src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference.
424
425         Reported as
426
427           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5736
428
429 2018-01-27  Werner Lemberg  <wl@gnu.org>
430
431         * src/truetype/ttgxvar.c (tt_set_mm_blend): Minor.
432
433 2018-01-27  Werner Lemberg  <wl@gnu.org>
434
435         [truetype] Better trace VF instances.
436
437         * src/truetype/ttgxvar.c (ft_var_to_normalized): Don't emit number
438         of coordinates.
439         (TT_Get_MM_Var): Trace instance indices names.
440         (TT_Set_Var_Design): Updated.
441
442 2018-01-27  Werner Lemberg  <wl@gnu.org>
443
444         [truetype] Beautify tracing of VF axis records.
445
446         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Show axis records in a
447         table-like manner.
448
449 2018-01-26  Ben Wagner  <bungeman@google.com>
450
451         [truetype] Fix multiple calls of `FT_Get_MM_Var' (#52955).
452
453         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Set
454         `face->blend->num_axis' in case we have to initialize the
455         `face->blend'.
456
457 2018-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
458
459         [apinames] Anonymous version map for GNU linker.
460
461         * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.3.
462         (OutputFormat): Add `OUTPUT_GNU_VERMAP'.
463         (names_dump): Handle it.
464         (usage): Updated.
465         (main): Handle new command line flag `-wL'.
466
467 2018-01-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
468
469         [unix] Call libtool to clean up.
470
471         * builds/unix/install.mk (clean_project_unix, distclean_project_unix):
472         Use libtool.
473         * builds/freetype.mk: Minor.
474
475 2018-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
476
477         * src/base/ftver.rc: Fix mingw-w64 compilation.
478
479 2018-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
480
481         [build] Enable VERSIONINFO resource for Cygwin/MinGW.
482
483         * builds/unix/configure.raw: Check for resource compiler.
484         * builds/unix/unix-cc.in: Conditionally set up resource compiler.
485         * builds/freetype.mk: Add conditional rule for `ftver.rc'.
486         * src/base/ftver.rc: Copyright notice and year update.
487
488 2018-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
489
490         [build] Move VERSIONINFO resource.
491
492         * builds/windows/vc2010/freetype.vcxproj: Updated.
493         * builds/windows/ftver.rc: Move file from here...
494         * src/base/ftver.rc: ... to here.
495
496 2018-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
497
498         [build] Expand dllexport/dllimport to Cygwin/MinGW.
499
500         * include/freetype/config/ftconfig.h: Respect DLL_EXPORT,
501         s/_MSC_VER/_WIN32/.
502         * builds/unix/ftconfig.in: Replicate here.
503         * builds/vms/ftconfig.h: Replicate here.
504
505 2018-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
506
507         [build] Improve and document MSVC build.
508
509         * include/freetype/config/ftconfig.h: Guard dllexport/dllimport
510         attributes with _DLL and FT2_DLLIMPORT.
511         * builds/windows/vc2010/index.html: Update documentation.
512
513 2018-01-10  Steve Robinson  <ssrobins@gmail.com>
514
515         * CMakeLists.txt [win32]: Suppress warnings for POSIX functions.
516
517 2018-01-10  Ewald Hew  <ewaldhew@gmail.com>
518
519         [psaux] Correctly handle Flex features (#52846).
520
521         * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO,
522         cf2_cmdHMOVETO>: Do not move if doing Flex.
523
524 2018-01-09  Alexei Podtelezhnikov  <apodtele@gmail.com>
525
526         * builds/windows/vc2010/freetype.sln: Synchronize with the project.
527
528 2018-01-08  Werner Lemberg  <wl@gnu.org>
529
530         * Version 2.9 released.
531         =======================
532
533
534         Tag sources with `VER-2-9'.
535
536         * docs/VERSION.TXT: Add entry for version 2.9.
537
538         * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
539         builds/windows/vc2005/index.html,
540         builds/windows/vc2008/freetype.vcproj,
541         builds/windows/vc2008/index.html,
542         builds/windows/vc2010/freetype.vcxproj,
543         builds/windows/vc2010/index.html,
544         builds/windows/visualc/freetype.dsp,
545         builds/windows/visualc/freetype.vcproj,
546         builds/windows/visualc/index.html,
547         builds/windows/visualce/freetype.dsp,
548         builds/windows/visualce/freetype.vcproj,
549         builds/windows/visualce/index.html,
550         builds/windows/ftver.rc,
551         builds/wince/vc2005-ce/freetype.vcproj,
552         builds/wince/vc2005-ce/index.html,
553         builds/wince/vc2008-ce/freetype.vcproj,
554         builds/wince/vc2008-ce/index.html: s/2.8.1/2.9/, s/281/29/.
555
556         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 9.
557         (FREETYPE_PATCH): Set to 0.
558
559         * builds/unix/configure.raw (version_info): Set to 22:0:16.
560         * CMakeLists.txt (VERSION_PATCH): Set to 0.
561
562 2018-01-07  Werner Lemberg  <wl@gnu.org>
563
564         Add check for librt, needed for `ftbench' (#52824).
565
566         * builds/unix/configure.raw (LIB_CLOCK_GETTIME): Define; this will
567         hold `-lrt' if necessary.
568
569         * builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): New variable.
570
571 2018-01-07  Ewald Hew  <ewaldhew@gmail.com>
572
573         [psaux] Fix Type 1 glyphs with too many stem hints.
574
575         According to the CFF specification, charstrings can have up to 96 stem
576         hints. Due to hint replacement routines in Type 1 charstrings, some
577         glyphs are rejected by the Adobe engine, which implements the above
578         limit. This fix turns off hinting for such glyphs.
579
580         * src/psaux/pshints.c (cf2_hintmap_build): Reset the error from calling
581         `cf2_hintmask_setAll' on a problematic Type 1 charstring and turn off
582         hinting.
583
584 2018-01-06  Werner Lemberg  <wl@gnu.org>
585
586         Add `FT_Done_MM_Var'.
587
588         This is necessary in case the application's memory routines differ
589         from FreeType.  A typical example is a Python application on Windows
590         that calls FreeType compiled as a DLL via the `ctypes' interface.
591
592         * include/freetype/ftmm.h, src/base/ftmm.c (FT_Done_MM_Var): Declare
593         and define.
594
595         * docs/CHANGES: Updated.
596
597 2018-01-03  Werner Lemberg  <wl@gnu.org>
598
599         [truetype] Round offsets of glyph components only if hinting is on.
600
601         * src/truetype/ttgload.c (TT_Process_Composite_Component): Implement
602         it.
603
604 2018-01-03  Werner Lemberg  <wl@gnu.org>
605
606         * src/truetype/ttgxvar.c (ft_var_to_design): Remove dead code.
607
608         This is a better fix than the previous commit, which is now
609         reverted.
610
611 2018-01-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
612
613         Move internal LCD-related declarations.
614
615         * include/freetype/ftlcdfil.h (ft_lcd_padding, ft_lcd_filter_fir):
616         Move from here...
617         * include/freetype/internal/ftobjs.h: ... to here.
618
619 2018-01-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
620
621         * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
622         [_MSC_VER]: Limit Visual C++ attributes.
623
624 2018-01-03  Werner Lemberg  <wl@gnu.org>
625
626         [truetype] Make blend/design coordinate round-tripping work.
627
628         Behdad reported that setting blend coordinates, then getting design
629         coordinates did incorrectly return the default instance's
630         coordinates.
631
632         * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix it.
633
634 2017-12-31  Werner Lemberg  <wl@gnu.org>
635
636         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix endless loop.
637
638         Reported as
639
640           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4838
641
642 2017-12-31  Werner Lemberg  <wl@gnu.org>
643
644         Synchronize other Windows project files.
645
646         * builds/windows/*: Add missing files.
647
648 2017-12-31  Werner Lemberg  <wl@gnu.org>
649
650         Update Visual C 2010 project files.
651
652         Problem reported by Hin-Tak.
653
654         * builds/windows/vc2010/freetype.vcxproj: Add files `ftbdf.c' and
655         `ftcid.c'.
656         Sort entries.
657         * builds/windows/vc2010/freetype.vcxproj.filter: Ditto.
658         Fix members of `FT_MODULE' group.
659
660 2017-12-30  Werner Lemberg  <wl@gnu.org>
661
662         * builds/vms/ftconfig.h: Synchronize with unix `ftconfig.in' file.
663
664 2017-12-28  Werner Lemberg  <wl@gnu.org>
665
666         * builds/unix/ftconfig.in: Synchronize with main `ftconfig.h' file.
667
668         Reported by Nikolaus.
669
670 2017-12-27  Werner Lemberg  <wl@gnu.org>
671
672         Fix compiler warnings.
673
674         * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Make `pitch' and
675         `new_pitch' unsigned.
676
677         * src/base/ftpsprop.c: Include FT_INTERNAL_POSTSCRIPT_PROPS_H.
678
679 2017-12-27  Werner Lemberg  <wl@gnu.org>
680
681         Fixes for `make multi'.
682
683         * include/freetype/internal/ftpsprop.h: Use `FT_BASE_CALLBACK'.
684         (ps_property_get): Harmonize declaration with corresponding
685         function typedef.
686
687         * include/freety[e/internal/fttrace.h: Add `trace_psprops'.
688
689         * src/base/ftpsprop.c: Include necessary header files.
690         (FT_COMPONENT): Define.
691         (ps_property_set): Tag with `FT_BASE_CALLBACK_DEF'.
692         (ps_property_get): Tag with `FT_BASE_CALLBACK_DEF'.
693         Harmonize declaration with corresponding function typedef.
694
695 2017-12-27  Werner Lemberg  <wl@gnu.org>
696
697         Provide support for intra-module callback functions.
698
699         This is needed especially for `make multi' with C++.
700
701         * include/freetype/config/ftconfig.h (FT_BASE_CALLBACK,
702         FT_BASE_CALLBACK_DEF): New macros.
703
704 2017-12-25  Ewald Hew  <ewaldhew@gmail.com>
705
706         Move PostScript drivers' property handlers to `base'.
707
708         This reduces the amount of duplicated code across PostScript
709         drivers.
710
711         * src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c
712         ({cff,cid,t1}_property_{get,set}): Moved to...
713         * include/freetype/internal/ftpsprop.h: ...this new file.
714         (ps_property_{get,set}): New functions to replace moved ones.
715
716         * src/base/ftpsprop.c: New file that implements above functions.
717
718         * include/freetype/internal/internal.h
719         (FT_INTERNAL_POSTSCRIPT_PROPS_H): New macro.
720
721         * src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c:
722         Updated.
723
724         * src/base/Jamfile, src/base/rules.mk (BASE_SRC), src/base/ftbase.c:
725         Updated.
726
727 2017-12-20  Werner Lemberg  <wl@gnu.org>
728
729         Speed up FT_Set_Var_{Design,Blend}_Coordinates if curr == new.
730
731         We exit early if the current design or blend coordinates are
732         identical to the new ones.
733
734         * src/truetype/ttgxvar.c (tt_set_mm_blend, TT_Set_Var_Design):
735         Implement it, returning internal error code -1 if there will be no
736         variation change.
737
738         * src/type1/t1load.c (t1_set_mm_blend): Ditto.
739
740         * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
741         FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Updated.
742
743 2017-12-18  Werner Lemberg  <wl@gnu.org>
744
745         [sfnt] Fix charmap type 2 iterator (#52646).
746
747         The subsetted demo font of the report that exhibits the bug has a
748         very unusual type 2 cmap for Unicode(!): It contains only two
749         sub-headers, one for one-byte characters (covering the range 0x20 to
750         0xFA), and a second one for higher byte 0x01 (just for character
751         code U+0131).
752
753         Before this commit, the iterator wasn't able to correctly handle a
754         sub-header for higher byte 0x01.
755
756         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix character increment
757         for outer loop.
758
759 2017-12-18  Matthias Clasen  <matthias.clasen@gmail.com>
760
761         [truetype] Fix clamping, minor tracing code beautification.
762
763         * src/truetype/ttgxvar.c (ft_var_to_normalized): Trace number of
764         design coordinates.
765         Use clamped value.
766
767 2017-12-18  Werner Lemberg  <wl@gnu.org>
768
769         * src/*/*: Only use `ft_' and `FT_' variants of stdc library stuff.
770
771 2017-12-18  Werner Lemberg  <wl@gnu.org>
772
773         * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add size guard (#52688).
774
775 2017-12-18  Werner Lemberg  <wl@gnu.org>
776
777         [truetype] Fix previous commit.
778
779         * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Correctly handle
780         unhinted phantom points, which must be properly scaled.
781
782 2017-12-18  Werner Lemberg  <wl@gnu.org>
783
784         [truetype] Don't apply HVAR and VVAR deltas twice (#52683).
785
786         * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Always adjust
787         `pp1' to `pp4', except if we have an HVAR and/or VVAR table.
788
789         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Handle
790         alternative code branch identically w.r.t. presence of an HVAR
791         and/or VVAR table.
792
793 2017-12-17  Jonathan Kew  <jfkthame@gmail.com>
794
795         [truetype] Correctly handle variation font phantom points (#52683).
796
797         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix phantom
798         point indices.
799
800 2017-12-17  Jonathan Kew  <jfkthame@gmail.com>
801
802         Fix incorrect advance width scaling (#52683).
803
804         * src/base/ftadvance.c (FT_Get_Advances): Always respect the
805         FT_LOAD_NO_SCALE flag if present.
806
807 2017-12-16  Alexei Podtelezhnikov  <apodtele@gmail.com>
808
809         * builds/windows/vc2010/freetype.vcxproj: AfterBuild copy.
810         * objs/.gitignore: Ignore almost everything.
811
812 2017-12-11  Werner Lemberg  <wl@gnu.org>
813
814         Fix compiler warning (#52640).
815
816         * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Remove unused
817         variable.
818
819 2017-12-08  Azzuro  <azzuro@team-mediaportal.com>
820
821         * builds/windows/vc2010/freetype.vcxproj: Adjust output directory.
822
823         This allows builds with different configurations in parallel.
824
825 2017-12-08  Werner Lemberg  <wl@gnu.org>
826
827         Fix `make setup dos', second try (#52622).
828
829         * builds/detect.mk (dos_setup): Don't use literal `>' character at
830         all.  Mixing the different escaping rules from make, dos, and
831         windows is too fragile.
832
833 2017-12-08  Werner Lemberg  <wl@gnu.org>
834
835         [docmaker] Fix code section parsing.
836
837         Stuff like
838
839           {
840             <bla>
841           }
842
843         confused the parser, which incorrectly treated `<bla>' as a markup
844         tag.
845
846         * src/tools/docmaker/content.py (ContentProcessor::process_content):
847         Apply `re_markup_tags' only outside of code sections.
848
849 2017-12-08  Werner Lemberg  <wl@gnu.org>
850
851         New `ftdriver.h' file, covering all driver modules.
852
853         This reduces redundancy and increases synergy; it also reduces the
854         number of header files.
855
856         * include/freetype/config/ftheader.h (FT_DRIVER_H): New macro.
857         (FT_AUTOHINTER_H, FT_CFF_DRIVER_H, FT_TRUETYPE_DRIVER_H,
858         FT_PCF_DRIVER_H, FT_TYPE1_DRIVER_H): Make them aliases to
859         FT_DRIVER_H.
860
861         * include/freetype/ftautoh.h, include/freetype/ftcffdrv.h,
862         include/freetype/ftpcfdrv.h, include/freetype/ftt1drv.h,
863         include/freetype/ftttdrv.h: Replaced with...
864         * include/freetype/ftdriver.h: ...this new file.
865         (FT_CFF_HINTING_ADOBE, FT_T1_HINTING_ADOBE): Renamed to...
866         (FT_HINTING_ADOBE): ... this new macro.
867         (FT_CFF_HINTING_FREETYPE, FT_T1_HINTING_FREETYPE): Renamed to...
868         (FT_HINTING_FREETYPE): ... this new macro.
869
870         * src/*/*: Updated accordingly.
871
872 2017-12-08  Werner Lemberg  <wl@gnu.org>
873
874         Move `ftdriver.h' to `ftdrv.h'.
875
876         * include/freetype/internal/ftdriver.h: Renamed to...
877         * include/freetype/internal/ftdrv.h: ... this name.
878
879         * include/freetype/internal/internal.h (FT_INTERNAL_DRIVER_H):
880         Updated.
881
882 2017-12-08  Werner Lemberg  <wl@gnu.org>
883
884         Fix access to uninitalized memory (#52613).
885
886         Also reported as
887
888           https://bugs.chromium.org/p/chromium/issues/detail?id=791317
889
890         * src/base/ftbitmap.c (ft_bitmap_assure_buffer): If increasing the
891         bitmap size needs a larger bitmap buffer, assure that the new memory
892         areas are initialized also.
893
894 2017-12-08  Werner Lemberg  <wl@gnu.org>
895
896         Fix `make setup dos' (#52622).
897
898         * builds/detect.mk (dos_setup): Properly escape literal `>'
899         character.
900
901 2017-12-07  Werner Lemberg  <wl@gnu.org>
902
903         Fix C++ compilation.
904
905         * src/psaux/psauxmod.h: Use FT_CALLBACK_TABLE macro where necessary.
906
907         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix warning.
908
909 2017-12-07  Werner Lemberg  <wl@gnu.org>
910
911         Fix `make multi'.
912
913         * include/freetype/internal/fttrace.h: Remove unused tracing macros.
914         s/pshalgo2/pshalgo/.
915         Add `trace_cffdecode'.
916         * src/pshinter/pshalgo.c (FT_COMPONENT): Updated.
917
918         * src/cff/cffload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
919         * src/cff/cffobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H and
920         FT_SERVICE_CFF_TABLE_LOAD_H.
921
922         * src/cid/cidriver.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
923
924         * src/psaux/cffdecode.c: Include FT_FREETYPE_H and
925         FT_INTERNAL_DEBUG_H.
926         (FT_COMPONENT): Define.
927         * src/psaux/cffdecode.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
928         * src/psaux/psauxmod.h: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
929         Declare `cff_builder_funcs' and `ps_builder_funcs'.
930         * src/psaux/psft.c: Include `psobjs.h' and `cffdecode.h'.
931         * src/psaux/psobjs.c : Include `psauxmod.h'.
932
933 2017-12-07  Werner Lemberg  <wl@gnu.org>
934
935         * include/freetype/config/ftheader.h: Some clean-up.
936
937         This commit removes documentation of deprecated macros and does some
938         minor streamlining.
939
940 2017-12-06  Werner Lemberg  <wl@gnu.org>
941
942         * builds/symbian/bld.inf: Updated.
943
944 2017-12-06  Werner Lemberg  <wl@gnu.org>
945
946         New header file `ftparams.h' that collects all parameter tags.
947
948         * include/freetype/config/ftheader.h (FT_PARAMETER_TAGS_H): New
949         macro.
950         (FT_TRUETYPE_UNPATENTED_H, FT_UNPATENTED_HINTING_H): Define it to
951         `ftparams.h'.
952
953         * include/freetype/ftautoh.h, include/freetype/ftcffdrv.h,
954         include/freetype/ftincrem.h, include/freetype/ftlcdfil.h,
955         include/freetype/ftsnames.h, include/freetype/ftt1drv.h: Include
956         FT_PARAMETER_TAGS_H.
957         Move FT_PARAM_TAG_XXX definitions to...
958         * include/freetype/ftparams.h: ...this new file.
959
960         * include/freetype/ttunpat.h: Remove.  No longer needed.
961
962 2017-12-05  Werner Lemberg  <wl@gnu.org>
963
964         Improve tracing messages by using singular and plural forms.
965
966         * src/*/*.c: Implement it.
967
968 2017-12-04  Werner Lemberg  <wl@gnu.org>
969
970         [truetype] Allow shared points in `cvar' table (#52532).
971
972         * src/truetype/ttgxvar.c (tt_face_vary_cvt): Implement it by copying
973         and adjusting the corresponding code from
974         `TT_Vary_Apply_Glyph_Deltas'.
975
976 2017-11-28  Werner Lemberg  <wl@gnu.org>
977
978         [truetype] Improving tracing of composite glyphs.
979
980         * src/truetype/ttgload.c (TT_Load_Composite_Glyph)
981         [FT_DEBUG_LEVEL_TRACE]: Show composite glyph information.
982
983 2017-11-27  Werner Lemberg  <wl@gnu.org>
984
985         [type1] Allow (again) `/Encoding' with >256 elements (#52464).
986
987         In version 2.6.1, this has been disallowed to better reject
988         malformed fonts; however, this restriction was too strong.  This
989         time, we only take the first 256 elements into account, since
990         encoding arrays are always accessed with a 8bit integer, according
991         to the PostScript Language Reference.
992
993         * src/type1/t1load.c (parse_encoding): Implement it.
994
995 2017-11-27  Jan Alexander Steffens (heftig)  <jan.steffens@gmail.com>
996
997         Fix last commit (#52522).
998
999         * builds/freetype.mk: Set `FT_OPTION_H' and `FTOPTION_FLAG'
1000         properly if we have `ftoption.h' in `BUILD_DIR'.
1001
1002 2017-11-24  Werner Lemberg  <wl@gnu.org>
1003
1004         [unix] Install a massaged `ftoption.h' file (#51780).
1005
1006         * builds/unix/configure.raw (ftoption_set, ftoption_unset): New
1007         auxiliary functions to construct...
1008         (FTOPTION_H_SED): ... this new variable.
1009         Apply it as a sed argument while copying `ftoption.h' to the
1010         `builds/unix' directory (using `AC_CONFIG_FILES').
1011         Simplify code of test that checks cpp's computation of bit length
1012         (the test previously created an empty `ftoption.h' file and deleted
1013         it immediately afterwards); without this change, it can happen on my
1014         GNU/Linux box that `configure's execution of `config.status' doesn't
1015         create `ftoption.h' (no idea why this happens).
1016
1017         * builds/unix/install.mk (install): Install
1018         `builds/unix/ftoption.h'.
1019
1020         * builds/unix/unix-def.in (DISTCLEAN): Updated.
1021
1022         * builds/unix/.gitignore: Updated.
1023
1024 2017-11-23  Tor Andersson  <tor.andersson@artifex.com>
1025
1026         Silence unused function warnings (#52465).
1027
1028         Some static function declarations cause unused function warnings if
1029         certain config options are turned off via `ftoption.h'.
1030
1031         * src/base/ftbase.h, src/base/ftrfork.c, src/sfnt/ttbdf.h,
1032         src/truetype/ttgxvar.h: Add #ifdef guards around these sections.
1033
1034 2017-11-22  Ewald Hew  <ewaldhew@gmail.com>
1035
1036         * src/psaux/psft.c (cf2_setGlyphWidth): Check format before setting.
1037
1038         Reported as
1039
1040           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4377
1041
1042 2017-11-22  Ewald Hew  <ewaldhew@gmail.com>
1043
1044         [psaux] Fix CFF advance widths. (#52466)
1045
1046         Glyph advance widths were being written to the new `PS_Decoder' but not
1047         saved to the underlying format specific decoder. This caused pure CFF
1048         fonts to have bad advance width.
1049
1050         * include/freetype/internal/psaux.h (PS_Decoder): Change `glyph_width'
1051         field to pointer.
1052         Remove unused fields.
1053         * src/psaux/psobjs.c (ps_decoder_init): Change `glyph_width' from copy
1054         to reference.
1055         Remove unused.
1056         * src/psaux/psft.c (cf2_setGlyphWidth): Update code.
1057
1058 2017-11-15  Vlad Tsyrklevich  <vtsyrklevich@google.com>
1059
1060         * include/freetype/ftrender.h: Fix `FT_Renderer_RenderFunc' type.
1061
1062 2017-11-14  Nikolaus Waxweiler  <madigens@gmail.com>
1063
1064         Use Adobe hinting engine for `light' hinting of both CFF and Type 1.
1065
1066         Since Ewald Hew factored the Adobe hinting engine out of the CFF
1067         driver code, we can now use it on Type 1 (and CID) font formats, as
1068         both have the same hinting philosophy.
1069
1070         This change activates the Adobe hinter when in LIGHT mode, and
1071         therefore always unless explicitly asking for the auto-hinter.  This
1072         makes LIGHT behavior consistent with CFF fonts.  As of this commit,
1073         the hinting engine table looks as follows.
1074
1075                      LIGHT  NORMAL
1076           -------------------------
1077            TrueType  Auto   v40
1078            CFF       Adobe  Adobe
1079            Type 1    Adobe  Adobe
1080
1081 2017-11-10  Yuri Levchenko  <yuri_levchenko@boolat.com>
1082
1083         * CMakeLists.txt: Add `DISABLE_FORCE_DEBUG_PREFIX' option.
1084
1085 2017-11-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1086
1087         * src/base/ftobjs.c (FT_Load_Glyph): Relocate condition.
1088
1089 2017-11-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1090
1091         * src/smooth/ftgrays.c (gray_set_cell): Fix uninitialized variables.
1092
1093 2017-11-03  Ewald Hew  <ewaldhew@gmail.com>
1094
1095         [psaux] Fix PostScript interpreter rewinding in Type 1 mode. (#52251)
1096
1097         The interpreter in Type 1 mode rewinds the charstring after collecting
1098         all hints for building the initial hintmap (commit d52dd7f). However,
1099         some charstrings use `endchar' in a final subroutine call, rewinding to
1100         the start of that subroutine, and only a small section of the actual
1101         glyph is drawn.
1102
1103         * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdENDCHAR>:
1104         Ensure we are on the top level charstring before rewinding.
1105
1106 2017-11-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1107
1108         [truetype] Add more tricky fonts.
1109
1110         See the report by Yang Yinsen.
1111         https://lists.gnu.org/archive/html/freetype-devel/2017-11/msg00000.html
1112
1113         * src/truetype/ttobjs.c (trick_names): Add `DFGothic-EB',
1114         `DFGyoSho-Lt', `DFHSGothic-W5', `DFHSMincho-W3' and `DFHSMincho-W7'.
1115         (tt_check_trickyness_sfnt_ids): Add checksums for DFGothic-EB,
1116         DFGyoSho-Lt, DFHSGothic-W5, DFHSMincho-W3 and DFHSMincho-W7.  Also
1117         add checksums for DLCLiShu and DLCHayBold which their family names
1118         were already listed but their checksums were previously unknown.
1119
1120 2017-11-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
1121
1122         [smooth] Fix complex rendering at high ppem.
1123
1124         We used to split large glyphs into horizontal bands and continue
1125         bisecting them still horizontally if that was not enough.  This is
1126         guaranteed to fail when a single scanline cannot fit into the
1127         rendering memory pool.  Now we bisect the bands vertically so that
1128         the smallest unit is a column of the band height, which is guranteed
1129         to fit into memory.
1130
1131         * src/smooth/ftgrays.c (gray_convert_glyph): Implement it.
1132
1133 2017-10-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
1134
1135         [smooth] Improve complex rendering at high ppem.
1136
1137         At large sizes almost but not exactly horizontal segments can quickly
1138         drain the rendering pool. This patch at least avoids filling the pool
1139         with trivial cells. Beyond this, we can only increase the pool size.
1140
1141         Reported, analyzed, and tested by Colin Fahey.
1142
1143         * src/smooth/ftgrays.c (gray_set_cell): Do not record trivial cells.
1144
1145 2017-10-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
1146
1147         [base] Improve tracing in FT_Load_Glyph, FT_*_Size.
1148
1149         * src/base/ftobjs.c (FT_Load_Glyph): Tag tracing messages with
1150         function name, glyph index, and load flags.
1151         (FT_Select_Metrics, FT_Request_Metrics): Remove all tracing.
1152         (FT_Select_Size, FT_Request_Size): Improve tracing.
1153
1154 2017-10-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
1155
1156         [base] Improve tracing in FT_Render_Glyph.
1157
1158         * src/base/ftobjs.c (FT_Render_Glyph_Internal): Add total coverage
1159         calculations and downgrade Netpbm dump to bitmap:7.
1160
1161 2017-10-15  Ewald Hew  <ewaldhew@gmail.com>
1162
1163         [cff] Fix segfault on missing `psaux' (#52218)
1164
1165         * src/cff/cffload.c (cff_done_blend): Add a check for possible nullptr.
1166
1167         * modules.cfg: Update dependency list.
1168
1169 2017-10-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1170
1171         [base, cff] Fix MSVC warnings.
1172
1173         * src/base/ftobjs.c (FT_New_Library): C4702: unreachable code.
1174         (ft_glyphslot_preset_bitmap): C4244: possible loss of data.
1175         * src/cff/cffload.c (cff_blend_doBlend): C4244: possible loss of data.
1176         Turn `sum' into unsigned.
1177
1178 2017-10-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1179
1180         [base] Netpbm image tracing.
1181
1182         * src/base/ftobjs.c (FT_Load_Glyph): Trace bitmap size.
1183         (FT_Render_Glyph_Internal): Trace bitmap in Netpbm format.
1184
1185         * src/smooth/ftgrays.c (gray_sweep): Sweep remnants of span tracing.
1186
1187 2017-10-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1188
1189         * builds/windows/ftdebug.c (FT_Message): Print to stderr.
1190         * builds/wince/ftdebug.c (FT_Message): Ditto.
1191
1192 2017-10-14  Behdad Esfahbod  <behdad@behdad.org>
1193
1194         [afshaper] Delay creating `hb_set' objects until needed.
1195
1196         In runs on Noto Naskh Arabic, this results in 89 sets created
1197         instead of 340 before.  Makes auto-hinter setup with HarfBuzz
1198         enabled 20% to 30% faster.
1199
1200         * src/autofit/afshaper.c (af_shaper_get_coverage): Implement it.
1201
1202 2017-10-12  Ewald Hew  <ewaldhew@gmail.com>
1203
1204         [type1, cid] Add hinting engine switch.
1205
1206         Implement property service in `type1' and `cid' drivers to allow
1207         switching between FreeType or Adobe hinting engine when both are
1208         available.
1209
1210         * src/cid/cidriver.c (cid_property_{set,get}, cid_services),
1211         src/type1/t1driver.c (t1_property_{set,get}, t1_services): Add
1212         Properties service.
1213
1214         * src/cid/cidobjs.c (cid_driver_init), src/type1/t1objs.c
1215         (T1_Driver_Init): Add default property values.
1216
1217 2017-10-12  Ewald Hew  <ewaldhew@gmail.com>
1218
1219         Add T1_CONFIG_OPTION_OLD_ENGINE configuration option.
1220
1221         This controls whether the old Type 1 engine gets compiled into FreeType.
1222         It is disabled by default.
1223
1224         * devel/ftoption.h, include/freetype/config/ftoption.h
1225         (T1_CONFIG_OPTION_OLD_ENGINE): New macro.
1226
1227         * include/freetype/internal/psaux.h (PS_Decoder): Remove unused field.
1228         * include/freetype/internal/psaux.h, src/cid/cidgload.c
1229         (cid_load_glyph), src/psaux/psauxmod.c, src/psaux/psobjs.c
1230         (ps_builder_add_point), src/psaux/t1decode.c
1231         (t1_lookup_glyph_by_stdcharcode, t1_decoder_parse_glyph,
1232         t1operator_seac, t1_decoder_parse_charstrings), src/psaux/t1decode.h,
1233         src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Surround
1234         relevant code with macro.
1235         Minor code changes.
1236
1237 2017-10-12  Ewald Hew  <ewaldhew@gmail.com>
1238
1239         Extract width parsing from Type 1 parser.
1240
1241         Duplicate the fast advance width calculations from the old parser.
1242         This is to facilitate adding options for compiling out the old parser.
1243
1244         * src/psaux/t1decode.{c,h} (t1_decoder_parse_metrics): New function.
1245         * include/freetype/internal/psaux.h (T1_Decoder_Funcs): New entry
1246         `parse_metrics'.
1247         * src/psaux/psauxmod.c: Set the new entry.
1248
1249         * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String),
1250         src/cid/cidgload.c (cid_load_glyph): Separate
1251         conditional for selecting engine.
1252
1253 2017-10-09  Werner Lemberg  <wl@gnu.org>
1254
1255         * src/base/ftoutln.c (FT_Outline_Translate): Fix integer overflow.
1256
1257         Reported as
1258
1259           https://bugs.chromium.org/p/chromium/issues/detail?id=772775
1260
1261 2017-10-08  Werner Lemberg  <wl@gnu.org>
1262
1263         * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Integer overflows.
1264
1265         Reported as
1266
1267           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3579
1268
1269 2017-10-07  Werner Lemberg  <wl@gnu.org>
1270
1271         [sfnt] Adjust behaviour of PS font names for variation fonts.
1272
1273         * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Use a named instance's
1274         PS name only if no variation is applied.
1275
1276 2017-10-07  Werner Lemberg  <wl@gnu.org>
1277
1278         [cff, truetype] Adjust behaviour of named instances.
1279
1280         This commit completely separates the interaction between named
1281         instances and variation functions.  In particular, resetting the
1282         variation returns to the current named instance (if set) and not to
1283         the base font.
1284
1285         As a side effect, variation functions no longer change the named
1286         instance index.
1287
1288         * src/cff/cffobjs.c (cff_face_init): Use MM service's `set_instance'
1289         function.
1290         Also apply `MVAR' table to named instances.
1291
1292         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Add cast.
1293         (tt_set_mm_blend): No longer check whether requested variation
1294         coincides with a named instance.
1295         (TT_Set_Var_Design): Use current named instance for default
1296         coordinates.
1297         * src/truetype/ttobjs.c (tt_face_init): Use `TT_Set_Named_Instance'.
1298
1299 2017-10-07  Werner Lemberg  <wl@gnu.org>
1300
1301         Make `FT_Set_Named_Instance' work.
1302
1303         * src/cff/cffdrivr.c (cff_set_instance): New function.
1304         (cff_service_multi_masters): Register it.
1305
1306         * src/truetype/ttgxvar.c (TT_Set_Named_Instance): New function.
1307         * src/truetype/ttgxvar.h: Updated.
1308         * src/truetype/ttdriver.c (tt_service_gx_multi_masters): Register
1309         it.
1310
1311         * src/type1/t1load.c (T1_Reset_MM_Blend): New function.
1312         * src/type1/t1load.h: Updated.
1313         * src/type1/t1driver.c (t1_service_multi_masters): Register it.
1314
1315 2017-10-07  Werner Lemberg  <wl@gnu.org>
1316
1317         Make `FT_FACE_FLAG_VARIATION' work.
1318
1319         * include/freetype/internal/tttypes.h (TT_Face): Remove
1320         `is_default_instance'; this can be replaced with a combination of
1321         `FT_IS_VARIATION' and `FT_IS_INSTANCE'.
1322
1323         * src/cff/cffdrivr.c (cff_get_advances): Updated.
1324
1325         * src/sfnt/sfdriver.c (sfnt_get_ps_name), src/sfnt/sfobjs.c
1326         (sfnt_init_face): Updated.
1327
1328         * src/truetype/ttdriver.c (tt_get_advances), src/truetype/ttgload.c
1329         (TT_Process_Simple_Glyph, load_truetype_glyph, IS_DEFAULT_INSTANCE),
1330         src/truetype/ttgxvar.c (tt_set_mm_blend): Updated.
1331         * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design):
1332         Handle `FT_FACE_FLAG_VARIATION'.
1333
1334         * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Handle
1335         `FT_FACE_FLAG_VARIATION'.
1336
1337 2017-10-07  Werner Lemberg  <wl@gnu.org>
1338
1339         New function `FT_Set_Named_Instance'.
1340
1341         No effect yet.
1342
1343         * src/base/ftmm.c (FT_Set_Named_Instance): New function.
1344
1345         * include/freetype/ftmm.h: Updated.
1346
1347 2017-10-07  Werner Lemberg  <wl@gnu.org>
1348
1349         Add macros for checking whether a font variation is active.
1350
1351         * include/freetype/freetype.h (FT_FACE_FLAG_VARIATION,
1352         FT_IS_VARIATION): New macros.
1353         No effect yet.
1354
1355 2017-10-07  Werner Lemberg  <wl@gnu.org>
1356
1357         Add framework for setting named instance in MM service.
1358
1359         * include/freetype/internal/services/svmm.h (FT_Set_Instance_Func):
1360         New function typedef.
1361         (MultiMasters): Add `set_instance' member.
1362         (FT_DEFINE_SERVICE_MULTIMASTERSREC): Updated.
1363
1364         * src/cff/cffdrivr.c (cff_service_multi_masters),
1365         src/truetype/ttdriver (tt_service_gx_multi_masters),
1366         src/type1/t1driver.c (t1_service_multi_masters): Updated.
1367
1368 2017-10-07  Werner Lemberg  <wl@gnu.org>
1369
1370         [type1] Minor code shuffling.
1371
1372         * src/type1/t1load.c (T1_Set_MM_Blend): Make it a wrapper of...
1373         (t1_set_mm_blend): ...this new function.
1374         (T1_Set_MM_Design): Use `t1_set_mm_blend'.
1375
1376 2017-10-05  Werner Lemberg  <wl@gnu.org>
1377
1378         * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Fix integer
1379         overflow.
1380
1381         Reported as
1382
1383           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3539
1384
1385 2017-10-05  Werner Lemberg  <wl@gnu.org>
1386
1387         Fix compiler warnings.
1388
1389         * src/cff/cffdrivr.c (cff_ps_get_font_extra): Avoid code that relies
1390         on numeric overflow.
1391         Add cast.
1392
1393         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix variable
1394         types, add cast.
1395
1396 2017-10-04  John Tytgat  <John.Tytgat@esko.com>
1397
1398         [cff] Add support for `FSType'.
1399
1400         * include/freetype/internal/cfftypes.h (CFF_FontRec): Add
1401         `font_extra' entry.
1402
1403         * src/cff/cffdrivr.c (cff_ps_get_font_extra): New function to
1404         retrieve FSType info from the embedded PostScript data.
1405         (cff_service_ps_info): Register function.
1406
1407         * src/cff/cffload.c (cff_font_done): Free `font_extra'.
1408
1409 2017-09-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
1410
1411         Signedness fixes in bitmap presetting.
1412
1413         Reported as
1414
1415           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3514.
1416
1417         * src/raster/ftrend1.c (ft_raster1_render): Explicitly signed height.
1418         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
1419         * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Explicitly unsigned
1420         subtraction.
1421
1422 2017-09-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
1423
1424         Bitmap metrics presetting [2/2].
1425
1426         * src/base/ftobjs.c (FT_Load_Glyph): Preset the bitmap metrics when
1427         appropriate but `FT_Render_Glyph' is not called.
1428         * include/freetype/freetype.h (FT_GlyphSlotRec): Document the change.
1429
1430 2017-09-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
1431
1432         [smooth, raster] Miscellaneous cleanups.
1433
1434         * src/raster/ftrend1.c (ft_raster1_render): Clean up the exit.
1435         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Reduce
1436         translations and clean up the exit.
1437         (ft_smooth_render_lcd, ft_smooth_render_lcd): Remove unused `error'.
1438
1439 2017-09-28  Ben Wagner  <bungeman@google.com>
1440
1441         [truetype] Really, really fix #52082.
1442
1443         * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.
1444
1445 2017-09-28  Werner Lemberg  <wl@gnu.org>
1446
1447         * src/psaux/psintrp.c (cf2_doStems): Fix integer overflow.
1448
1449         Reported as
1450
1451           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3510
1452
1453 2017-09-28  Ewald Hew  <ewaldhew@gmail.com>
1454
1455         * src/cid/cidgload.c (cid_slot_load_glyph): Fix memory leak.
1456
1457         Reported as
1458
1459           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3489
1460
1461 2017-09-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
1462
1463         Bitmap metrics presetting [1/2].
1464
1465         This mainly just extracts the code for presetting the bitmap metrics
1466         from the monochrome, grayscale, and LCD renderers into a separate
1467         function.
1468
1469         * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): New function that
1470         calculates prospective bitmap metrics for the given rendering mode.
1471         * include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
1472         Declare it.
1473
1474         * src/base/ftlcdfil.c (ft_lcd_padding): New helper function that adds
1475         padding to CBox taking into account pecularities of LCD rendering.
1476         * include/freetype/ftlcdfil.h (ft_lcd_padding): Declare it.
1477
1478         * src/raster/ftrend1.c (ft_raster1_render): Reworked to use
1479         `ft_glyphslot_preset_bitmap'.
1480         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
1481         (ft_smooth_render_lcd, ft_smooth_render_lcd): The pixel_mode setting
1482         is moved to `ft_glyphslot_preset_bitmap'.
1483
1484 2017-09-28  Ewald Hew  <ewaldhew@gmail.com>
1485
1486         [psaux] Fix compiler warning.
1487
1488         * src/psaux/pshints.c (cf2_hintmap_dump): Add switch for tracing
1489         code.
1490
1491 2017-09-27  Werner Lemberg  <wl@gnu.org>
1492
1493         * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
1494
1495 2017-09-25  Werner Lemberg  <wl@gnu.org>
1496
1497         [psaux] Fix compiler warnings.
1498
1499         * src/psaux/psft.c (cf2_initLocalRegionBuffer): Remove redundant
1500         test.
1501
1502         * src/psaux/psintrp.c (cf2_interpT2CharString)
1503         <cf2_escCALLOTHERSUBR>: Add casts.
1504
1505         * src/psaux/psobjs.c (ps_decoder_init): Add cast.
1506
1507 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1508
1509         [psaux] Minor fixes.
1510
1511         * include/freetype/internal/psaux.h, src/psaux/psobjs.{c,h}:
1512         Rearrange `ps_builder_init' arguments to conventional order.
1513
1514         * src/psaux/psft.c (cf2_decoder_parse_charstrings): Add a check and
1515         notice for `SubFont' in Type 1 mode.
1516
1517 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1518
1519         [psaux] Move `psdecode' into `psobjs'.
1520
1521         As the former only contains a single procedure, move it into
1522         `psobjs' for simplicity.  Also change the parameter order to the
1523         conventional one.
1524
1525         * src/psaux/psdecode.c (ps_decoder_init): Moved to...
1526         * src/psaux/psobjs.c: ...Here.
1527         * src/psaux/psdecode.h, src/psaux/psobjs.h: Ditto.
1528
1529         * include/freetype/internal/psaux.h (PSAux_ServiceRec): Update
1530         `ps_decoder_init' function signature.
1531
1532         * src/cff/cffgload.c, src/cid/cidgload.c, src/type1/t1gload.c:
1533         Update calls.
1534
1535         * src/psaux/psaux.c, src/psaux/psauxmod.c: Update includes.
1536
1537         * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRV_SRC):
1538         Update file references.
1539
1540 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1541
1542         [psaux] Fix Type 1 hinting.
1543
1544         Type 1 hinting breaks sometimes when mid-charstring hints should
1545         have been in the initial hintmap.  This fix adds a preprocessing
1546         pass that reads all hints and builds the correct initial hintmap
1547         first, before proceeding to build the glyph outline.
1548
1549         * src/psaux/psintrp.c (cf2_interpT2CharString): New
1550         `initial_map_ready' boolean flag.
1551         Ignore outline commands and hint changes on first pass.
1552         <cf2_cmdENDCHAR>: Add section to build hintmap and rewind.
1553
1554 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1555
1556         [psaux] Add tracing for hints.
1557
1558         * src/psaux/pshints.c (cf2_hintmap_dump): New function.
1559         (cf2_hintmap_insertHint): Trace incoming and inserted hints.
1560         (cf2_hintmap_build): Dump hintmap before and after hint adjustment.
1561
1562 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1563
1564         [psaux] Minor fixes.
1565
1566         * src/psaux/psintrp.c (cf2_interpT2CharString): Fix check for pop
1567         results.
1568         s/font->decoder/decoder/ where necessary.
1569         <cf2_cmdHSTEM, cf2_cmdVSTEM, cf2_escHSTEM3, cf2_escVSTEM3>: Use
1570         offset parameter in `cf2_doStems' instead of doing correction for
1571         left-sidebearing.
1572
1573 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1574
1575         [cid] Use the new engine.
1576
1577         * src/cid/cidgload.c: Update includes.
1578         (cid_load_glyph, cid_slot_load_glyph): Implement changes to glyph
1579         loading code as with `type1' module.
1580
1581 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1582
1583         [cid] Add Adobe engine configuration.
1584
1585         This is similar to what was done in the `type1' module.
1586
1587         * src/cid/cidriver.c (t1cid_driver_class): Update declaration.
1588         * src/cid/cidobjs.c: Include FT_TYPE1_DRIVER_H.
1589         (cid_driver_init): Update code.
1590
1591 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1592
1593         [psaux] Change subfont synthesis for CID fonts.
1594
1595         Change `t1_make_subfont' to take in the Private dict record as an
1596         argument.  This is because Type 1 and CID font records in FreeType
1597         have this in different places.
1598
1599         * src/psaux/psobjs.c (t1_make_subfont): Change `T1_Face' to
1600         `FT_Face' so that CID is also accepted.
1601         Take `PS_Private' as an argument and let caller figure out where the
1602         Private dict actually is.
1603         Update references.
1604
1605         * include/freetype/internal/psaux.h, src/psaux/psobjs.h: Update
1606         declaration.
1607
1608         * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Update
1609         call.
1610
1611 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1612
1613         [type1] Switch to Adobe engine.
1614
1615         * src/type1/t1objs.c (T1_Driver_Init): Set default to Adobe engine.
1616
1617 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1618
1619         [psaux] Extend Adobe interpreter (seac).
1620
1621         This concludes the changes needed to add Type 1 support.
1622
1623         * src/psaux/psintrp.c: Update includes.
1624         (cf2_interpT2CharString) <cf2_escSEAC>: Implement this similarly to
1625         implied seac for CFF.
1626
1627         * src/psaux/t1decode.c (t1_lookup_glyph_by_stdcharcode_ps): New
1628         function to look up the glyph index.
1629
1630         * src/psaux/psft.c (cf2_getT1SeacComponent,
1631         cf2_freeT1SeacComponent): New functions to get the charstrings for
1632         seac components.
1633
1634         * src/psaux/t1decode.h, src/psaux/psft.h: Update declarations.
1635
1636 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1637
1638         [psaux] Extend Adobe interpreter (flex in callothersubr).
1639
1640         * src/psaux/psintrp.c (cf2_interpT2CharString)
1641         <cf2_escCALLOTHERSUBR>: Fix Flex feature handling (OtherSubrs 0, 1,
1642         2).
1643         <cf2_cmdRMOVETO>: Do not actually move the `glyphPath' while doing
1644         flex.  This is to avoid closing the current contour.
1645
1646 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1647
1648         [psaux] Extend Adobe interpreter (callothersubr).
1649
1650         * src/psaux/psintrp.c (cf2_interpT2CharString)
1651         <cf2_escCALLOTHERSUBR>: Copy code from
1652         `t1_decoder_parse_charstrings' (in `t1decode.c').
1653         OtherSubr 3 (change hints) should reset the hintmask, so that the
1654         new hints are applied.
1655         Fix function calls and stack access.
1656
1657 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1658
1659         [psaux] Extend Adobe interpreter (pop).
1660
1661         * src/psaux/psintrp.c (cf2_interpT2CharString): Change how unhandled
1662         OtherSubr results are stored.  Implement the PostScript stack using
1663         an array.
1664         <cf2_escPOP>: Ensure that the stack is not cleared after getting
1665         `OtherSubr' results.
1666         Fix stack access.
1667
1668 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1669
1670         [psaux] Extend Adobe interpreter (callsubr).
1671
1672         * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
1673         Type 1 mode.
1674
1675         * src/psaux/psft.c (cf2_initLocalRegionBuffer): Add Type 1 mode.
1676
1677 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1678
1679         [psaux] Extend Adobe interpreter (div, four-byte numbers).
1680
1681         * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_escDIV>: Add
1682         Type 1 mode.  Type 1 requires large integers to be followed by
1683         `div'; cf. `Adobe Type 1 Font Format', section 6.2.
1684         <op == 255>: Push Type 1 four-byte numbers as `Int' always.  This is
1685         to ensure `div' and `callsubr' get values they can use.
1686
1687 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1688
1689         [psaux] Extend Adobe interpreter (hints).
1690
1691         * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdHSTEM,
1692         cf2_cmdVSTEM>: Add correction for left sidebearing in Type 1 mode.
1693         Allow adding hints mid-charstring.
1694         <cf2_escVSTEM3, cf2_escHSTEM3>: Translate into equivalent commands
1695         for three normal stem hints.  This requires some recalculation of
1696         stem positions.
1697         Correction for left sidebearing.
1698
1699 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1700
1701         [psaux] Extend Adobe interpreter (hsbw, sbw).
1702
1703         * src/psaux/psintrp.c (cf2_doStems): `hsbw' or `sbw' must be the
1704         first operation in a Type 1 charstring.
1705         (cf2_interpT2CharString): Remove unused variables.
1706         <cf2_cmdHMOVETO, cf2_cmdVMOVETO, cf2_cmdRMOVETO>: `hsbw' or `sbw'
1707         must be the first operation in a Type 1 charstring.
1708         <cf2_cmdHSBW, cf2_escSBW>: Fix data access and add correction for
1709         left sidebearing.
1710
1711 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1712
1713         [psaux] Extend Adobe interpreter (setcurrentpoint).
1714
1715         * src/psaux/psintrp.c (cf2_interpT2CharString)
1716         <cf2_escSETCURRENTPT>: Fix stack access.
1717
1718 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1719
1720         [psaux] Extend Adobe interpreter (closepath).
1721
1722         * src/psaux/psintrp.c (cf2_interpT2CharString) <c2f_cmdCLOSEPATH>:
1723         Use the right builder function.  We can use the `haveWidth' boolean
1724         already present, instead of implementing `parse_state'.
1725
1726 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1727
1728         [psaux] Add Type 1 operations to Adobe CFF interpreter.
1729
1730         The following Type 1 specific ops have been added (copied from
1731         `t1decode'):
1732
1733           closepath
1734           vstem3
1735           hstem3
1736           seac
1737           sbw
1738           callothersubr
1739           pop
1740           setcurrentpoint
1741           hsbw
1742
1743         The following require a Type 1 mode, because of differences in
1744         specification:
1745
1746           hstem
1747           vstem
1748           vmoveto
1749           callsubr
1750           div
1751           rmoveto
1752           hmoveto
1753           Numbers
1754
1755         The subsequent commits will implement these changes and adapt
1756         accesses of data and objects to the new interpreter.
1757
1758         NOTE: Will not compile in the meantime!
1759
1760         * src/psaux/psintrp.c: Add opcodes to enum.
1761         (cf2_interpT2CharString): Copy relevant code over from
1762         `t1_decoder_parse_charstrings' (in `t1decode.c').
1763
1764 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1765
1766         [type1] Fixes for rendering.
1767
1768         The Type 1 advance width calculation passes null for glyph slot,
1769         etc, which can cause null pointer access in the new interpreter.
1770         Fall back to the old one for now.
1771
1772         Fix the large glyph retry code and ensure hinting and scaling flags
1773         are set properly.
1774
1775         * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add a
1776         check for metrics_only.
1777         Set the `force_scaling' flag.
1778         (T1_Parse_Glyph): Updated.
1779         (T1_Load_Glyph): Add `hinting' and `scaled' flags.
1780
1781 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1782
1783         [psaux] Add missing objects (2/2).
1784
1785         Synthesize a `SubFont' object for Type 1 fonts.  This is used in the
1786         interpreter to access Private dict data, which are stored in
1787         different places for Type 1 and CFF.  This allows the same data to
1788         be used in either mode.
1789
1790         * src/psaux/psobjs.c (t1_make_subfont): New procedure to copy
1791         required values to a dummy `CFF_SubFont' object.  This is similar to
1792         `cff_make_private_dict'.
1793         * src/psaux/psobjs.h: Add the new declaration.
1794
1795         * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Ditto.
1796         Add this to the PSAux Service for future use with CID fonts.
1797
1798         * src/type1/t1gload.c: Include FT_INTERNAL_CFF_TYPES_H.
1799         (T1_Parse_Glyph_And_Get_Char_String): Add the call.
1800
1801 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1802
1803         [psaux] Add missing objects for Type 1 (1/2).
1804
1805         Move `CF2_Font' instance to `PS_Decoder'.  This is the context for
1806         the interpreter and since it is currently stored in `CFF_Font', is
1807         unavailable in Type 1 mode.
1808
1809         * include/freetype/internal/psaux.h (T1_Decoder, PS_Decoder): New
1810         `cf2_instance' field.
1811
1812         * src/psaux/psdecode.c (ps_decoder_init): Copy `cf2_instance' to
1813         `PS_Decoder'.
1814
1815         * src/psaux/t1decode.c (t1_decoder_done): Add finalization code.
1816
1817         * src/psaux/psft.c (cf2_decoder_parse_charstrings): Update accesses.
1818
1819 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1820
1821         Allow `type1' module to use the Adobe engine.
1822
1823         Add the callback and some conditionals to switch between the two
1824         engines.
1825
1826         * include/freetype/internal/psaux.h (T1_Decoder_FuncsRec): Change
1827         function declarations.
1828         * src/psaux/psauxmod.c (T1_Decoder_FuncsRec): Register the
1829         callbacks.
1830
1831         * src/psaux/psobjs.c (ps_builder_add_point): Add conditionals for
1832         number conversion.
1833
1834         * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add code
1835         to choose which renderer to use.
1836
1837         * src/cid/cidgload.c (cid_load_glyph): Update call.
1838         * src/base/ftobjs.c, src/psaux/psobjs.c, src/type1/t1gload.c: Update
1839         includes.
1840
1841 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1842
1843         [type1] Add Adobe engine configuration.
1844
1845         Use the previously changed PS_Driver in type1 module to store
1846         hinting engine configuration.
1847
1848         * include/freetype/ftt1drv.h: New file.
1849         Duplicate and rename config options from CFF.
1850         * include/freetype/config/ftheader.h (FT_TYPE1_DRIVER_H): New macro.
1851
1852         * src/type1/t1driver.c (t1_driver_class): Update declaration.
1853         * src/type1/t1objs.c: Include FT_TYPE1_DRIVER_H.
1854         (T1_Driver_Init): Update code.
1855
1856 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1857
1858         [cff] Move and rename `CFF_Driver'.
1859
1860         This is so that we can use the same hinting engine parameters for
1861         Type 1.
1862
1863         * include/freetype/internal/cffotypes.h (CFF_Driver): Rename and
1864         move to...
1865         * include/freetype/internal/psaux.h (PS_Driver): ...here.
1866
1867         * src/cff/cffdrivr.c, src/cff/cffgload.c, src/cff/cffload.c,
1868         src/cff/cffobjs.c, src/cff/cffobjs.h, src/psaux/psft.c,
1869         src/psaux/psobjs.c: Update references.
1870
1871 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1872
1873         [psaux, type1] Reorganize object fields.
1874
1875         Make some fields more generic, so that we can access them the same
1876         way regardless of Type 1 or CFF.
1877
1878         * include/freetype/internal/psaux.h (PS_Builder): Change `TT_Face'
1879         to `FT_Face'.
1880         Remove unused fields.
1881
1882         * src/psaux/psft.c: Update all accesses of `PS_Builder.face'.
1883         Add some asserts to guard against casting `T1_Face' as `TT_Face'.
1884
1885         * src/type1/t1objs.h (T1_GlyphSlot): Reorder fields to follow
1886         `CFF_GlyphSlot', so that we can pretend they are the same in the
1887         interpreter.
1888
1889         * src/psaux/psobjs.c (ps_builder_init, ps_builder_add_point):
1890         Updated with above changes.
1891
1892 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1893
1894         [psaux] Prepare for Type 1 mode.
1895
1896         Add some checks for Type 1 data passing through.
1897
1898         * src/psaux/psfont.h (CF2_Font): Add `isT1' flag.
1899         * src/psaux/psfont.c (cf2_font_setup): Skip the variations and blend
1900         code which is not applicable for Type 1.
1901
1902         * src/psaux/psft.c (cf2_decoder_parse_charstrings): Avoid accessing
1903         `decoder->cff' in Type 1 mode.
1904         Copy `is_t1' flag to `CF2_Font'.
1905
1906 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1907
1908         [psaux, cff] Use the new objects.
1909
1910         * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Fix
1911         switching between new and old engines.
1912
1913         * src/cff/cffgload.c, src/cff/cffparse.c: Update calls.
1914
1915         * src/psaux/psblues.c, src/psaux/psfont.c, src/psaux/psfont.h,
1916         src/psaux/psft.c, src/psaux/psft.h, src/psaux/psintrp.c: Update all
1917         to use new objects.
1918
1919 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1920
1921         [psaux] Objects for new interpreter (part 2).
1922
1923         Make the new objects copy over values.  They are essentially wrapper
1924         types for the different decoders/builders.
1925
1926         * include/freetype/internal/psaux.h: Update declarations.
1927         (PS_Builder): Add `is_t1' flag.
1928         (PS_Decoder_{Get,Free}_Glyph_Callback): Renamed to...
1929         (CFF_Decoder_{Get,Free}_Glyph_Callback: ... this.
1930         (PS_Decoder): Updated.
1931         Add `t1_parse_callback' member.
1932         (PSAux_ServiceRec): Add `ps_decoder_init' member.
1933
1934         * src/psaux/psdecode.h, src/psaux/psobjs.h: Update declarations.
1935
1936         * src/psaux/psdecode.c, src/psaux/psobjs.c: Implement copy with two
1937         modes.
1938
1939         * src/psaux/psauxmod.c: Add builder and decoder functions to `PSAux'
1940         service.
1941
1942 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1943
1944         [psaux] Add objects for new interpreter.
1945
1946         Introduce `PS_Decoder' and `PS_Builder' which include all fields
1947         from either Type 1 or CFF decoders/builders.
1948
1949         * include/freetype/internal/psaux.h (PS_Builder, PS_Decoder): New
1950         structs.
1951
1952         * src/psaux/psobjs.c, src/psaux/psobjs.h: Add `PS_Builder'
1953         functions.
1954
1955         * src/psaux/psdecode.c, src/psaux/psdecode.h: New files to hold
1956         `PS_Decoder' initialization functions.
1957
1958         * src/psaux/psaux.c, src/psaux/Jamfile (_sources),
1959         src/psaux/rules.mk (PSAUX_DRV_SRC): Updated.
1960
1961 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1962
1963         [psaux] Rename files.
1964
1965         Replace the `cf2' file name prefix with `ps' as the Adobe engine
1966         will be used for both PostScript Types 1 and 2 (CFF) instead of just
1967         CFF.
1968
1969         s/cf2/ps/ for all following.
1970
1971         * src/psaux/cf2*: Rename files.
1972         * src/psaux/*: Update includes.
1973
1974         * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRC_SRC,
1975         PSAUX_DRV_H): Update file references.
1976
1977 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1978
1979         [psaux] Minor fix.
1980
1981         Use `MultiMasters' service in `psaux' instead of a call to `cff'.
1982         The project builds if CFF_CONFIG_OPTION_OLD_ENGINE is not defined.
1983
1984         * src/psaux/cf2ft.c: Update includes.
1985         (cf2_getNormalizedVector): Use `mm->get_var_blend' instead of
1986         `cff_get_var_blend'.
1987
1988 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1989
1990         [psaux, cff] Move `cff_random' into `psaux' service.
1991
1992         NOTE: Does not compile!
1993
1994         Minor fix to allow both `cff' and `psaux' to use `cff_random'.
1995
1996         * src/cff/cffload.c (cff_random): Move to...
1997         * src/psaux/psobjs.c: Here.
1998         * src/cff/cffload.h: Move corresponding declaration to
1999         `src/psaux/psobjs.h'.
2000
2001         * include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the
2002         function here...
2003         * src/psaux/psauxmod.c: And here.
2004
2005         * src/cff/cffload.c, src/psaux/cf2intrp.c: Update code.
2006
2007 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2008
2009         [cff] Move struct declarations to `freetype/internal'.
2010
2011         NOTE: Does not compile!
2012
2013         This is so that the CFF functions moved to `psaux' can access the
2014         same structs that they need.
2015
2016         * src/cff/cfftypes.h: Moved to...
2017         * include/freetype/internal/cfftypes.h: ...Here.
2018
2019         * src/cff/cffobjs.h: Moved the struct declarations to...
2020         * include/freetype/internal/cffotypes.h: ... this new file.
2021
2022         * include/freetype/internal/internal.h (FT_INTERNAL_CFF_TYPES_H,
2023         FT_INTERNAL_CFF_OBJECT_TYPES_H): New macros.
2024
2025         * src/cff/cffcmap.h, src/cff/cffdrivr.c, src/cff/cffgload.c,
2026         src/cff/cffgload.h, src/cff/cffload.h, src/cff/cffobjs.c,
2027         src/cff/cffobjs.h, src/cff/cffparse.h, src/psaux/psobjs.h,
2028         include/freetype/internal/psaux.h,
2029         include/freetype/internal/services/svcfftl.h: Update includes.
2030
2031         * src/cff/rules.mk (CFF_DRV_H): Updated.
2032
2033 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2034
2035         [psaux, cff] Add new service for inter-module calls.
2036
2037         NOTE: Does not compile!
2038
2039         This is to allow CFF functions moved to `psaux' to call functions
2040         declared in `src/cff/cffload.h'.
2041
2042         * include/freetype/internal/services/svcfftl.h: New file, setting up
2043         a `CFFLoad' service.
2044
2045         * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC10,
2046         FT_DEFINE_SERVICEDESCREC): New macros.
2047         (FT_SERVICE_CFF_TABLE_LOAD_H): New macro.
2048
2049         * src/cff/cffdrivr.c, src/cff/cffpic.h: Register the new service.
2050
2051         * src/cff/cfftypes.h (CFF_FontRec), src/psaux/cf2font.h
2052         (CF2_FontRec): Add service interface.
2053
2054         * src/cff/cffobjs.c, src/psaux/cf2font.c, src/psaux/cf2ft.c,
2055         src/psaux/cf2intrp.c, src/psaux/cffdecode.c: Use the new service.
2056
2057 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2058
2059         [psaux, cff] Add callbacks for inter-module calls.
2060
2061         NOTE: Does not compile!
2062
2063         * include/freetype/internal/psaux.h: Add function pointer
2064         declarations.
2065
2066         * src/psaux/cffdecode.c (cff_decoder_init): Update to take in
2067         callbacks.
2068         * src/psaux/cffdecode.h: Ditto.
2069
2070         * src/cff/cffgload.c (cff_compute_max_advance, cff_slot_load):
2071         Update calls to pass in callbacks.
2072         * src/psaux/cf2ft.c, src/psaux/cffdecode.c: Use them.
2073
2074 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2075
2076         [psaux, cff] Create new `PSAux' service interface entries.
2077
2078         NOTE: Does not compile!
2079
2080         * include/freetype/internal/psaux.h: Include
2081         FT_INTERNAL_TRUETYPE_TYPES_H.
2082         (CFF_Builder_FuncsRec, CFF_Decocer_FuncsRec): New function tables.
2083         (CFF_Builder): Updated.
2084         Fix for forward declaration.
2085         (PSAux_ServiceRec): New field `cff_decoder_funcs'.
2086
2087         * src/psaux/psauxmod.c (cff_builder_funcs, cff_decoder_funcs): New
2088         function tables.
2089         (PSAux_Interface): Updated.
2090
2091         * include/freetype/internal/tttypes.h (TT_FaceRec): Add `psaux'
2092         service interface.
2093
2094         * src/cff/cffgload.c, src/cff/cffobjs.c, src/cff/cffparse.c: Update
2095         function calls to use psaux service.
2096
2097 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2098
2099         [psaux, cff] Move CFF builder components into `psaux' module.
2100
2101         NOTE: Does not compile!
2102
2103         * src/cff/cffgload.c
2104         (cff_builder_{init,done,add_point,add_point1,add_contour,start_point,close_contour},
2105         cff_check_points): Move to...
2106         * src/psaux/psobjs.c: Here.
2107
2108         * src/cff/cffgload.h: Move corresponding declarations to
2109         `src/psaux/psobjs.h'.
2110
2111         * src/cff/cffgload.h (CFF_Builder): Move struct declaration to...
2112         * include/freetype/internal/psaux.h: Here.
2113
2114 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2115
2116         [psaux, cff] Move CFF decoder components into `psaux' module.
2117
2118         NOTE: Does not compile!
2119
2120         * src/cff/cffgload.c (CFF_Operator,
2121         CFF_COUNT_{CHECK_WIDTH,EXACT,CLEAR_STACK}, cff_argument_counts,
2122         cff_operator_seac, cff_compute_bias,
2123         cff_lookup_glyph_by_stdcharcode,
2124         cff_decoder_{parse_charstrings,init,prepare}): Move to...
2125         * src/psaux/cffdecode.c: This new file.
2126
2127         * src/cff/cffgload.h: Move corresponding declarations to...
2128         * src/psaux/cffdecode.h: This new file.
2129
2130         * src/cff/cffgload.h (CFF_MAX_{OPERANDS,SUBRS_CALLS,TRANS_ELEMENTS},
2131         CFF_Decoder_Zone, CFF_Decoder): Move declarations to...
2132         * include/freetype/internal/psaux.h: Here.
2133
2134         * src/psaux/cf2ft.h: Update include.
2135
2136         * src/psaux/psaux.c, src/psaux/rules.mk (PSAUX_DRV_SRC): Update with
2137         the new file.
2138
2139 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2140
2141         [psaux, cff] Move Adobe's engine components into `psaux' module.
2142
2143         This is the first patch of a sequence to move the Type 2 charstring
2144         processing capability from the `cff' module to the `psaux' module.
2145
2146         NOTE: Does not compile!
2147
2148         * src/cff/cf2*: Move these files to...
2149         * src/psaux/cf2*: Here.
2150
2151         * src/cff/Jamfile (_sources), src/cff/rules.mk (CFF_DRV_SRC,
2152         CFF_DRV_H), src/cff/cff.c, src/cff/cffgload.c: Remove file
2153         references.
2154
2155         * src/psaux/Jamfile (_sources), src/psaux/rules.mk, src/psaux/psaux.c
2156         (PSAUX_DRV_SRC, PSAUX_DRV_H): Add file references.
2157
2158 2017-09-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
2159
2160         Tweak per-face LCD filtering controls.
2161
2162         Thing are simpler with a NULL-function pointer.
2163
2164         * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
2165         pointer to the filter function.
2166         (FT_LibraryRec): Remove unused `lcd_filter'.
2167         (FT_Bitmap_LcdFilterFunc, ft_lcd_filter_fir):  Move from here...
2168         * include/freetype/ftlcdfil.h (FT_Bitmap_LcdFilterFunc,
2169         ft_lcd_filter_fir): ... to here.
2170
2171         * src/base/ftobjs.c (ft_open_face_internal): NULL-initialize the
2172         per-face filter.
2173         (FT_Face_Properties): Set it.
2174         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Simplify.
2175
2176         * src/base/ftlcdfil.c (ft_lcd_filter_fir, FT_Libary_SetLcdFilter):
2177         Minor.
2178
2179 2017-09-24  Jonathan Kew  <jfkthame@gmail.com>
2180
2181         [sfnt] Fix `premultiply_data' (#52092).
2182
2183         * src/sfnt/pngshim.c (premultiply_data): Don't use vector extension
2184         if we have less than 16 bytes of data.
2185
2186 2017-09-24  Werner Lemberg  <wl@gnu.org>
2187
2188         [otvalid] Fix handling of ValueRecords.
2189
2190         For GPOS pair positioning format 1 the description of ValueRecords
2191         in the OpenType specification (1.8.2, from today) is wrong – the
2192         offset has to be taken from the parent structure; in this case the
2193         `PairSet' table.
2194
2195         * src/otvalid/otvgpos.c (otv_PairSet_validate): Set `extra3'.
2196         (otv_PairPos_validate): Adjust.
2197
2198 2017-09-23  Werner Lemberg  <wl@gnu.org>
2199
2200         [otvalid] Handle `GSUB' and `GPOS' v1.1 tables.
2201
2202         * src/otvalid/otvgsub.c (otv_GSUB_validate), src/otvalid/otvgpos.c
2203         (otv_GPOS_validate): Implement it.
2204
2205 2017-09-23  Werner Lemberg  <wl@gnu.org>
2206
2207         [otvalid] Update common table handling to OpenType 1.8.2.
2208
2209         * src/otvalid/otvcommn.c (otv_Device_validate): Handle
2210         VariationIndex subtable.
2211         (otv_Lookup_validate): Handle MarkFilteringSet.
2212
2213 2017-09-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
2214
2215         [build] Windows-style DLL versioning.
2216
2217         * build/windows/ftver.rc: New VERSIONINFO resource.
2218         * build/windows/vc2010/freetype.vcxproj: Further improvements.
2219
2220 2017-09-23  Ben Wagner  <bungeman@google.com>
2221
2222         [truetype] Really fix #52082.
2223
2224         * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.
2225
2226 2017-09-23  Werner Lemberg  <wl@gnu.org>
2227
2228         [otvalid] Handle `GDEF' v1.2 and v1.3 tables.
2229
2230         No validation of variation stuff yet.
2231
2232         * src/otvalid/otvgdef.c (otv_MarkGlyphSets_validate): New function.
2233         (otv_GDEF_validate): Implement it.
2234
2235 2017-09-22  Werner Lemberg  <wl@gnu.org>
2236
2237         [otvalid] Handle `BASE' v1.1 table.
2238
2239         No validation of variation stuff yet.
2240
2241         * src/otvalid/otvbase.c (otv_BASE_validate): Implement it.
2242
2243 2017-09-22  Werner Lemberg  <wl@gnu.org>
2244
2245         [otvalid] Macros for 32bit offset support.
2246
2247         * src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE32,
2248         OTV_OPTIONAL_OFFSET32, OTV_SIZE_CHECK32): New macros.
2249
2250 2017-09-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
2251
2252         [build] Simplify Visual C++ 2010 project.
2253
2254         * build/windows/vc2010/freetype.vcxproj: Remove fake singlethreaded
2255         configurations and tweak.
2256
2257 2017-09-21  Werner Lemberg  <wl@gnu.org>
2258
2259         [truetype] Integer overflow (#52082).
2260
2261         * src/truetype/ttinterp.c (Ins_MDRP): Avoid FT_ABS.
2262
2263 2017-09-21  Werner Lemberg  <wl@gnu.org>
2264
2265         [sfnt] Fix postscript name for default instance of variation fonts.
2266
2267         Problem reported by Behdad.
2268
2269         * src/sfnt/sfdriver.c (sfnt_get_ps_name): Test
2270         `is_default_instance'.
2271
2272 2017-09-21  Werner Lemberg  <wl@gnu.org>
2273
2274         [truetype] Fix `mmvar' array pointers, part 2.
2275
2276         The previous commit was incomplete.
2277
2278         * src/truetype/ttgxvar.c: Properly initialize sub-array offsets for
2279         `master' also.
2280
2281 2017-09-21  Werner Lemberg  <wl@gnu.org>
2282
2283         [truetype] Fix `mmvar' array pointers.
2284
2285         Without this change, clang's AddressSanitizer reports many runtime
2286         errors due to misaligned addresses.
2287
2288         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use multiples of pointer
2289         size for sub-array offsets into `mmvar'.
2290
2291 2017-09-20  Werner Lemberg  <wl@gnu.org>
2292
2293         [truetype] Integer overflows.
2294
2295         Changes triggered by
2296
2297           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3429
2298
2299         * src/truetype/ttinterp.c (Ins_SHPIX, Ins_DELTAP): Use NEG_LONG.
2300         (Ins_MIAP): Use SUB_LONG.
2301
2302 2017-09-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
2303
2304         [build] Fix DLL builds in Visual C++ project.
2305
2306         * build/windows/vc2010/freetype.vcxproj: Use DynamicLibrary in Debug
2307         and Release configurations.
2308         * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
2309         [_DLL]: Use Visual C++ extensions.
2310
2311 2017-09-19  John Tytgat  <John.Tytgat@esko.com>
2312
2313         [cff] Fix family name logic of pure CFF fontdata (#52056).
2314
2315         1. If `FamilyName' is present in the CFF font, use this for
2316            FT_Face's `family_name'.
2317         2. Otherwise, use the face name and chop off any subset prefix.
2318         3. If at this point FT_Face's `family_name' is set, use this
2319            together with the full name to determine the style.
2320         4. Otherwise, use `CIDFontName' as FT_Face's `family_name'.
2321         5. If we don't have a valid style, use "Regular".
2322
2323         Previously, FT_Face's `family_name' entry for pure CFF fontdata
2324         nearly always was the fontname itself, instead of the `FamilyName'
2325         entry in the CFF font (assuming there is one).
2326
2327         * src/cff/cffobjs.c (cff_face_init) [pure_cff]: Implement it.
2328
2329 2017-09-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
2330
2331         [build] Declutter Visual C++ 2010-2017 project.
2332
2333         * build/windows/vc2010/freetype.vcxproj: Use MaxSpeed (/02)
2334         optimization for Release configuration throughout the project.
2335
2336
2337 ----------------------------------------------------------------------------
2338
2339 Copyright (C) 2017-2020 by
2340 David Turner, Robert Wilhelm, and Werner Lemberg.
2341
2342 This file is part of the FreeType project, and may only be used, modified,
2343 and distributed under the terms of the FreeType project license,
2344 LICENSE.TXT.  By continuing to use, modify, or distribute this file you
2345 indicate that you have read the license and understand and accept it
2346 fully.
2347
2348
2349 Local Variables:
2350 version-control: never
2351 coding: utf-8
2352 End: