Commit Graph

6722 Commits

Author SHA1 Message Date
Nikhil Ramakrishnan a4df0373c7 [woff2] Allow bitmap-only fonts (#57394).
* src/sfnt/sfwoff2.c (reconstruct_font): Fix test for `glyf' and
`loca' tables.
2019-12-31 16:04:01 +01:00
Hugh McMaster 496601e504 [docs] (2/2) Fix generation of API documentation (#56745).
Creating the API Reference in the (new) `reference' sub-directory is
consistent with other documentation sub-topics, such as `design',
`glyphs' and `tutorial'.

This patch fixes broken hyperlinks in the documentation pointing to
and from the API Reference.  It also allows web assets to load from
their relative paths.

* builds/freetype.mk (DOC_DIR): Adjust.
(refdoc, refdoc-venv): Add `--site' argument.

* builds/toplevel.mk (do-dist): Updated.
2019-12-21 19:18:54 +01:00
Hugh McMaster 237fed6d5a [docs] (1/2) Move static web assets (#56745).
* docs/reference/*: Move ...
* docs: ... one directory up.
2019-12-21 19:13:37 +01:00
Dominik Röttsches 8cee1dde4e Fix more UBSan warnings on adding offset to nullptr (#57432).
* src/truetype/ttinterp.c (Ins_LOOPCALL), src/psaux/psft.c
(cf2_initLocalRegionBuffer): Use `FT_OFFSET'.
2019-12-21 19:03:48 +01:00
Werner Lemberg 7e1b39f6cd [truetype] Fix UBSan warnings on adding offsets to nullptr.
Reported as

  https://bugs.chromium.org/p/chromium/issues/detail?id=1032152

* src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Use `FT_OFFSET'.
2019-12-16 11:07:58 +01:00
Werner Lemberg 0c14a3adb0 [truetype] Fix integer overflow.
Reported as

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

* src/truetype/ttinterp.c (Ins_MIRP): Use `ADD_LONG'.
2019-12-14 00:04:01 +01:00
Werner Lemberg 2c9a2d58ca Another bunch of UBSan warnings on adding offsets to nullptr.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19427
  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19433
  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19441
  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19451
  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19452
  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=19457

* src/autofit/aflatin.c (af_latin_hints_compute_segments,
af_latin_hints_compute_edges): Use `FT_OFFSET'.

* src/base/ftstream.c (FT_Stream_EnterFrame): Use `FT_OFFSET'.

* src/psaux/cffdecode.c (cff_decoder_parse_charstrings): Exit early
if there is no charstring.

* src/psaux/psobjs.c (t1_decrypt): Use `FT_OFFSET'.

* src/smooth/ftsmooth.c (ft_smooth_render_generic): Exit early for
zero bitmap dimensions.
2019-12-13 23:56:25 +01:00
Dominik Röttsches 11d4ce23ac Fix more UBSan warnings on adding offset to nullptr (#57384)
* src/smooth/ftsmooth.c (ft_smooth_render_generic),
src/psaux/psobjs.c (ps_table_add): Use `FT_OFFSET'.
2019-12-09 13:11:41 +01:00
Werner Lemberg dfc9a049de * src/truetype/ttinterp.c (TT_RunIns): Use `FT_OFFSET'.
Reported as

  https://bugs.chromium.org/p/chromium/issues/detail?id=1030614
2019-12-05 08:44:30 +01:00
Werner Lemberg 551bd3a90e More nullptr offset UBSan warnings (#57331, #57347).
* src/autofit/afcjk.c (af_cjk_hints_compute_segments),
src/psaux/psft.c (cf2_getSeacComponent), src/truetype/ttinterp.c
(Ins_UNKNOWN): Use `FT_OFFSET'.
2019-12-03 11:52:48 +01:00
Dominik Röttsches 4270e9f324 Avoid more nullptr offset UBSan warnings (#57316).
* src/base/ftoutln.c (FT_Outline_Transform): Bail on empty points.
* src/cff/cffload.c (cff_subfont_load): Use `FT_OFFSET'.
* src/psaux/psft.c (cf2_decoder_parse_substrings): Early out if
`charstring_base' or `charstring_len' are null.
* src/sfnt/ttload.c (tt_face_load_name): Use `FT_OFFSET'.
2019-11-29 06:26:18 +01:00
John Stracke d4f9c24989 [base] Really fix #57194.
Apply accidentally missed second part of patch.

* src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Call
`FT_GlyphLoader_CreateExtra'.
2019-11-23 11:25:28 +01:00
Werner Lemberg 9df460b632 [truetype] Avoid sanitizer warning (#57289).
* src/truetype/ttpload.c (tt_face_get_device_metrics): Use
`FT_OFFSET'.
2019-11-23 11:09:40 +01:00
Armin Hasitzka c67b9a1c5b [truetype] Fix integer overflow (#57287).
* src/truetype/ttgload.c (compute_glyph_metrics): Use `SUB_LONG'.
2019-11-23 11:01:18 +01:00
Ben Wagner 3cb7b3f7cb [sfnt] Avoid sanitizer warning (#57286).
* src/sfnt/ttcmap.c (tt_face_build_cmaps): Avoid possible `NULL +
offset' computation.
Tag `table' as `const'.
2019-11-23 10:54:51 +01:00
John Stracke 2d1d60aac6 [base] Fix `NULL + offset' sanitizer warnings (#57194).
* src/base/ftgloadr.c (FT_GlyphLoader_Adjust_Points,
FT_GlyphLoader_Adjust_Subglyphs): Use `FT_OFFSET'.
(FT_GlyphLoader_CreateExtra): Add short cut if some values are zero.
2019-11-23 10:42:04 +01:00
Werner Lemberg 26d0f579c0 * include/freetype/internal/ftmemory.h (FT_OFFSET): New macro.
Use this for `base + offset' pointer calculations where `base' can
be NULL (triggering a sanitizer warning even if the resulting
pointer gets never dereferenced since it is undefined behaviour
in C).

Suggested by Ben Wagner.
2019-11-23 10:28:37 +01:00
Ben Wagner 9b0179597e [sfnt] Ensure OTTO fonts have tables (#57285).
* src/sfnt/ttload.c (tt_face_load_font_dir): Add test.
2019-11-23 10:07:48 +01:00
Behdad Esfahbod 07c8d8bbdb Minor fixes for recent compilers.
* src/gzip/infutil.h (inflate_mask): Add `const'.

* src/autofit/aflatin2.c: Include `ft2build.h'.
2019-11-23 10:00:02 +01:00
Nikolaus Waxweiler 3aaae716b2 CMakeLists.txt: minor doc additions, compile builds/unix/ftsystem.c on UNIX 2019-11-07 23:39:41 +00:00
Werner Lemberg b75031a26e * src/sfnt/sfwoff2.c (woff2_open_font): Check `num_fonts' for TTCs.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18494
2019-10-25 21:29:13 +02:00
Filip Filmar 0a3d2bb99b [doc] FT_Open_Args: Clarify the ownership of `pathname'.
Don't expect the function to deallocate the buffer.  This may be obvious
in C, but it is not so obvious in FFI bindings for FreeType 2.
2019-10-22 17:23:52 +02:00
Werner Lemberg 3b8bc65c50 * src/sfnt/sfwoff2.c (woff2_open_font): Avoid undefined shift.
Also improve tracing.

Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18390
2019-10-22 08:07:05 +02:00
Alexei Podtelezhnikov 90a30f154a * src/sfnt/pngshim.c (premultiply_data): Optimize for __SSE__ only. 2019-10-10 22:04:50 -04:00
Werner Lemberg 545a481a74 * src/sfnt/sfwoff2.c (reconstruct_glyf): Check `triplet_size'.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18108
2019-10-10 13:11:06 +02:00
John Tytgat 1e9229f0fc [cff] Fix FT_FACE_FLAG_GLYPH_NAMES for CFF2 based fonts (#57023).
* src/cff/cffobjs.c (cff_face_init): Don't set FT_FACE_FLAG_GLYPH_NAMES
for CFF2 based fonts.
2019-10-09 15:37:19 +02:00
Werner Lemberg 5a1a79c0e8 [woff2] Fix SFNT table checks.
Also reduce number of SFNT table lookups.

Reported as

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

* include/freetype/internal/wofftypes.h (WOFF2_InfoRec): Add fields
`glyf_table', `loca_table', and `head_table'.

* src/sfnt/sfwoff2.c (reconstruct_glyf): Update signature.
Use table pointers in `info' parameter.
(get_x_mins): Check `maxp_table'
Use table pointers in `info' parameter.
(reconstruct_font):  Use and set table pointers in `info' parameter.
Fix check for `glyf' and `loca' tables.
Update call to `reconstruct_glyf'.
(woff2_open_font): Updated.
2019-10-08 11:12:18 +02:00
Werner Lemberg 1167bff3e9 * src/sfnt/sfwoff2 (reconstruct_glyf): Fix reallocation.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18046
2019-10-06 23:22:34 +02:00
Werner Lemberg 0fcf486e0d Improve memory debugging.
* include/freetype/internal/ftmemory.h (FT_MEM_FREE): Use
`FT_DEBUG_INNER' to set source code file name and line.

* src/base/ftdbgmem.c (ft_mem_table_remove): Better formatting of
tracing message.
2019-10-06 21:12:42 +02:00
Werner Lemberg d355a73aa3 docs/DEBUG: Document environment variable `FT2_KEEP_ALIVE'.
Also do some formatting and minor edits.
2019-10-06 20:07:09 +02:00
Werner Lemberg 1f4e5bcb19 * src/sfnt/sfwoff2 (reconstruct_font): Fix reallocation.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17966
2019-10-03 21:07:16 +02:00
Alexei Podtelezhnikov c912690d22 * src/base/ftstroke.c (ft_stroker_inside): Speed up. 2019-09-30 22:45:34 -04:00
Werner Lemberg 94815d6efa * src/sfnt/sfwoff2 (woff2_open_font): Initialize `woff2.ttc_fonts'.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17804
2019-10-01 00:15:25 +02:00
Werner Lemberg 839a023619 * src/sfnt/sfwoff2.c (reconstruct_font): Fix memory leak.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17812
2019-09-30 07:41:57 +02:00
Werner Lemberg 12696dcf9b [woff2] Reject fonts without `head' table.
Also fix memory deallocation in case of error.

`head' problem reported as

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

* src/sfnt/sfwoff2.c (reconstruct_glyf): Don't use `stream_close'.
Abort if `head_table' is NULL.
Don't free `transformed_buf' in case of error.
(woff2_open_font): Don't set `uncompressed_buf' to NULL.
2019-09-30 07:27:55 +02:00
Werner Lemberg ba06adafcd [woff2] Fix compiler warnings.
Problem reported by Alexei.

* src/sfnt/sfwoff2.c (reconstruct_glyf): Initialize `x_min'.
(reconstruct_font): Initialize `num_hmetrics'.
(woff2_open_font): Initialize `info'.
2019-09-29 13:29:21 +02:00
Werner Lemberg c37a501458 * src/sfnt/sfwoff2.c (woff2_open_font): Fix sanity check.
Correct thinkos in patch from 2019-09-01.
2019-09-28 07:42:34 +02:00
Werner Lemberg 2bf603bde6 [woff2] Fix memory leaks.
One of them reported as

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

* src/sfnt/sfwoff2.c (woff2_open_font): Free `info->x_mins' and
`woff2->ttc_fonts'.

(reconstruct_glyf): Initialize `info->x_mins'.
2019-09-28 07:38:16 +02:00
Alexei Podtelezhnikov b39576f984 * src/base/ftstroke.c (ft_stroker_cap): Speed up caps. 2019-09-27 19:18:49 -04:00
Alexei Podtelezhnikov 432efa25b3 * src/base/ftstroke.c (ft_stroker_outside): Speed up clipped miter.
* include/freetype/ftstroke.h: Wordsmith miter docs.
2019-09-25 21:50:16 -04:00
Werner Lemberg db4083fd7f * src/sfnt/sfwoff2.c (woff2_open_font): Check (sum of) table sizes.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17684
2019-09-25 08:48:26 +02:00
Alexei Podtelezhnikov 4881f75b7c * src/base/ftstroke.c (ft_stroke_border_arcto): Speed up calculations. 2019-09-23 22:57:00 -04:00
Nikhil Ramakrishnan 5327092bb2 [woff2] Fix memory leaks.
Reported as

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

* src/sfnt/sfwoff2.c (woff2_open_font): Fix error handling.
Free `uncompressed_buf'.
(reconstruct_font): Free `transformed_buf'.
2019-09-20 06:30:28 +02:00
Werner Lemberg 04ebb2a000 * src/otvalid/otvcommon.c (otv_Coverage_get_last): Guard `count'.
Problem reported by Marc Schönefeld <marc.schoenefeld@gmx.org>.
2019-09-17 19:46:59 +02:00
Werner Lemberg 99f23d6ff2 * src/sfnt/sfwoff2.c (woff2_open_font): Check table index.
Reported as

  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=17100
2019-09-17 13:22:28 +02:00
Avi Halachmi (:avih) cc17f852d5 [cmake] Don't fail if brotli is missing (#56894).
The libs which cmake controls are commented out at

  include/freetype/config/ftoption.h

and cmake un-comment each enabled library, but the brotli option was
not commented out, therefore `FT_CONFIG_OPTION_USE_BROTLI' remained
defined even if brotli was missing/disabled/etc.

Comment it such that cmake can control it, which means leaving it
undefined if brotli is missing.

* include/freetype/config/ftoption.h: Fix typo.
2019-09-15 18:52:13 +02:00
Werner Lemberg 3de1b8d0b0 [cmake] Add brotli support.
* CMakeLists.txt (FT_WITH_BROTLI): New option.

* builds/cmake/FindBrotliDec.cmake: New file.
2019-09-05 14:10:01 +02:00
Werner Lemberg bbb14361db FindHarfBuzz.cmake: Change indentation to two spaces; shorten lines. 2019-09-05 12:38:17 +02:00
Werner Lemberg 87f5225256 Fix handling of `AF_CONFIG_OPTION_INDIC'.
* devel/ftoption.h, include/freetype/config/ftoption.h:
`AF_CONFIG_OPTION_INDIC' needs `AF_CONFIG_OPTION_CJK'.
2019-09-05 12:14:03 +02:00
Werner Lemberg 12351eeefa CMakeLists.txt: Fix generation of DLL related stuff (#56852).
Extract `version_info' variable from `builds/unix/configure.raw' and
use the data to correctly set `LIBRARY_VERSION' and
`LIBRARY_SOVERSION'.

Also use the data to set `ft_version' field in `freetype2.pc'.
Also fix the needed minimum version of HarfBuzz in `freetype2.pc'.
2019-09-05 12:07:01 +02:00