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.
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
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):
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.
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
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.
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.
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.
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.
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.
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'
194 External dependencies are expressed as option()s and will turn up as such
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.
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'.
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
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
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
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
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
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.
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
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
408 2018-01-27 Werner Lemberg <wl@gnu.org>
410 [truetype] Better protection against invalid VF data.
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
421 2018-01-27 Werner Lemberg <wl@gnu.org>
423 * src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference.
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
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
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
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.
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):
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,
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
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
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
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
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):
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
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.
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
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
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
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:
724 * src/base/Jamfile, src/base/rules.mk (BASE_SRC), src/base/ftbase.c:
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
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
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
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
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
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
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
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.
843 confused the parser, which incorrectly treated `<bla>' as a markup
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
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):
882 2017-12-08 Werner Lemberg <wl@gnu.org>
884 Fix access to uninitalized memory (#52613).
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 `>'
901 2017-12-07 Werner Lemberg <wl@gnu.org>
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>
913 * include/freetype/internal/fttrace.h: Remove unused tracing macros.
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
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
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
950 (FT_TRUETYPE_UNPATENTED_H, FT_UNPATENTED_HINTING_H): Define it to
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
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.
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'
1052 Remove unused fields.
1053 * src/psaux/psobjs.c (ps_decoder_init): Change `glyph_width' from copy
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.
1076 -------------------------
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
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
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
1210 * src/cid/cidriver.c (cid_property_{set,get}, cid_services),
1211 src/type1/t1driver.c (t1_property_{set,get}, t1_services): Add
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.
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
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.
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.
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
1285 As a side effect, variation functions no longer change the named
1288 * src/cff/cffobjs.c (cff_face_init): Use MM service's `set_instance'
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
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
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'.
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.
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
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.
1393 * src/smooth/ftsmooth.c (ft_smooth_render_generic): Fix variable
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
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.
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
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.
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.
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
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):
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
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
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
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:
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
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
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.
1605 * include/freetype/internal/psaux.h, src/psaux/psobjs.h: Update
1608 * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Update
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
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,
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
1664 <cf2_escPOP>: Ensure that the stack is not cleared after getting
1665 `OtherSubr' results.
1668 2017-09-25 Ewald Hew <ewaldhew@gmail.com>
1670 [psaux] Extend Adobe interpreter (callsubr).
1672 * src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdCALLSUBR>:
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
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
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
1743 The following require a Type 1 mode, because of differences in
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
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
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
1826 * include/freetype/internal/psaux.h (T1_Decoder_FuncsRec): Change
1827 function declarations.
1828 * src/psaux/psauxmod.c (T1_Decoder_FuncsRec): Register the
1831 * src/psaux/psobjs.c (ps_builder_add_point): Add conditionals for
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
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
1863 * include/freetype/internal/cffotypes.h (CFF_Driver): Rename and
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'
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
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
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
1939 * src/psaux/psauxmod.c: Add builder and decoder functions to `PSAux'
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
1952 * src/psaux/psobjs.c, src/psaux/psobjs.h: Add `PS_Builder'
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
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>
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
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
2066 * src/psaux/cffdecode.c (cff_decoder_init): Update to take in
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
2089 (PSAux_Interface): Updated.
2091 * include/freetype/internal/tttypes.h (TT_FaceRec): Add `psaux'
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
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
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
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):
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
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
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
2350 version-control: never