Bug 1468833 - Duplicate strings needed in the rules view rewrite from inspector.prope...
[gecko.git] / modules / freetype2 / ChangeLog
blob806b8354a90630f3bff0a0c49e80fd1c65e8f97f
1 2018-05-01  Werner Lemberg  <wl@gnu.org>
3         * Version 2.9.1 released.
4         =========================
7         Tag sources with `VER-2-9-1'.
9         * docs/VERSION.TXT: Add entry for version 2.9.1.
10         * docs/CHANGES: Updated.
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/.
29         * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
31         * builds/unix/configure.raw (version_info): Set to 22:1:16.
32         * CMakeLists.txt (VERSION_PATCH): Set to 1.
34         * include/freetype/ftgasp.h: Use FT_BEGIN_HEADER and FT_END_HEADER.
36 2018-04-26  Werner Lemberg  <wl@gnu.org>
38         Another fix for handling invalid format 2 cmaps.
40         Sigh.
42         Reported as
44           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8003
46         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
47         an endless loop.
49 2018-04-24  Ben Wagner  <bungeman@google.com>
51         [base] Avoid undefined behaviour in lcd filtering code (#53727).
53         * src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
54         Ensure `height > 0'.
56 2018-04-22  Werner Lemberg  <wl@gnu.org>
58         * src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing.
60 2018-04-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
62         [base] Fix bitmap emboldening.
64         Bug introduced after release 2.8.
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.
70 2018-04-22  Werner Lemberg  <wl@gnu.org>
72         Another fix for handling invalid format 2 cmaps.
74         The previous commit was incomplete.
76         Reported as
78           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7928
80         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
81         an endless loop.
83 2018-04-19  Werner Lemberg  <wl@gnu.org
85         [autofit] Add support for Georgian Mtavruli characters.
87         This will be part of the forthcoming Unicode 11.0.
89         * src/autofit/afblue.dat: Add blue zone data for Mtavruli.
90         * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
92         * src/autofit/afscript.h: Add Mtavruli standard character.
94 2018-04-18  Werner Lemberg  <wl@gnu.org>
96         Fix handling of invalid format 2 cmaps.
98         The problem was introduced after the last release.
100         Reported as
102           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7828
104         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop.
106 2018-04-17  Werner Lemberg  <wl@gnu.org>
108         [truetype] Integer overflow issues.
110         Reported as
112           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7739
114         * src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG.
116 2018-04-16  Werner Lemberg  <wl@gnu.org>
118         [truetype] Integer overflow issues.
120         Reported as
122           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7718
124         * src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG.
126 2018-04-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
128         [build] Use `info' function of make 3.81.
130         * configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU,
131         docs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements.
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.
139 2018-04-15  Werner Lemberg  <wl@gnu.org>
141         [truetype]: Limit `SLOOP' bytecode argument to 16 bits.
143         This fixes
145           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7707
147         * src/truetype/ttinterp.c (Ins_SLOOP): Do it.
149 2018-04-14  Werner Lemberg  <wl@gnu.org>
151         [truetype] Integer overflow issues.
153         Reported as
155           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7652
157         * src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG.
159 2018-04-14  Werner Lemberg  <wl@gnu.org>
161         [autofit] Update to Unicode 11.0.0.
163         But no support new scripts (volunteers welcomed).
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.
172 2018-04-10  Nikolaus Waxweiler  <madigens@gmail.com>
174         * CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive
175         modernization measures.
177         This brings up the minimum required CMake version to 2.8.12.
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.
182         Symbols are hidden by default (e.g. `-fvisibility=hidden' on GCC).
184         CMake will no longer look for a C++ compiler.
186         Library and .so version now match the Autotools build.
188         Comments in the build file and informational messages now use platform
189         agnostic example commands.
191         ftoption.h and ftconfig.h are written directly without a redundant `-new'
192         copy.
194         External dependencies are expressed as option()s and will turn up as such
195         in cmake-gui.
197         Internal: Properties such as dependencies and include directories are now
198         privately set on the freetype library instead of globally.
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 maintainters anyway.
204         On Windows, src/base/ftver.rc is compiled to decorate the library with
205         version and copyright information.
207         A pkg-config file is now generated and installed.
209 2018-04-09  Werner Lemberg  <wl@gnu.org>
211         [truetype] Integer overflow issues.
213         Reported as
215           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7453
217         * src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use
218         ADD_LONG and SUB_LONG.
220 2018-04-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
222         [windows, wince] Clean up legacy project files.
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.
233 2018-04-04  Werner Lemberg  <wl@gnu.org>
235         [cff, type1] Sanitize `BlueFuzz' and `BlueShift'.
237         Reported as
239           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7371
241         * src/cff/cffload.c (cff_load_private_dict): Sanitize
242         `priv->blue_shift' and `priv->blue_fuzz' to avoid overflows later
243         on.
245         * src/type1/t1load.c (T1_Open_Face): Ditto.
247 2018-04-04  Ben Wagner  <bungeman@google.com>
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.
254 2018-04-01  Werner Lemberg  <wl@gnu.org>
256         * builds/toplevel.mk (work): Use $(SEP).
258         This fixes the `make refdoc' using Cygwin: $(CAT) is `type' on this
259         platform, and this program only understands backslashes in paths.
261         Reported by Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>.
263 2018-03-30  Werner Lemberg  <wl@gnu.org>
265         [truetype] Fix memory leak (only if tracing is on).
267         * src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix
268         it.
270 2018-03-23  Ben Wagner  <bungeman@google.com>
272         [sfnt] Correctly handle missing bitmaps in sbix format (#53404).
274         * src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value.
276 2018-03-23  Ben Wagner  <bungeman@google.com>
278         [truetype] Fix advance of empty glyphs in bitmap fonts (#53393).
280         * src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics
281         for empty bitmaps.
283 2018-03-22  Werner Lemberg  <wl@gnu.org>
285         Remove `ftlcdfil.c' and `ftfntfmt.c' from build files (#53415).
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.
303 2018-03-13  Werner Lemberg  <wl@gnu.org>
305         * src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric
306         overflow.
308 2018-03-13  Werner Lemberg  <wl@gnu.org>
310         Fix cmap format 2 handling (#53320).
312         The patch introduced for #52646 was not correct.
314         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
316 2018-03-10  Nikolaus Waxweiler  <madigens@gmail.com>
318         * CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05.
320 2018-03-09  Chun-wei Fan  <fanc999@yahoo.com.tw>
322         * CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287).
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.
328 2018-03-08  Hugh McMaster  <hugh.mcmaster@outlook.com>
330         Make installation of `freetype-config' optional (#53093).
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.
337 2018-03-05  Werner Lemberg  <wl@gnu.org>
339         Make `ftlcdfil.c' part of the `base' module.
341         `ftobjs.c' needs `ft_lcd_padding'.
343         Problem reported by duhuanpeng <548708880@qq.com>.
345         * modules.cfg (BASE_EXTENSIONS): Don't include `ftlcdfil.c'.
347         * src/base/ftbase.c: Include `ftlcdfil.c'.
348         * src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c'.
349         * src/base/Jamfile (_sources): Adjusted.
351         * docs/INSTALL.ANY: Updated.
353 2018-03-05  Werner Lemberg  <wl@gnu.org>
355         Make `ftfntfmt.c' part of the `base' module.
357         `ftobjs.c' needs `FT_Get_Font_Format'.
359         Problem reported by duhuanpeng <548708880@qq.com>.
361         * modules.cfg (BASE_EXTENSIONS): Don't include `ftfntfmt.c'.
363         * src/base/ftbase.c: Include `ftfntfmt.c'.
364         * src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c'.
365         * src/base/Jamfile (_sources): Adjusted.
367         * docs/INSTALL.ANY: Updated.
369 2018-03-01  Werner Lemberg  <wl@gnu.org>
371         * src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments.
373 2018-02-23  Werner Lemberg  <wl@gnu.org>
375         * builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer.
377         Problem reported by Alan Coopersmith <alan.coopersmith@oracle.com>.
379 2018-02-17  Werner Lemberg  <wl@gnu.org>
381         [sfnt] Prefer `CBDT'/`CBLC' over `glyf' table (#53154).
383 2018-02-06  Werner Lemberg  <wl@gnu.org>
385         [truetype] Integer overflow issues.
387         Reported as
389           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6027
391         * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use
392         SUB_LONG; avoid FT_ABS.
394 2018-02-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
396         [unix] Use -fvisibility=hidden.
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.
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.
408 2018-01-27  Werner Lemberg  <wl@gnu.org>
410         [truetype] Better protection against invalid VF data.
412         Reported as
414           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5739
416         Bug introduced in commit 08cd62deedefe217f2ea50e392923ce8b5bc7ac7.
418         * src/truetype/ttgxvar.c (TT_Set_Var_Design): Always initialize
419         `normalizedcoords'.
421 2018-01-27  Werner Lemberg  <wl@gnu.org>
423         * src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference.
425         Reported as
427           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5736
429 2018-01-27  Werner Lemberg  <wl@gnu.org>
431         * src/truetype/ttgxvar.c (tt_set_mm_blend): Minor.
433 2018-01-27  Werner Lemberg  <wl@gnu.org>
435         [truetype] Better trace VF instances.
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.
442 2018-01-27  Werner Lemberg  <wl@gnu.org>
444         [truetype] Beautify tracing of VF axis records.
446         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Show axis records in a
447         table-like manner.
449 2018-01-26  Ben Wagner  <bungeman@google.com>
451         [truetype] Fix multiple calls of `FT_Get_MM_Var' (#52955).
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'.
457 2018-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
459         [apinames] Anonymous version map for GNU linker.
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'.
467 2018-01-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
469         [unix] Call libtool to clean up.
471         * builds/unix/install.mk (clean_project_unix, distclean_project_unix):
472         Use libtool.
473         * builds/freetype.mk: Minor.
475 2018-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
477         * src/base/ftver.rc: Fix mingw-w64 compilation.
479 2018-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
481         [build] Enable VERSIONINFO resource for Cygwin/MinGW.
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.
488 2018-01-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
490         [build] Move VERSIONINFO resource.
492         * builds/windows/vc2010/freetype.vcxproj: Updated.
493         * builds/windows/ftver.rc: Move file from here...
494         * src/base/ftver.rc: ... to here.
496 2018-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
498         [build] Expand dllexport/dllimport to Cygwin/MinGW.
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.
505 2018-01-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
507         [build] Improve and document MSVC build.
509         * include/freetype/config/ftconfig.h: Guard dllexport/dllimport
510         attributes with _DLL and FT2_DLLIMPORT.
511         * builds/windows/vc2010/index.html: Update documentation.
513 2018-01-10  Steve Robinson  <ssrobins@gmail.com>
515         * CMakeLists.txt [win32]: Suppress warnings for POSIX functions.
517 2018-01-10  Ewald Hew  <ewaldhew@gmail.com>
519         [psaux] Correctly handle Flex features (#52846).
521         * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO,
522         cf2_cmdHMOVETO>: Do not move if doing Flex.
524 2018-01-09  Alexei Podtelezhnikov  <apodtele@gmail.com>
526         * builds/windows/vc2010/freetype.sln: Synchronize with the project.
528 2018-01-08  Werner Lemberg  <wl@gnu.org>
530         * Version 2.9 released.
531         =======================
534         Tag sources with `VER-2-9'.
536         * docs/VERSION.TXT: Add entry for version 2.9.
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/.
556         * include/freetype/freetype.h (FREETYPE_MINOR): Set to 9.
557         (FREETYPE_PATCH): Set to 0.
559         * builds/unix/configure.raw (version_info): Set to 22:0:16.
560         * CMakeLists.txt (VERSION_PATCH): Set to 0.
562 2018-01-07  Werner Lemberg  <wl@gnu.org>
564         Add check for librt, needed for `ftbench' (#52824).
566         * builds/unix/configure.raw (LIB_CLOCK_GETTIME): Define; this will
567         hold `-lrt' if necessary.
569         * builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): New variable.
571 2018-01-07  Ewald Hew  <ewaldhew@gmail.com>
573         [psaux] Fix Type 1 glyphs with too many stem hints.
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.
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.
584 2018-01-06  Werner Lemberg  <wl@gnu.org>
586         Add `FT_Done_MM_Var'.
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.
592         * include/freetype/ftmm.h, src/base/ftmm.c (FT_Done_MM_Var): Declare
593         and define.
595         * docs/CHANGES: Updated.
597 2018-01-03  Werner Lemberg  <wl@gnu.org>
599         [truetype] Round offsets of glyph components only if hinting is on.
601         * src/truetype/ttgload.c (TT_Process_Composite_Component): Implement
602         it.
604 2018-01-03  Werner Lemberg  <wl@gnu.org>
606         * src/truetype/ttgxvar.c (ft_var_to_design): Remove dead code.
608         This is a better fix than the previous commit, which is now
609         reverted.
611 2018-01-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
613         Move internal LCD-related declarations.
615         * include/freetype/ftlcdfil.h (ft_lcd_padding, ft_lcd_filter_fir):
616         Move from here...
617         * include/freetype/internal/ftobjs.h: ... to here.
619 2018-01-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
621         * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
622         [_MSC_VER]: Limit Visual C++ attributes.
624 2018-01-03  Werner Lemberg  <wl@gnu.org>
626         [truetype] Make blend/design coordinate round-tripping work.
628         Behdad reported that setting blend coordinates, then getting design
629         coordinates did incorrectly return the default instance's
630         coordinates.
632         * src/truetype/ttgxvar.c (tt_set_mm_blend): Fix it.
634 2017-12-31  Werner Lemberg  <wl@gnu.org>
636         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix endless loop.
638         Reported as
640           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4838
642 2017-12-31  Werner Lemberg  <wl@gnu.org>
644         Synchronize other Windows project files.
646         * builds/windows/*: Add missing files.
648 2017-12-31  Werner Lemberg  <wl@gnu.org>
650         Update Visual C 2010 project files.
652         Problem reported by Hin-Tak.
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.
660 2017-12-30  Werner Lemberg  <wl@gnu.org>
662         * builds/vms/ftconfig.h: Synchronize with unix `ftconfig.in' file.
664 2017-12-28  Werner Lemberg  <wl@gnu.org>
666         * builds/unix/ftconfig.in: Synchronize with main `ftconfig.h' file.
668         Reported by Nikolaus.
670 2017-12-27  Werner Lemberg  <wl@gnu.org>
672         Fix compiler warnings.
674         * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Make `pitch' and
675         `new_pitch' unsigned.
677         * src/base/ftpsprop.c: Include FT_INTERNAL_POSTSCRIPT_PROPS_H.
679 2017-12-27  Werner Lemberg  <wl@gnu.org>
681         Fixes for `make multi'.
683         * include/freetype/internal/ftpsprop.h: Use `FT_BASE_CALLBACK'.
684         (ps_property_get): Harmonize declaration with corresponding
685         function typedef.
687         * include/freety[e/internal/fttrace.h: Add `trace_psprops'.
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.
695 2017-12-27  Werner Lemberg  <wl@gnu.org>
697         Provide support for intra-module callback functions.
699         This is needed especially for `make multi' with C++.
701         * include/freetype/config/ftconfig.h (FT_BASE_CALLBACK,
702         FT_BASE_CALLBACK_DEF): New macros.
704 2017-12-25  Ewald Hew  <ewaldhew@gmail.com>
706         Move PostScript drivers' property handlers to `base'.
708         This reduces the amount of duplicated code across PostScript
709         drivers.
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.
716         * src/base/ftpsprop.c: New file that implements above functions.
718         * include/freetype/internal/internal.h
719         (FT_INTERNAL_POSTSCRIPT_PROPS_H): New macro.
721         * src/cff/cffdrivr.c, src/cid/cidriver.c, src/type1/t1driver.c:
722         Updated.
724         * src/base/Jamfile, src/base/rules.mk (BASE_SRC), src/base/ftbase.c:
725         Updated.
727 2017-12-20  Werner Lemberg  <wl@gnu.org>
729         Speed up FT_Set_Var_{Design,Blend}_Coordinates if curr == new.
731         We exit early if the current design or blend coordinates are
732         identical to the new ones.
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.
738         * src/type1/t1load.c (t1_set_mm_blend): Ditto.
740         * src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
741         FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Updated.
743 2017-12-18  Werner Lemberg  <wl@gnu.org>
745         [sfnt] Fix charmap type 2 iterator (#52646).
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).
753         Before this commit, the iterator wasn't able to correctly handle a
754         sub-header for higher byte 0x01.
756         * src/sfnt/ttcmap.c (tt_cmap2_char_next): Fix character increment
757         for outer loop.
759 2017-12-18  Matthias Clasen  <matthias.clasen@gmail.com>
761         [truetype] Fix clamping, minor tracing code beautification.
763         * src/truetype/ttgxvar.c (ft_var_to_normalized): Trace number of
764         design coordinates.
765         Use clamped value.
767 2017-12-18  Werner Lemberg  <wl@gnu.org>
769         * src/*/*: Only use `ft_' and `FT_' variants of stdc library stuff.
771 2017-12-18  Werner Lemberg  <wl@gnu.org>
773         * src/truetype/ttgxvar.c (tt_face_vary_cvt): Add size guard (#52688).
775 2017-12-18  Werner Lemberg  <wl@gnu.org>
777         [truetype] Fix previous commit.
779         * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Correctly handle
780         unhinted phantom points, which must be properly scaled.
782 2017-12-18  Werner Lemberg  <wl@gnu.org>
784         [truetype] Don't apply HVAR and VVAR deltas twice (#52683).
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.
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.
793 2017-12-17  Jonathan Kew  <jfkthame@gmail.com>
795         [truetype] Correctly handle variation font phantom points (#52683).
797         * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix phantom
798         point indices.
800 2017-12-17  Jonathan Kew  <jfkthame@gmail.com>
802         Fix incorrect advance width scaling (#52683).
804         * src/base/ftadvance.c (FT_Get_Advances): Always respect the
805         FT_LOAD_NO_SCALE flag if present.
807 2017-12-16  Alexei Podtelezhnikov  <apodtele@gmail.com>
809         * builds/windows/vc2010/freetype.vcxproj: AfterBuild copy.
810         * objs/.gitignore: Ignore almost everything.
812 2017-12-11  Werner Lemberg  <wl@gnu.org>
814         Fix compiler warning (#52640).
816         * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Remove unused
817         variable.
819 2017-12-08  Azzuro  <azzuro@team-mediaportal.com>
821         * builds/windows/vc2010/freetype.vcxproj: Adjust output directory.
823         This allows builds with different configurations in parallel.
825 2017-12-08  Werner Lemberg  <wl@gnu.org>
827         Fix `make setup dos', second try (#52622).
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.
833 2017-12-08  Werner Lemberg  <wl@gnu.org>
835         [docmaker] Fix code section parsing.
837         Stuff like
839           {
840             <bla>
841           }
843         confused the parser, which incorrectly treated `<bla>' as a markup
844         tag.
846         * src/tools/docmaker/content.py (ContentProcessor::process_content):
847         Apply `re_markup_tags' only outside of code sections.
849 2017-12-08  Werner Lemberg  <wl@gnu.org>
851         New `ftdriver.h' file, covering all driver modules.
853         This reduces redundancy and increases synergy; it also reduces the
854         number of header files.
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.
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.
870         * src/*/*: Updated accordingly.
872 2017-12-08  Werner Lemberg  <wl@gnu.org>
874         Move `ftdriver.h' to `ftdrv.h'.
876         * include/freetype/internal/ftdriver.h: Renamed to...
877         * include/freetype/internal/ftdrv.h: ... this name.
879         * include/freetype/internal/internal.h (FT_INTERNAL_DRIVER_H):
880         Updated.
882 2017-12-08  Werner Lemberg  <wl@gnu.org>
884         Fix access to uninitalized memory (#52613).
886         Also reported as
888           https://bugs.chromium.org/p/chromium/issues/detail?id=791317
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.
894 2017-12-08  Werner Lemberg  <wl@gnu.org>
896         Fix `make setup dos' (#52622).
898         * builds/detect.mk (dos_setup): Properly escape literal `>'
899         character.
901 2017-12-07  Werner Lemberg  <wl@gnu.org>
903         Fix C++ compilation.
905         * src/psaux/psauxmod.h: Use FT_CALLBACK_TABLE macro where necessary.
907         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix warning.
909 2017-12-07  Werner Lemberg  <wl@gnu.org>
911         Fix `make multi'.
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.
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.
922         * src/cid/cidriver.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H.
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'.
933 2017-12-07  Werner Lemberg  <wl@gnu.org>
935         * include/freetype/config/ftheader.h: Some clean-up.
937         This commit removes documentation of deprecated macros and does some
938         minor streamlining.
940 2017-12-06  Werner Lemberg  <wl@gnu.org>
942         * builds/symbian/bld.inf: Updated.
944 2017-12-06  Werner Lemberg  <wl@gnu.org>
946         New header file `ftparams.h' that collects all parameter tags.
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'.
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.
960         * include/freetype/ttunpat.h: Remove.  No longer needed.
962 2017-12-05  Werner Lemberg  <wl@gnu.org>
964         Improve tracing messages by using singular and plural forms.
966         * src/*/*.c: Implement it.
968 2017-12-04  Werner Lemberg  <wl@gnu.org>
970         [truetype] Allow shared points in `cvar' table (#52532).
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'.
976 2017-11-28  Werner Lemberg  <wl@gnu.org>
978         [truetype] Improving tracing of composite glyphs.
980         * src/truetype/ttgload.c (TT_Load_Composite_Glyph)
981         [FT_DEBUG_LEVEL_TRACE]: Show composite glyph information.
983 2017-11-27  Werner Lemberg  <wl@gnu.org>
985         [type1] Allow (again) `/Encoding' with >256 elements (#52464).
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.
993         * src/type1/t1load.c (parse_encoding): Implement it.
995 2017-11-27  Jan Alexander Steffens (heftig)  <jan.steffens@gmail.com>
997         Fix last commit (#52522).
999         * builds/freetype.mk: Set `FT_OPTION_H' and `FTOPTION_FLAG'
1000         properly if we have `ftoption.h' in `BUILD_DIR'.
1002 2017-11-24  Werner Lemberg  <wl@gnu.org>
1004         [unix] Install a massaged `ftoption.h' file (#51780).
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).
1017         * builds/unix/install.mk (install): Install
1018         `builds/unix/ftoption.h'.
1020         * builds/unix/unix-def.in (DISTCLEAN): Updated.
1022         * builds/unix/.gitignore: Updated.
1024 2017-11-23  Tor Andersson  <tor.andersson@artifex.com>
1026         Silence unused function warnings (#52465).
1028         Some static function declarations cause unused function warnings if
1029         certain config options are turned off via `ftoption.h'.
1031         * src/base/ftbase.h, src/base/ftrfork.c, src/sfnt/ttbdf.h,
1032         src/truetype/ttgxvar.h: Add #ifdef guards around these sections.
1034 2017-11-22  Ewald Hew  <ewaldhew@gmail.com>
1036         * src/psaux/psft.c (cf2_setGlyphWidth): Check format before setting.
1038         Reported as
1040           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=4377
1042 2017-11-22  Ewald Hew  <ewaldhew@gmail.com>
1044         [psaux] Fix CFF advance widths. (#52466)
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.
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.
1058 2017-11-15  Vlad Tsyrklevich  <vtsyrklevich@google.com>
1060         * include/freetype/ftrender.h: Fix `FT_Renderer_RenderFunc' type.
1062 2017-11-14  Nikolaus Waxweiler  <madigens@gmail.com>
1064         Use Adobe hinting engine for `light' hinting of both CFF and Type 1.
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.
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.
1075                      LIGHT  NORMAL
1076           -------------------------
1077            TrueType  Auto   v40
1078            CFF       Adobe  Adobe
1079            Type 1    Adobe  Adobe
1081 2017-11-10  Yuri Levchenko  <yuri_levchenko@boolat.com>
1083         * CMakeLists.txt: Add `DISABLE_FORCE_DEBUG_PREFIX' option.
1085 2017-11-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1087         * src/base/ftobjs.c (FT_Load_Glyph): Relocate condition.
1089 2017-11-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
1091         * src/smooth/ftgrays.c (gray_set_cell): Fix uninitialized variables.
1093 2017-11-03  Ewald Hew  <ewaldhew@gmail.com>
1095         [psaux] Fix PostScript interpreter rewinding in Type 1 mode. (#52251)
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.
1103         * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdENDCHAR>:
1104         Ensure we are on the top level charstring before rewinding.
1106 2017-11-03  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
1108         [truetype] Add more tricky fonts.
1110         See the report by Yang Yinsen.
1111         https://lists.gnu.org/archive/html/freetype-devel/2017-11/msg00000.html
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.
1120 2017-11-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
1122         [smooth] Fix complex rendering at high ppem.
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.
1131         * src/smooth/ftgrays.c (gray_convert_glyph): Implement it.
1133 2017-10-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
1135         [smooth] Improve complex rendering at high ppem.
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.
1141         Reported, analyzed, and tested by Colin Fahey.
1143         * src/smooth/ftgrays.c (gray_set_cell): Do not record trivial cells.
1145 2017-10-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
1147         [base] Improve tracing in FT_Load_Glyph, FT_*_Size.
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.
1154 2017-10-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
1156         [base] Improve tracing in FT_Render_Glyph.
1158         * src/base/ftobjs.c (FT_Render_Glyph_Internal): Add total coverage
1159         calculations and downgrade Netpbm dump to bitmap:7.
1161 2017-10-15  Ewald Hew  <ewaldhew@gmail.com>
1163         [cff] Fix segfault on missing `psaux' (#52218)
1165         * src/cff/cffload.c (cff_done_blend): Add a check for possible nullptr.
1167         * modules.cfg: Update dependency list.
1169 2017-10-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
1171         [base, cff] Fix MSVC warnings.
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.
1178 2017-10-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1180         [base] Netpbm image tracing.
1182         * src/base/ftobjs.c (FT_Load_Glyph): Trace bitmap size.
1183         (FT_Render_Glyph_Internal): Trace bitmap in Netpbm format.
1185         * src/smooth/ftgrays.c (gray_sweep): Sweep remnants of span tracing.
1187 2017-10-14  Alexei Podtelezhnikov  <apodtele@gmail.com>
1189         * builds/windows/ftdebug.c (FT_Message): Print to stderr.
1190         * builds/wince/ftdebug.c (FT_Message): Ditto.
1192 2017-10-14  Behdad Esfahbod  <behdad@behdad.org>
1194         [afshaper] Delay creating `hb_set' objects until needed.
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.
1200         * src/autofit/afshaper.c (af_shaper_get_coverage): Implement it.
1202 2017-10-12  Ewald Hew  <ewaldhew@gmail.com>
1204         [type1, cid] Add hinting engine switch.
1206         Implement property service in `type1' and `cid' drivers to allow
1207         switching between FreeType or Adobe hinting engine when both are
1208         available.
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.
1214         * src/cid/cidobjs.c (cid_driver_init), src/type1/t1objs.c
1215         (T1_Driver_Init): Add default property values.
1217 2017-10-12  Ewald Hew  <ewaldhew@gmail.com>
1219         Add T1_CONFIG_OPTION_OLD_ENGINE configuration option.
1221         This controls whether the old Type 1 engine gets compiled into FreeType.
1222         It is disabled by default.
1224         * devel/ftoption.h, include/freetype/config/ftoption.h
1225         (T1_CONFIG_OPTION_OLD_ENGINE): New macro.
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.
1237 2017-10-12  Ewald Hew  <ewaldhew@gmail.com>
1239         Extract width parsing from Type 1 parser.
1241         Duplicate the fast advance width calculations from the old parser.
1242         This is to facilitate adding options for compiling out the old parser.
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.
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.
1253 2017-10-09  Werner Lemberg  <wl@gnu.org>
1255         * src/base/ftoutln.c (FT_Outline_Translate): Fix integer overflow.
1257         Reported as
1259           https://bugs.chromium.org/p/chromium/issues/detail?id=772775
1261 2017-10-08  Werner Lemberg  <wl@gnu.org>
1263         * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Integer overflows.
1265         Reported as
1267           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3579
1269 2017-10-07  Werner Lemberg  <wl@gnu.org>
1271         [sfnt] Adjust behaviour of PS font names for variation fonts.
1273         * src/sfnt/sfdriver.c (sfnt_get_var_ps_name): Use a named instance's
1274         PS name only if no variation is applied.
1276 2017-10-07  Werner Lemberg  <wl@gnu.org>
1278         [cff, truetype] Adjust behaviour of named instances.
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.
1285         As a side effect, variation functions no longer change the named
1286         instance index.
1288         * src/cff/cffobjs.c (cff_face_init): Use MM service's `set_instance'
1289         function.
1290         Also apply `MVAR' table to named instances.
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'.
1299 2017-10-07  Werner Lemberg  <wl@gnu.org>
1301         Make `FT_Set_Named_Instance' work.
1303         * src/cff/cffdrivr.c (cff_set_instance): New function.
1304         (cff_service_multi_masters): Register it.
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.
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.
1315 2017-10-07  Werner Lemberg  <wl@gnu.org>
1317         Make `FT_FACE_FLAG_VARIATION' work.
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'.
1323         * src/cff/cffdrivr.c (cff_get_advances): Updated.
1325         * src/sfnt/sfdriver.c (sfnt_get_ps_name), src/sfnt/sfobjs.c
1326         (sfnt_init_face): Updated.
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'.
1334         * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Handle
1335         `FT_FACE_FLAG_VARIATION'.
1337 2017-10-07  Werner Lemberg  <wl@gnu.org>
1339         New function `FT_Set_Named_Instance'.
1341         No effect yet.
1343         * src/base/ftmm.c (FT_Set_Named_Instance): New function.
1345         * include/freetype/ftmm.h: Updated.
1347 2017-10-07  Werner Lemberg  <wl@gnu.org>
1349         Add macros for checking whether a font variation is active.
1351         * include/freetype/freetype.h (FT_FACE_FLAG_VARIATION,
1352         FT_IS_VARIATION): New macros.
1353         No effect yet.
1355 2017-10-07  Werner Lemberg  <wl@gnu.org>
1357         Add framework for setting named instance in MM service.
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.
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.
1368 2017-10-07  Werner Lemberg  <wl@gnu.org>
1370         [type1] Minor code shuffling.
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'.
1376 2017-10-05  Werner Lemberg  <wl@gnu.org>
1378         * src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Fix integer
1379         overflow.
1381         Reported as
1383           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3539
1385 2017-10-05  Werner Lemberg  <wl@gnu.org>
1387         Fix compiler warnings.
1389         * src/cff/cffdrivr.c (cff_ps_get_font_extra): Avoid code that relies
1390         on numeric overflow.
1391         Add cast.
1393         * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix variable
1394         types, add cast.
1396 2017-10-04  John Tytgat  <John.Tytgat@esko.com>
1398         [cff] Add support for `FSType'.
1400         * include/freetype/internal/cfftypes.h (CFF_FontRec): Add
1401         `font_extra' entry.
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.
1407         * src/cff/cffload.c (cff_font_done): Free `font_extra'.
1409 2017-09-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
1411         Signedness fixes in bitmap presetting.
1413         Reported as
1415           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3514.
1417         * src/raster/ftrend1.c (ft_raster1_render): Exlicitly 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.
1422 2017-09-29  Alexei Podtelezhnikov  <apodtele@gmail.com>
1424         Bitmap metrics presetting [2/2].
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.
1430 2017-09-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
1432         [smooth, raster] Miscellaneous cleanups.
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'.
1439 2017-09-28  Ben Wagner  <bungeman@google.com>
1441         [truetype] Really, really fix #52082.
1443         * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.
1445 2017-09-28  Werner Lemberg  <wl@gnu.org>
1447         * src/psaux/psintrp.c (cf2_doStems): Fix integer overflow.
1449         Reported as
1451           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3510
1453 2017-09-28  Ewald Hew  <ewaldhew@gmail.com>
1455         * src/cid/cidgload.c (cid_slot_load_glyph): Fix memory leak.
1457         Reported as
1459           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3489
1461 2017-09-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
1463         Bitmap metrics presetting [1/2].
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.
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.
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.
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'.
1484 2017-09-28  Ewald Hew  <ewaldhew@gmail.com>
1486         [psaux] Fix compiler warning.
1488         * src/psaux/pshints.c (cf2_hintmap_dump): Add switch for tracing
1489         code.
1491 2017-09-27  Werner Lemberg  <wl@gnu.org>
1493         * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning.
1495 2017-09-25  Werner Lemberg  <wl@gnu.org>
1497         [psaux] Fix compiler warnings.
1499         * src/psaux/psft.c (cf2_initLocalRegionBuffer): Remove redundant
1500         test.
1502         * src/psaux/psintrp.c (cf2_interpT2CharString)
1503         <cf2_escCALLOTHERSUBR>: Add casts.
1505         * src/psaux/psobjs.c (ps_decoder_init): Add cast.
1507 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1509         [psaux] Minor fixes.
1511         * include/freetype/internal/psaux.h, src/psaux/psobjs.{c,h}:
1512         Rearrange `ps_builder_init' arguments to conventional order.
1514         * src/psaux/psft.c (cf2_decoder_parse_charstrings): Add a check and
1515         notice for `SubFont' in Type 1 mode.
1517 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1519         [psaux] Move `psdecode' into `psobjs'.
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.
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.
1529         * include/freetype/internal/psaux.h (PSAux_ServiceRec): Update
1530         `ps_decoder_init' function signature.
1532         * src/cff/cffgload.c, src/cid/cidgload.c, src/type1/t1gload.c:
1533         Update calls.
1535         * src/psaux/psaux.c, src/psaux/psauxmod.c: Update includes.
1537         * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRV_SRC):
1538         Update file references.
1540 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1542         [psaux] Fix Type 1 hinting.
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.
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.
1554 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1556         [psaux] Add tracing for hints.
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.
1562 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1564         [psaux] Minor fixes.
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.
1573 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1575         [cid] Use the new engine.
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.
1581 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1583         [cid] Add Adobe engine configuration.
1585         This is similar to what was done in the `type1' module.
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.
1591 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1593         [psaux] Change subfont synthesis for CID fonts.
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.
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.
1605         * include/freetype/internal/psaux.h, src/psaux/psobjs.h: Update
1606         declaration.
1608         * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Update
1609         call.
1611 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1613         [type1] Switch to Adobe engine.
1615         * src/type1/t1objs.c (T1_Driver_Init): Set default to Adobe engine.
1617 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1619         [psaux] Extend Adobe interpreter (seac).
1621         This concludes the changes needed to add Type 1 support.
1623         * src/psaux/psintrp.c: Update includes.
1624         (cf2_interpT2CharString) <cf2_escSEAC>: Implement this similarly to
1625         implied seac for CFF.
1627         * src/psaux/t1decode.c (t1_lookup_glyph_by_stdcharcode_ps): New
1628         function to look up the glyph index.
1630         * src/psaux/psft.c (cf2_getT1SeacComponent,
1631         cf2_freeT1SeacComponent): New functions to get the charstrings for
1632         seac components.
1634         * src/psaux/t1decode.h, src/psaux/psft.h: Update declarations.
1636 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1638         [psaux] Extend Adobe interpreter (flex in callothersubr).
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.
1646 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1648         [psaux] Extend Adobe interpreter (callothersubr).
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.
1657 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1659         [psaux] Extend Adobe interpreter (pop).
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.
1668 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1670         [psaux] Extend Adobe interpreter (callsubr).
1672         * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
1673         Type 1 mode.
1675         * src/psaux/psft.c (cf2_initLocalRegionBuffer): Add Type 1 mode.
1677 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1679         [psaux] Extend Adobe interpreter (div, four-byte numbers).
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.
1687 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1689         [psaux] Extend Adobe interpreter (hints).
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.
1699 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1701         [psaux] Extend Adobe interpreter (hsbw, sbw).
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.
1711 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1713         [psaux] Extend Adobe interpreter (setcurrentpoint).
1715         * src/psaux/psintrp.c (cf2_interpT2CharString)
1716         <cf2_escSETCURRENTPT>: Fix stack access.
1718 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1720         [psaux] Extend Adobe interpreter (closepath).
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'.
1726 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1728         [psaux] Add Type 1 operations to Adobe CFF interpreter.
1730         The following Type 1 specific ops have been added (copied from
1731         `t1decode'):
1733           closepath
1734           vstem3
1735           hstem3
1736           seac
1737           sbw
1738           callothersubr
1739           pop
1740           setcurrentpoint
1741           hsbw
1743         The following require a Type 1 mode, because of differences in
1744         specification:
1746           hstem
1747           vstem
1748           vmoveto
1749           callsubr
1750           div
1751           rmoveto
1752           hmoveto
1753           Numbers
1755         The subsequent commits will implement these changes and adapt
1756         accesses of data and objects to the new interpreter.
1758         NOTE: Will not compile in the meantime!
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').
1764 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1766         [type1] Fixes for rendering.
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.
1772         Fix the large glyph retry code and ensure hinting and scaling flags
1773         are set properly.
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.
1781 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1783         [psaux] Add missing objects (2/2).
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.
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.
1795         * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Ditto.
1796         Add this to the PSAux Service for future use with CID fonts.
1798         * src/type1/t1gload.c: Include FT_INTERNAL_CFF_TYPES_H.
1799         (T1_Parse_Glyph_And_Get_Char_String): Add the call.
1801 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1803         [psaux] Add missing objects for Type 1 (1/2).
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.
1809         * include/freetype/internal/psaux.h (T1_Decoder, PS_Decoder): New
1810         `cf2_instance' field.
1812         * src/psaux/psdecode.c (ps_decoder_init): Copy `cf2_instance' to
1813         `PS_Decoder'.
1815         * src/psaux/t1decode.c (t1_decoder_done): Add finalization code.
1817         * src/psaux/psft.c (cf2_decoder_parse_charstrings): Update accesses.
1819 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1821         Allow `type1' module to use the Adobe engine.
1823         Add the callback and some conditionals to switch between the two
1824         engines.
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.
1831         * src/psaux/psobjs.c (ps_builder_add_point): Add conditionals for
1832         number conversion.
1834         * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add code
1835         to choose which renderer to use.
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.
1841 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1843         [type1] Add Adobe engine configuration.
1845         Use the previously changed PS_Driver in type1 module to store
1846         hinting engine configuration.
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.
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.
1856 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1858         [cff] Move and rename `CFF_Driver'.
1860         This is so that we can use the same hinting engine parameters for
1861         Type 1.
1863         * include/freetype/internal/cffotypes.h (CFF_Driver): Rename and
1864         move to...
1865         * include/freetype/internal/psaux.h (PS_Driver): ...here.
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.
1871 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1873         [psaux, type1] Reorganize object fields.
1875         Make some fields more generic, so that we can access them the same
1876         way regardless of Type 1 or CFF.
1878         * include/freetype/internal/psaux.h (PS_Builder): Change `TT_Face'
1879         to `FT_Face'.
1880         Remove unused fields.
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'.
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.
1889         * src/psaux/psobjs.c (ps_builder_init, ps_builder_add_point):
1890         Updated with above changes.
1892 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1894         [psaux] Prepare for Type 1 mode.
1896         Add some checks for Type 1 data passing through.
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.
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'.
1906 2017-09-25  Ewald Hew  <ewaldhew@gmail.com>
1908         [psaux, cff] Use the new objects.
1910         * include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Fix
1911         switching between new and old engines.
1913         * src/cff/cffgload.c, src/cff/cffparse.c: Update calls.
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.
1919 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1921         [psaux] Objects for new interpreter (part 2).
1923         Make the new objects copy over values.  They are essentially wrapper
1924         types for the different decoders/builders.
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.
1934         * src/psaux/psdecode.h, src/psaux/psobjs.h: Update declarations.
1936         * src/psaux/psdecode.c, src/psaux/psobjs.c: Implement copy with two
1937         modes.
1939         * src/psaux/psauxmod.c: Add builder and decoder functions to `PSAux'
1940         service.
1942 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1944         [psaux] Add objects for new interpreter.
1946         Introduce `PS_Decoder' and `PS_Builder' which include all fields
1947         from either Type 1 or CFF decoders/builders.
1949         * include/freetype/internal/psaux.h (PS_Builder, PS_Decoder): New
1950         structs.
1952         * src/psaux/psobjs.c, src/psaux/psobjs.h: Add `PS_Builder'
1953         functions.
1955         * src/psaux/psdecode.c, src/psaux/psdecode.h: New files to hold
1956         `PS_Decoder' initialization functions.
1958         * src/psaux/psaux.c, src/psaux/Jamfile (_sources),
1959         src/psaux/rules.mk (PSAUX_DRV_SRC): Updated.
1961 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1963         [psaux] Rename files.
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.
1969         s/cf2/ps/ for all following.
1971         * src/psaux/cf2*: Rename files.
1972         * src/psaux/*: Update includes.
1974         * src/psaux/Jamfile (_sources), src/psaux/rules.mk (PSAUX_DRC_SRC,
1975         PSAUX_DRV_H): Update file references.
1977 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1979         [psaux] Minor fix.
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.
1984         * src/psaux/cf2ft.c: Update includes.
1985         (cf2_getNormalizedVector): Use `mm->get_var_blend' instead of
1986         `cff_get_var_blend'.
1988 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
1990         [psaux, cff] Move `cff_random' into `psaux' service.
1992         NOTE: Does not compile!
1994         Minor fix to allow both `cff' and `psaux' to use `cff_random'.
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'.
2001         * include/freetype/internal/psaux.h (PSAux_ServiceRec): Register the
2002         function here...
2003         * src/psaux/psauxmod.c: And here.
2005         * src/cff/cffload.c, src/psaux/cf2intrp.c: Update code.
2007 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2009         [cff] Move struct declarations to `freetype/internal'.
2011         NOTE: Does not compile!
2013         This is so that the CFF functions moved to `psaux' can access the
2014         same structs that they need.
2016         * src/cff/cfftypes.h: Moved to...
2017         * include/freetype/internal/cfftypes.h: ...Here.
2019         * src/cff/cffobjs.h: Moved the struct declarations to...
2020         * include/freetype/internal/cffotypes.h: ... this new file.
2022         * include/freetype/internal/internal.h (FT_INTERNAL_CFF_TYPES_H,
2023         FT_INTERNAL_CFF_OBJECT_TYPES_H): New macros.
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.
2031         * src/cff/rules.mk (CFF_DRV_H): Updated.
2033 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2035         [psaux, cff] Add new service for inter-module calls.
2037         NOTE: Does not compile!
2039         This is to allow CFF functions moved to `psaux' to call functions
2040         declared in `src/cff/cffload.h'.
2042         * include/freetype/internal/services/svcfftl.h: New file, setting up
2043         a `CFFLoad' service.
2045         * include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC10,
2046         FT_DEFINE_SERVICEDESCREC): New macros.
2047         (FT_SERVICE_CFF_TABLE_LOAD_H): New macro.
2049         * src/cff/cffdrivr.c, src/cff/cffpic.h: Register the new service.
2051         * src/cff/cfftypes.h (CFF_FontRec), src/psaux/cf2font.h
2052         (CF2_FontRec): Add service interface.
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.
2057 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2059         [psaux, cff] Add callbacks for inter-module calls.
2061         NOTE: Does not compile!
2063         * include/freetype/internal/psaux.h: Add function pointer
2064         declarations.
2066         * src/psaux/cffdecode.c (cff_decoder_init): Update to take in
2067         callbacks.
2068         * src/psaux/cffdecode.h: Ditto.
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.
2074 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2076         [psaux, cff] Create new `PSAux' service interface entries.
2078         NOTE: Does not compile!
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'.
2087         * src/psaux/psauxmod.c (cff_builder_funcs, cff_decoder_funcs): New
2088         function tables.
2089         (PSAux_Interface): Updated.
2091         * include/freetype/internal/tttypes.h (TT_FaceRec): Add `psaux'
2092         service interface.
2094         * src/cff/cffgload.c, src/cff/cffobjs.c, src/cff/cffparse.c: Update
2095         function calls to use psaux service.
2097 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2099         [psaux, cff] Move CFF builder components into `psaux' module.
2101         NOTE: Does not compile!
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.
2108         * src/cff/cffgload.h: Move corresponding declarations to
2109         `src/psaux/psobjs.h'.
2111         * src/cff/cffgload.h (CFF_Builder): Move struct declaration to...
2112         * include/freetype/internal/psaux.h: Here.
2114 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2116         [psaux, cff] Move CFF decoder components into `psaux' module.
2118         NOTE: Does not compile!
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.
2127         * src/cff/cffgload.h: Move corresponding declarations to...
2128         * src/psaux/cffdecode.h: This new file.
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.
2134         * src/psaux/cf2ft.h: Update include.
2136         * src/psaux/psaux.c, src/psaux/rules.mk (PSAUX_DRV_SRC): Update with
2137         the new file.
2139 2017-09-24  Ewald Hew  <ewaldhew@gmail.com>
2141         [psaux, cff] Move Adobe's engine components into `psaux' module.
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.
2146         NOTE: Does not compile!
2148         * src/cff/cf2*: Move these files to...
2149         * src/psaux/cf2*: Here.
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.
2155         * src/psaux/Jamfile (_sources), src/psaux/rules.mk, src/psaux/psaux.c
2156         (PSAUX_DRV_SRC, PSAUX_DRV_H): Add file references.
2158 2017-09-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
2160         Tweak per-face LCD filtering controls.
2162         Thing are simpler with a NULL-function pointer.
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.
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.
2176         * src/base/ftlcdfil.c (ft_lcd_filter_fir, FT_Libary_SetLcdFilter):
2177         Minor.
2179 2017-09-24  Jonathan Kew  <jfkthame@gmail.com>
2181         [sfnt] Fix `premultiply_data' (#52092).
2183         * src/sfnt/pngshim.c (premultiply_data): Don't use vector extension
2184         if we have less than 16 bytes of data.
2186 2017-09-24  Werner Lemberg  <wl@gnu.org>
2188         [otvalid] Fix handling of ValueRecords.
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.
2195         * src/otvalid/otvgpos.c (otv_PairSet_validate): Set `extra3'.
2196         (otv_PairPos_validate): Adjust.
2198 2017-09-23  Werner Lemberg  <wl@gnu.org>
2200         [otvalid] Handle `GSUB' and `GPOS' v1.1 tables.
2202         * src/otvalid/otvgsub.c (otv_GSUB_validate), src/otvalid/otvgpos.c
2203         (otv_GPOS_validate): Implement it.
2205 2017-09-23  Werner Lemberg  <wl@gnu.org>
2207         [otvalid] Update common table handling to OpenType 1.8.2.
2209         * src/otvalid/otvcommn.c (otv_Device_validate): Handle
2210         VariationIndex subtable.
2211         (otv_Lookup_validate): Handle MarkFilteringSet.
2213 2017-09-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
2215         [build] Windows-style DLL versioning.
2217         * build/windows/ftver.rc: New VERSIONINFO resource.
2218         * build/windows/vc2010/freetype.vcxproj: Further improvements.
2220 2017-09-23  Ben Wagner  <bungeman@google.com>
2222         [truetype] Really fix #52082.
2224         * src/truetype/ttinterp.c (Ins_MDRP): Correct conditional.
2226 2017-09-23  Werner Lemberg  <wl@gnu.org>
2228         [otvalid] Handle `GDEF' v1.2 and v1.3 tables.
2230         No validation of variation stuff yet.
2232         * src/otvalid/otvgdef.c (otv_MarkGlyphSets_validate): New function.
2233         (otv_GDEF_validate): Implement it.
2235 2017-09-22  Werner Lemberg  <wl@gnu.org>
2237         [otvalid] Handle `BASE' v1.1 table.
2239         No validation of variation stuff yet.
2241         * src/otvalid/otvbase.c (otv_BASE_validate): Implement it.
2243 2017-09-22  Werner Lemberg  <wl@gnu.org>
2245         [otvalid] Macros for 32bit offset support.
2247         * src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE32,
2248         OTV_OPTIONAL_OFFSET32, OTV_SIZE_CHECK32): New macros.
2250 2017-09-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
2252         [build] Simplify Visual C++ 2010 project.
2254         * build/windows/vc2010/freetype.vcxproj: Remove fake singlethreaded
2255         configurations and tweak.
2257 2017-09-21  Werner Lemberg  <wl@gnu.org>
2259         [truetype] Integer overflow (#52082).
2261         * src/truetype/ttinterp.c (Ins_MDRP): Avoid FT_ABS.
2263 2017-09-21  Werner Lemberg  <wl@gnu.org>
2265         [sfnt] Fix postscript name for default instance of variation fonts.
2267         Problem reported by Behdad.
2269         * src/sfnt/sfdriver.c (sfnt_get_ps_name): Test
2270         `is_default_instance'.
2272 2017-09-21  Werner Lemberg  <wl@gnu.org>
2274         [truetype] Fix `mmvar' array pointers, part 2.
2276         The previous commit was incomplete.
2278         * src/truetype/ttgxvar.c: Properly initialize sub-array offsets for
2279         `master' also.
2281 2017-09-21  Werner Lemberg  <wl@gnu.org>
2283         [truetype] Fix `mmvar' array pointers.
2285         Without this change, clang's AddressSanitizer reports many runtime
2286         errors due to misaligned addresses.
2288         * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use multiples of pointer
2289         size for sub-array offsets into `mmvar'.
2291 2017-09-20  Werner Lemberg  <wl@gnu.org>
2293         [truetype] Integer overflows.
2295         Changes triggered by
2297           https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3429
2299         * src/truetype/ttinterp.c (Ins_SHPIX, Ins_DELTAP): Use NEG_LONG.
2300         (Ins_MIAP): Use SUB_LONG.
2302 2017-09-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
2304         [build] Fix DLL builds in Visual C++ project.
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.
2311 2017-09-19  John Tytgat  <John.Tytgat@esko.com>
2313         [cff] Fix family name logic of pure CFF fontdata (#52056).
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".
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).
2327         * src/cff/cffobjs.c (cff_face_init) [pure_cff]: Implement it.
2329 2017-09-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
2331         [build] Declutter Visual C++ 2010-2017 project.
2333         * build/windows/vc2010/freetype.vcxproj: Use MaxSpeed (/02)
2334         optimization for Release configuration throughout the project.
2337 ----------------------------------------------------------------------------
2339 Copyright 2017-2018 by
2340 David Turner, Robert Wilhelm, and Werner Lemberg.
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.
2349 Local Variables:
2350 version-control: never
2351 coding: utf-8
2352 End: