Commit Graph

4429 Commits

Author SHA1 Message Date
Nikolaus Waxweiler 029721d69c Modernize CMake build.
* CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive
  modernization measures.

* .gitignore: Add build/, as that's the example directory used in
  CMakeLists.txt.

This brings up the minimum required CMake version to 2.8.12.

The installation paths follow the GNU defaults now, e.g. installing on a
64 bit host will place binaries into the lib64/ folder on e.g. Fedora.

Symbols are hidden by default (e.g. `-fvisibility=hidden' on GCC).

CMake will no longer look for a C++ compiler.

Library and .so version now match the Autotools build.

Comments in the build file and informational messages now use platform
agnostic example commands.

ftoption.h and ftconfig.h are written directly without a redundant
`-new' copy.

External dependencies are expressed as option()s and will turn up as
such in cmake-gui.

Internal: Properties such as dependencies and include directories are
now privately set on the freetype library instead of globally.

The CPack definitions have been cleaned up, the `make dist' has been
removed. Source packages generated with CPack don't contain Autotools
files and aren't used by the maintainters anyway.

On Windows, src/base/ftver.rc is compiled to decorate the library with
version and copyright information.

A pkg-config file is now generated and installed.
2018-04-10 22:31:10 +01:00
Werner Lemberg bd9400bd46 [truetype] Integer overflow issues.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7453

* src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use
ADD_LONG and SUB_LONG.
2018-04-09 21:28:37 +02:00
Alexei Podtelezhnikov cdddeff02f [windows, wince] Clean up legacy project files.
* builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2008-ce/freetype.vcproj,
builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2008/freetype.vcproj,
builds/windows/visualce/freetype.vcproj,
builds/windows/visualce/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualc/freetype.dsp: Remove per-file compile flags.
2018-04-06 21:01:50 -04:00
Werner Lemberg 3b8f16803c [cff, type1] Sanitize `BlueFuzz' and `BlueShift'.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7371

* src/cff/cffload.c (cff_load_private_dict): Sanitize
`priv->blue_shift' and `priv->blue_fuzz' to avoid overflows later
on.

* src/type1/t1load.c (T1_Open_Face): Ditto.
2018-04-04 20:26:08 +02:00
suzuki toshiya 26ad1acbcb * src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554),
`DFHei-Md-HK-BF', `DFKaiShu-Md-HK-BF' and `DFMing-Bd-HK-BF'.
(tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts
in above.
2018-04-04 16:39:42 +09:00
Werner Lemberg 7109495c5e * builds/toplevel.mk (work): Use $(SEP).
This fixes the `make refdoc' using Cygwin: $(CAT) is `type' on this
platform, and this program only understands backslashes in paths.

Reported by Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>.
2018-04-01 13:24:59 +02:00
Werner Lemberg 597cb3b442 [truetype] Fix memory leak (only if tracing is on).
* src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix
it.
2018-03-30 13:46:03 +02:00
Ben Wagner 34e467332b [sfnt] Correctly handle missing bitmaps in sbix format (#53404).
* src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value.
2018-03-23 06:13:25 +01:00
Ben Wagner 43d4852ec6 [truetype] Fix advance of empty glyphs in bitmap fonts (#53393).
* src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics
for empty bitmaps.
2018-03-23 06:07:24 +01:00
Werner Lemberg af89e445f8 Remove `ftlcdfil.c' and `ftfntfmt.c' from build files (#53415).
builds/amiga/makefile, builds/amiga/makefile.os4,
builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
builds/mac/FreeType.m68k_far.make.txt,
builds/mac/FreeType.ppc_carbon.make.txt,
builds/mac/FreeType.ppc_classic.make.txt,
builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2008-ce/freetype.vcproj,
builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2008/freetype.vcproj,
builds/windows/vc2010/freetype.vcxproj,
builds/windows/vc2010/freetype.vcxproj.filters,
builds/windows/visualc/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualce/freetype.dsp,
builds/windows/visualce/freetype.vcproj, vms_make.com: Do it.
2018-03-22 06:00:55 +01:00
Werner Lemberg 5bd76524ef * src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric
overflow.
2018-03-13 11:11:16 +01:00
Werner Lemberg 78cded2c5c Fix cmap format 2 handling (#53320).
The patch introduced for #52646 was not correct.

* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
2018-03-13 11:09:44 +01:00
Nikolaus Waxweiler 098dd70cb1 * CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05. 2018-03-10 14:51:17 +01:00
Chun-wei Fan 6f854692a8 * CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287).
Do not limit DLL builds to MinGW, since we already have
`__declspec(dllexport)' directives in `ftconfig.h'.
Also suppress more warnings for POSIX functions.
2018-03-09 06:51:38 +01:00
Werner Lemberg e277267c52 Typo. 2018-03-08 11:33:31 +01:00
Hugh McMaster a7833f26c4 Make installation of `freetype-config' optional (#53093).
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
2018-03-08 06:25:13 +01:00
Werner Lemberg 733a21bdbc Make `ftlcdfil.c' part of the `base' module.
`ftobjs.c' needs `ft_lcd_padding'.

Problem reported by duhuanpeng <548708880@qq.com>.

* modules.cfg (BASE_EXTENSIONS): Don't include `ftlcdfil.c'.

* src/base/ftbase.c: Include `ftlcdfil.c'.
* src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c'.
* src/base/Jamfile (_sources): Adjusted.

* docs/INSTALL.ANY: Updated.
2018-03-05 23:37:17 +01:00
Werner Lemberg f4a3531655 Make `ftfntfmt.c' part of the `base' module.
`ftobjs.c' needs `FT_Get_Font_Format'.

Problem reported by duhuanpeng <548708880@qq.com>.

* modules.cfg (BASE_EXTENSIONS): Don't include `ftfntfmt.c'.

* src/base/ftbase.c: Include `ftfntfmt.c'.
* src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c'.
* src/base/Jamfile (_sources): Adjusted.

* docs/INSTALL.ANY: Updated.
2018-03-05 20:45:12 +01:00
Werner Lemberg efd13c5d1b * src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments. 2018-03-01 22:17:54 +01:00
Werner Lemberg 0206479158 * builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer.
Problem reported by Alan Coopersmith <alan.coopersmith@oracle.com>.
2018-03-01 21:34:57 +01:00
Werner Lemberg 713d68ee9f [sfnt] Prefer `CBDT'/`CBLC' over `glyf' table (#53154). 2018-02-17 18:35:15 +01:00
Werner Lemberg 9fbd0041ca Split off ChangeLog.28. 2018-02-17 10:37:10 +01:00
Werner Lemberg 4a03f17449 [truetype] Integer overflow issues.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6027

* src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use
SUB_LONG; avoid FT_ABS.
2018-02-06 02:23:19 +01:00
Alexei Podtelezhnikov f4a3255d45 [unix] Use -fvisibility=hidden.
It is now widely recommended that ELF shared libraries hide symbols
except those with explicit __attribute__((visibility("default"))).
This is supported by all major compilers and should rather be an
option in libtool.

* builds/unix/configure.raw: Add -fvisibility=hidden to CFLAGS.
* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
include/freetype/config/ftconfig.h (FT_EXPORT): Use visibility
attribute.
2018-02-04 00:09:02 -05:00
Werner Lemberg 68dddcdcbe [truetype] Better protection against invalid VF data.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5739

Bug introduced in commit 08cd62deed.

* src/truetype/ttgxvar.c (TT_Set_Var_Design): Always initialize
`normalizedcoords'.
2018-01-27 23:59:30 +01:00
Werner Lemberg 29c759284e * src/truetype/ttinterp.c (Ins_GETVARIATION): Avoid NULL reference.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5736
2018-01-27 14:43:43 +01:00
Werner Lemberg f438e06972 * src/truetype/ttgxvar.c (tt_set_mm_blend): Minor. 2018-01-27 14:39:15 +01:00
Werner Lemberg ef48653023 [truetype] Better trace VF instances.
* src/truetype/ttgxvar.c (ft_var_to_normalized): Don't emit number
of coordinates.
(TT_Get_MM_Var): Trace instance indices names.
(TT_Set_Var_Design): Updated.
2018-01-27 13:58:02 +01:00
Werner Lemberg 50f693a78b [truetype] Beautify tracing of VF axis records.
* src/truetype/ttgxvar.c (TT_Get_MM_Var): Show axis records in a
table-like manner.
2018-01-27 10:15:58 +01:00
Werner Lemberg 994eb2b349 [truetype] Fix multiple calls of `FT_Get_MM_Var' (#52955).
* src/truetype/ttgxvar.c (TT_Get_MM_Var): Set
`face->blend->num_axis' in case we have to initialize the
`face->blend'.
2018-01-26 23:17:43 +01:00
Alexei Podtelezhnikov b1e0209829 [apinames] Anonymous version map for GNU linker.
* src/tools/apinames.c (PROGRAM_VERSION): Set to 0.3.
(OutputFormat): Add `OUTPUT_GNU_VERMAP'.
(names_dump): Handle it.
(usage): Updated.
(main): Handle new command line flag `-wL'.
2018-01-23 22:29:45 -05:00
Alexei Podtelezhnikov c6a965b4d3 [unix] Call libtool to clean up.
* builds/unix/install.mk (clean_project_unix, distclean_project_unix):
Use libtool.
* builds/freetype.mk: Minor.
2018-01-21 14:29:58 -05:00
Alexei Podtelezhnikov 6ce6685659 * src/base/ftver.rc: Fix mingw-w64 compilation. 2018-01-18 21:29:48 -05:00
Alexei Podtelezhnikov 4b8ccc56d8 [build] Enable VERSIONINFO resource for Cygwin/MinGW.
* builds/unix/configure.raw: Check for resource compiler.
* builds/unix/unix-cc.in: Conditionally set up resource compiler.
* builds/freetype.mk: Add conditional rule for `ftver.rc'.
* src/base/ftver.rc: Copyright notice and year update.
2018-01-18 04:32:52 -05:00
Alexei Podtelezhnikov fd8000f040 [build] Move VERSIONINFO resource.
* builds/windows/vc2010/freetype.vcxproj: Updated.
* builds/windows/ftver.rc: Move file from here...
* src/base/ftver.rc: ... to here.
2018-01-18 03:58:34 -05:00
Alexei Podtelezhnikov d2d1750e08 [build] Expand dllexport/dllimport to Cygwin/MinGW.
* include/freetype/config/ftconfig.h: Respect DLL_EXPORT,
s/_MSC_VER/_WIN32/.
* builds/unix/ftconfig.in: Replicate here.
* builds/vms/ftconfig.h: Replicate here.
2018-01-12 23:01:49 -05:00
Alexei Podtelezhnikov e8b38f899c [build] Improve and document MSVC build.
* include/freetype/config/ftconfig.h: Guard dllexport/dllimport
attributes with _DLL and FT2_DLLIMPORT.
* builds/windows/vc2010/index.html: Update documentation.
2018-01-12 08:57:08 -05:00
Steve Robinson 707cd028b2 * CMakeLists.txt [win32]: Suppress warnings for POSIX functions. 2018-01-10 07:49:43 +01:00
Ewald Hew cc2f3cdecf [psaux] Correctly handle Flex features (#52846).
* src/psaux/psintrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO,
cf2_cmdHMOVETO>: Do not move if doing Flex.
2018-01-10 13:28:36 +08:00
Alexei Podtelezhnikov 3f96c0bcc1 * builds/windows/vc2010/freetype.sln: Synchronize with the project. 2018-01-09 22:22:19 -05:00
Werner Lemberg 67a42aa887 * Version 2.9 released.
=======================

Tag sources with `VER-2-9'.

* docs/VERSION.TXT: Add entry for version 2.9.

* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
builds/windows/vc2005/index.html,
builds/windows/vc2008/freetype.vcproj,
builds/windows/vc2008/index.html,
builds/windows/vc2010/freetype.vcxproj,
builds/windows/vc2010/index.html,
builds/windows/visualc/freetype.dsp,
builds/windows/visualc/freetype.vcproj,
builds/windows/visualc/index.html,
builds/windows/visualce/freetype.dsp,
builds/windows/visualce/freetype.vcproj,
builds/windows/visualce/index.html,
builds/windows/ftver.rc,
builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/freetype.vcproj,
builds/wince/vc2008-ce/index.html: s/2.8.1/2.9/, s/281/29/.

* include/freetype/freetype.h (FREETYPE_MINOR): Set to 9.
(FREETYPE_PATCH): Set to 0.

* builds/unix/configure.raw (version_info): Set to 22:0:16.
* CMakeLists.txt (VERSION_PATCH): Set to 1.
2018-01-08 12:30:04 +01:00
Werner Lemberg 1d6773e6d9 Add check for librt, needed for `ftbench' (#52824).
* builds/unix/configure.raw: Call AC_USE_SYSTEM_EXTENSIONS.
(LIB_CLOCK_GETTIME): Define; this will hold `-lrt' if necessary.

* builds/unix/unix-cc.in (LIB_CLOCK_GETTIME): New variable.
2018-01-07 19:06:19 +01:00
Ewald Hew 21bd9c2f8c [psaux] Fix Type 1 glyphs with too many stem hints.
According to the CFF specification, charstrings can have up to 96 stem
hints. Due to hint replacement routines in Type 1 charstrings, some
glyphs are rejected by the Adobe engine, which implements the above
limit. This fix turns off hinting for such glyphs.

* src/psaux/pshints.c (cf2_hintmap_build): Reset the error from calling
`cf2_hintmask_setAll' on a problematic Type 1 charstring and turn off
hinting.
2018-01-07 16:38:54 +08:00
Werner Lemberg 3758aed760 Add `FT_Done_MM_Var'.
This is necessary in case the application's memory routines differ
from FreeType.  A typical example is a Python application on Windows
that calls FreeType compiled as a DLL via the `ctypes' interface.

* include/freetype/ftmm.h, src/base/ftmm.c (FT_Done_MM_Var): Declare
and define.

* docs/CHANGES: Updated.
2018-01-06 08:39:36 +01:00
Werner Lemberg 029c9b2391 [truetype] Round offsets of glyph components only if hinting is on.
* src/truetype/ttgload.c (TT_Process_Composite_Component): Implement
it.
2018-01-03 19:05:20 +01:00
Werner Lemberg 55d6abea5d * src/truetype/ttgxvar.c (ft_var_to_design): Remove dead code.
This is a better fix than the previous commit, which is now
reverted.
2018-01-03 19:01:15 +01:00
Alexei Podtelezhnikov 20b3e34846 Move internal LCD-related declarations.
* include/freetype/ftlcdfil.h (ft_lcd_padding, ft_lcd_filter_fir):
Move from here...
* include/freetype/internal/ftobjs.h: ... to here.
2018-01-02 22:12:09 -05:00
Alexei Podtelezhnikov c94d042be6 * include/freetype/config/ftconfig.h (FT_EXPORT, FT_EXPORT_DEF)
[_MSC_VER]: Limit Visual C++ attributes.
2018-01-02 21:38:35 -05:00
Werner Lemberg ecfdfd4498 [truetype] Make blend/design coordinate round-tripping work.
Behdad reported that setting blend coordinates, then getting design
coordinates did incorrectly return the default instance's
coordinates.

* src/truetype/ttgxvar.c (tt_set_mm_blend): Fix it.
2018-01-03 00:20:11 +01:00
Werner Lemberg 0a0c22569d Update copyright year. 2018-01-02 09:33:57 +01:00