Commit Graph

6210 Commits

Author SHA1 Message Date
Alexei Podtelezhnikov fcfd6c17ff Thinko. 2018-04-30 00:07:36 -04:00
Alexei Podtelezhnikov d526705f5e API for Harmony LCD rendering.
This introduces `FT_Library_SetLcdGeometry' for setting up arbitrary
LCD subpixel geometry including non-striped patterns.
2018-04-30 00:02:33 -04:00
Alexei Podtelezhnikov 11ffff2c91 Formulate Harmony LCD rendering.
This generalizes magic outline shifts that make Harmony LCD
rendering work in terms of precise two-dimensional RGB subpixel
positions. These coordinates are now set in time of the `smooth'
module initialization and later used to shift a glyph outline for
rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same
coordinates. The letter, however, rotates them before using.
The LCD bitmap padding is also calculated using these coordinates.
There should be rendering changes resuting from this commit.
2018-04-28 23:01:44 -04:00
Alexei Podtelezhnikov b5a29cce2f Merge branch 'master' into Harmony 2018-04-28 22:58:51 -04:00
Werner Lemberg ac97a29653 Another fix for handling invalid format 2 cmaps.
Sigh.

Reported as

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

* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
an endless loop.
2018-04-26 09:04:39 +02:00
Ben Wagner 2157d8fa6f [base] Avoid undefined behaviour in lcd filtering code (#53727).
* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
Ensure `height > 0'.
2018-04-24 10:29:19 +02:00
Werner Lemberg 67697d0076 * src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing. 2018-04-22 21:15:10 +02:00
Alexei Podtelezhnikov 3b88576ba0 [base] Fix bitmap emboldening.
Bug introduced after release 2.8.

* src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use
`FT_QALLOC_MULT', which doesn't zero out the buffer.  Adjust the
bitmap copying code to take care of this fact.
2018-04-22 17:22:35 +02:00
Werner Lemberg c2e2a8e5d9 Revert "[base] Fix bitmap copying where the new pitch is smaller."
This reverts commit c0f1adedcf.
2018-04-22 17:13:50 +02:00
Werner Lemberg c0f1adedcf [base] Fix bitmap copying where the new pitch is smaller.
* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Handle it.
2018-04-22 11:44:24 +02:00
Werner Lemberg 38ecc949ce Another fix for handling invalid format 2 cmaps.
The previous commit was incomplete.

Reported as

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

* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
an endless loop.
2018-04-22 10:14:03 +02:00
Alexei Podtelezhnikov 92e4662ba6 Documentation tweaks. 2018-04-19 17:57:42 -04:00
Werner Lemberg e4b6d85326 [autofit] Add support for Georgian Mtavruli characters.
This will be part of the forthcoming Unicode 11.0.

* src/autofit/afblue.dat: Add blue zone data for Mtavruli.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

* src/autofit/afscript.h: Add Mtavruli standard character.
2018-04-19 17:43:03 +02:00
Werner Lemberg 1655e00fce Fix handling of invalid format 2 cmaps.
The problem was introduced after the last release.

Reported as

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

* src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop.
2018-04-19 14:45:19 +02:00
Werner Lemberg 2a1597826a [truetype] Integer overflow issues.
Reported as

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

* src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG.
2018-04-17 12:25:17 +02:00
Werner Lemberg 632a11f91f CHANGES: Mention CVE-2018-6942. 2018-04-16 19:51:37 +02:00
Werner Lemberg 70ac167c47 [truetype] Integer overflow issues.
Reported as

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

* src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG.
2018-04-16 10:39:10 +02:00
Ankit Dhankhar 939bbee1c0 [docmaker] Make it work with python3.
* src/tools/docmaker (*.py): Use parentheses around arguments of `print'.
Remove unused imports.
2018-04-15 22:35:40 +02:00
Alexei Podtelezhnikov 843193b9d5 [build] Use `info' function of make 3.81.
* configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU,
docs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements.

* builds/detect.mk (std_setup): Replace `echo' with `info'.
(dos_setup): Removed.
* builds/unix/install.mk, builds/modules.mk, builds/dos/detect.mk,
builds/windows/detect.mk, builds/os2/detect.mk: Updated.
* builds/newline: No longer needed.
2018-04-15 16:27:10 -04:00
Werner Lemberg 235b1e2fe6 [truetype]: Limit `SLOOP' bytecode argument to 16 bits.
This fixes

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

* src/truetype/ttinterp.c (Ins_SLOOP): Do it.
2018-04-15 21:55:04 +02:00
Werner Lemberg 827ca3bcf2 [truetype] Integer overflow issues.
Reported as

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

* src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG.
2018-04-14 07:20:31 +02:00
Werner Lemberg 576670b779 [autofit] Update to Unicode 11.0.0.
But no support new scripts (volunteers welcomed).

* src/autofit/afranges.c (af_arab_nonbase_uniranges,
af_beng_nonbase_uniranges, af_cakm_nonbase_uniranges,
af_deva_nonbase_uniranges, af_geor_uniranges,
af_gujr_nonbase_uniranges, af_mlym_nonbase_uniranges,
af_nkoo_nonbase_uniranges, af_telu_nonbase_uniranges,
af_hani_uniranges): Add new data.
2018-04-14 07:00:30 +02:00
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 578dafd6b4 Minor comment improvement. 2018-04-03 11:31:22 +02: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
Alexei Podtelezhnikov fa6da7bf6d Documentation improvement. 2018-03-26 21:40:18 -04:00
Werner Lemberg 61ee69a66e Typo. 2018-03-24 05:53:22 +01:00
Kushal K S V S e1122047ae Fixing cmake command format 2018-03-23 13:12:07 +05:30
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
Werner Lemberg b0a93839b5 CHANGES: Document `--enable-freetype-config'. 2018-03-08 06:36:47 +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 ccec889229 Minor: Update `CHANGES' and improve documentation in `modules.cfg'. 2018-03-08 06:09:17 +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 5955b77b1d Minor documentation improvement. 2018-03-03 09:21:59 +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