Commit Graph

6811 Commits

Author SHA1 Message Date
David Turner e13391333f Make macros for header file names optional.
We no longer have to take care of the 8.3 file name limit; this
allows us (a) to introduce longer, meaningful file names, and (b) to
avoid macro names in `#include' lines altogether since some
compilers (most notably Visual C++) doesn't support this properly.

*/*: Replace

   #include FOO_H

with

   #include <freetype/foo.h>

or something similar.  Also update the documentation.
2020-06-08 13:31:55 +02:00
Werner Lemberg 9e6e903cc4 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Trace number of cmaps. 2020-06-02 17:14:54 +02:00
David Turner 62fea391fa Remove obsolete HAVE_STDINT_H probing macro.
This macro was updated by the unix configure script and the
`CMakeLists.txt' one, but is never used in the source tree (nor is
<stdint.h> included anywhere).

* CMakeLists.txt, builds/unix/ftconfig.in: Don't handle
`HAVE_STDINT_H'.
2020-05-18 18:42:57 +02:00
David Turner 4eee13404d Remove Jamfile files from the tree.
These have not been used in a very, very long time, so better remove
them.  A corresponding patch will be submitted to the
`freetype2-demos' repository.

* src/Jamfile, src/*/Jamfile, Jamrules: Delete.
2020-05-18 17:56:06 +02:00
Alexei Podtelezhnikov 3f70e6d20c [smooth] Turn on LCD filtering during FreeType initialization.
* src/smooth/ftsmooth.c (ft_smooth_init): Enable LCD filtering.

* include/freetype/ftlcdfil.h: Document it, remove patent warnings.
* include/freetype/freetype.h (FT_Render_Mode): Updated.
* include/freetype/config/ftoption.h, devel/ftoption.h
[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Do not mention patents.
2020-05-12 00:38:46 -04:00
Alexei Podtelezhnikov 652f886319 [smooth] Stop using dedicated LCD modules and classes.
The LCD modules were never truly independent. They mostly served as
a way to disable patented LCD rendering, which is no longer necessary.
The `smooth' module now handles LCD modes as well.

* src/smooth/ftsmooth.c (ft_smooth_lcd_renderer_class.
ft_smooth_lcdv_renderer_class): Deleted.
(ft_render_smooth): Reworked from `ft_render_smooth_generic'.
* src/smooth/ftsmooth.h: Remove dedicated LCD classes.
* src/smooth/module.mk: Remove dedicated LCD modules.
* include/freetype/config/ftmodule.h: Ditto.
* builds/amiga/include/config/ftmodule.h: Ditto.
* include/freetype/ftmodapi.h: Do not mention LCD modules.
2020-05-11 23:30:37 -04:00
Alexei Podtelezhnikov 093f87bfe4 Formatting. 2020-05-09 22:32:03 -04:00
Werner Lemberg 132f19b779 * Version 2.10.2 released. ==========================
Tag sources with `VER-2-10-2'.

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

* README, Jamfile (RefDoc), src/base/ftver.rc,
builds/windows/vc2010/index.html, builds/windows/visualc/index.html,
builds/windows/visualce/index.html,
builds/wince/vc2005-ce/index.html,
builds/wince/vc2008-ce/index.html, docs/freetype-config.1:
s/2.10.1/2.10.2/, s/2101/2102/.

* include/freetype/freetype.h (FREETYPE_PATCH): Set to 2.

* builds/unix/configure.raw (version_info): Set to 23:2:17.
* CMakeLists.txt (VERSION_PATCH): Set to 2.

* docs/CHANGES: Updated.
2020-05-09 07:09:40 +02:00
Jakub Alba a45da25349 * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#58319).
The font that exceeds the old limit is Icono Regular, version
1.00000.
2020-05-08 10:59:37 +02:00
Alexei Podtelezhnikov ed62b12d6c Typo and comment. 2020-05-03 23:22:08 -04:00
Alexei Podtelezhnikov de60e7d3f8 * builds/freetype.mk: Refactor for readability. 2020-05-03 17:11:20 -04:00
Alexei Podtelezhnikov 49967cb610 [builds] Clean up Windows CE project files.
Remove version from filenames that caused a lot of polution in the
release process. Use VERSIONINFO resource instead.

* builds/wince/vc2005-ce/freetype.vcproj,
builds/wince/vc2008-ce/freetype.vcproj,
builds/windows/visualce/freetype.vcproj,
builds/windows/visualce/freetype.dsp: s/2101//g, but add `ftver.rc'.
* builds/wince/vc2008-ce/index.html,
builds/wince/vc2005-ce/index.html,
builds/windows/visualce/index.html: s/2101//g.
2020-05-02 13:50:33 -04:00
Alexei Podtelezhnikov a612da0e8b * devel/ft2build.h: Override FT_CONFIG_MODULES_H here as well. 2020-05-01 22:52:52 -04:00
Alexei Podtelezhnikov 9c850f5611 [builds/unix] Consolidate marco overrides (for the demos to see them).
* builds/unix/unix-cc.in (FT_CONFIG_MODULES_H, FT_CONFIG_OPTIONS_H):
Override them here...
* builds/freetype.mk: ... instead of here.
2020-05-01 22:30:15 -04:00
Werner Lemberg d79946311b Grammar fix for last commit. 2020-04-30 08:37:16 +02:00
Werner Lemberg e6ecce9ae8 CHANGES: We are going to remove Jam. 2020-04-30 07:27:28 +02:00
Werner Lemberg 11beee855e Allow setting `CC' in Unix build (#58051).
* builds/unix/unix-cc.in (CC): Use `override'.  The command line
  value of `CC' (if any) is stored already in `CCraw'.
2020-04-08 09:05:32 +02:00
Nikhil Ramakrishnan 7a019a63ed [woff2] Return if single stream operation fails.
* src/sfnt/sfwoff2.c (get_x_mins): Do it.

* src/sfnt/woff2tags.c: Remove unused include.
2020-04-04 14:06:37 +05:30
Nikhil Ramakrishnan 13c0df80dc [docs] Fix building docs if `srcdir' != `builddir'.
`docs/reference/*' was moved one directory up in commit 237fed6.

* builds/unix/unix-def.in (PIP): Remove variable.

* configure: Create `docs' directory and copy assets from
`docs/markdown'.

* docs/README: Output directory is `reference'.
2020-03-22 23:29:51 +05:30
Nikhil Ramakrishnan 1fd3148713 [docwriter] Drop support for Python < 3.5.
Python versions < 3.5 have reached end-of-life and as such, no
security or bug fixes will be provided for those versions.  See

  https://devguide.python.org/#status-of-python-branches

for more information.

* Jamfile (RefDoc): Add `site' parameter.

* builds/detect.mk (std_setup): Update Python version requirement.

* builds/freetype.mk (refdoc-venv): Use pip as `python -m pip'.

* builds/unix/ax_compare_version.m4,
builds/unix/ax_prog_python_version.m4: Macros to detect Python
version.  New files.

* builds/unix/configure.raw: Check for Python >= 3.5 and remove
check for `pip'.

* docs/CHANGES, docs/INSTALL.GNU, docs/README: Updated.
2020-03-21 20:17:17 +05:30
Moazin Khatti 6a431038c9 [gzip] Support `gzip' encoded header conditionally.
In order to support `gzip' encoded header the call to
`inflateInit2' was modified in commit 6a92b1fadd.
However, this code breaks with the outdated internal version
of zlib.  This is a temporary fix to conditionally support
`gzip' encoded header whenever a system installation of zlib
is being used.

Problem report in

  https://lists.nongnu.org/archive/html/freetype-devel/2020-02/msg00023.html

* src/gzip/ftgzip.c (FT_Gzip_Uncompress): Change the the call to
`inflateInit2' depending on whether the system installation is
being used or the internal copy.
2020-03-02 18:21:27 +05:00
Ben Wagner 11975fe9f6 Fix state of `FT_Face' for buggy `gvar' tables (#57923).
By resetting the blend as implemented with this commit fonts with
invalid `gvar' tables may keep calling into `ft_var_load_gvar' from
`tt_set_mm_blend' and failing, but the font was invalid anyway and
we want to keep seeing the failure in `tt_set_mm_blend'.

* src/truetype/ttgxvar.c (ft_var_load_gvar): Calculate length of
offset array once.
Allocate arrays after `FT_FRAME_ENTER' (extra check before
allocating and avoid needing to free array later if error entering
frame).
Always call `FT_FRAME_EXIT'.
Consistently set counts immediately after array initialized.
Reset the blend (particularly `blend->glyphoffsets') on failure.
2020-02-29 20:29:14 +01:00
Werner Lemberg 149b9055e6 ChangeLog entry for last commit. 2020-02-29 20:28:03 +01:00
Nikhil Ramakrishnan 21c2311e63 Update docwriter stylesheet.
This change is required to support docwriter 1.2.1.

See

  https://github.com/freetype/docwriter/issues/36

for more information.

* docs/markdown/stylesheets/extra.css:
(.md-typeset code) -> (.md-typeset pre>code)
(pre) -> (pre>code)
(p, .md-typeset p, h4): Remove commented styles.
(table.index): Remove unused styles.
2020-03-01 00:37:31 +05:30
Ben Wagner 216e077600 [truetype] Add better checks for loading `gvar' table (#57905).
* src/truetype/ttgxvar.c (ft_var_load_gvar): Delay settings of any
`blend->xxxcount' values until the corresponding data has been
checked.
Also do some sanitizing to avoid a too early exit.

(TT_Vary_Apply_Glyph_Deltas): Improve tracing message.
2020-02-28 07:43:00 +01:00
Werner Lemberg 141da02816 Make `FT_HAS_*' and `FT_IS_*' really return true (#57906).
* include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Implement it.
2020-02-27 09:49:06 +01:00
Dominik Röttsches 5b1a37af56 Fix for CFF space glyph regression (#57541).
* src/psaux/psft.c (cf2_decoder_parse_substrings): Replace early-out
  with FT_OFFSET.
2020-02-25 11:02:28 +01:00
Werner Lemberg fa147af4a5 [woff2] Fix font table access.
Reported as

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

* src/sfnt/sfwoff2.c (get_x_mins): Explicitly check for presence of
`head' table, which might not have been processed yet.
2020-02-22 18:30:46 +01:00
Werner Lemberg 6e49dff005 [psaux] Make `t1_decoder_parse_metrics' handle `op_div' (#57519).
* src/psaux/t1decode.c (t1_decoder_parse_metrics): Copy
corresponding code from old engine's `t1_decoder_parse_charstrings'
function.
2020-02-21 21:00:04 +01:00
Nikolaus Waxweiler 49f3394d7a [autofit] Add support for Hanifi Rohingya script.
* src/autofit/afblue.dat: Add blue zone data for Hanifi Rohingya.
* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.

* src/autofit/afscript.h: Add Hanifi Rohingya standard character.

* src/autofit/afranges.c, src/autofit/afstyles.h: Add Hanifi
  Rohingya data.
2020-02-19 20:04:31 +01:00
Werner Lemberg 84d56589f0 Require HarfBuzz 1.8.
* builds/unix/configure.raw, CMakeLists.txt: Request HarfBuzz 1.8.0
or newer.

We are going to add auto-hinter support for Hanifi Rohingya, which
was introduced in Unicode 11.0.
2020-02-19 19:22:49 +01:00
Werner Lemberg d09e831559 Minor. 2020-02-16 15:24:27 +01:00
Werner Lemberg 8930cc9618 * src/sfnt/ttcmap.c (tt_face_build_cmaps): Ignore version (#57708). 2020-02-12 18:25:03 +01:00
Werner Lemberg 4a19a53d5a * src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#57732).
The font that exceeds the old limit is Constantine, version 1.001.
2020-02-04 13:37:19 +01:00
Werner Lemberg e5038be704 Update all copyright notices. 2020-01-19 17:05:19 +01:00
Werner Lemberg fd03cf8816 [base] Fix `FREETYPE_PROPERTIES=type1:hinting-engine=adobe`.
* src/base/ftpsprop.c (ps_property_set) [hinting-engine]: Avoid an
incorrect return value that caused a warning.  The function did the
right thing, though.
2020-01-04 19:28:36 +01:00
Werner Lemberg 50b013871c Add reference to another oss-fuzz bug report. 2020-01-04 18:42:27 +01:00
Werner Lemberg a99a8e2863 [woff2] Fix memory leaks and a runtime warning.
Reported as

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

* src/sfnt/sfwoff2.c (compute_ULong_sum): Add missing cast.
(reconstruct_hmtx): Add missing deallocation calls.
2020-01-03 18:09:12 +01:00
Dominik Röttsches 10d8de7541 [truetype] Fix UBSan warning on offset to nullptr (#57501).
* src/truetype/ttinterp.c (Ins_CALL): Fail if `exc->FDefs' is null.
2020-01-02 11:14:01 +01:00
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