freetype/docs
Werner Lemberg b04db3872c [sfnt] Rewrite GPOS kerning support. (2/2)
The previous code had a fundamental flaw: it didn't validate the necessary
parts of the 'GPOS' table before accessing it, causing crashes with
malformed data (since `TT_CONFIG_OPTION_GPOS_KERNING` is off by default,
standard fuzzers don't catch these problems).  Additionally, it did a lot of
parsing while accessing kerning data, making it rather slow.

The new implementation fixes this.  After validation, offsets to the 'GPOS'
lookup subtables used in the 'kern' feature that correspond to 'simple'
kerning (i.e., similar to 'kern' table kerning) are stored in `TT_Face`;
this greatly simplifies and accelerates access to the kerning data.

Testing with font `SF-Pro.ttf` version '1.00', the validation time for the
'GPOS' table increases the start-up time of `FT_New_Face` by less than 1%,
while calls to `FT_Get_Kerning` become about 3.5 times faster.

* include/freetype/internal (gpos_kerning_available): Replace with...
  (gpos_lookups_kerning, num_gpos_lookups_kerning): ... these new fields.
  Update callers.

* src/ttgpos.c [TT_CONFIG_OPTION_GPOS_KERNING]: A new implementation.
2025-07-05 14:51:40 +02:00
..
markdown Fix various typos. 2024-08-13 23:29:13 -04:00
oldlogs Fix various typos. 2024-08-13 23:29:13 -04:00
.gitignore [docs] (1/2) Move static web assets (#56745). 2019-12-21 19:13:37 +01:00
CHANGES [sfnt] Rewrite GPOS kerning support. (2/2) 2025-07-05 14:51:40 +02:00
CMAKE * docs/CMAKE: New dummy file. 2013-11-10 06:26:52 +01:00
CUSTOMIZE Update all copyright notices. 2024-01-27 11:11:22 -05:00
DEBUG Update all copyright notices. 2024-01-27 11:11:22 -05:00
DOCGUIDE Update all copyright notices. 2024-01-27 11:11:22 -05:00
formats.txt Update all copyright notices. 2024-01-27 11:11:22 -05:00
freetype-config.1 * Version 2.13.3 released. 2024-08-12 12:50:14 +02:00
freetype-web.txt * docs/*: Typos. 2023-11-25 09:00:11 -05:00
FTL.TXT Replace 'www.freetype.org' with 'freetype.org'. 2025-06-03 10:35:16 +02:00
GPLv2.TXT Update license documentation. 2011-06-18 08:06:57 +02:00
INSTALL Update all copyright notices. 2024-01-27 11:11:22 -05:00
INSTALL.ANY Update all copyright notices. 2024-01-27 11:11:22 -05:00
INSTALL.CROSS Update all copyright notices. 2024-01-27 11:11:22 -05:00
INSTALL.GNU Update all copyright notices. 2024-01-27 11:11:22 -05:00
INSTALL.MAC Minor documentation updates. 2017-01-13 10:33:09 +01:00
INSTALL.UNIX Update all copyright notices. 2024-01-27 11:11:22 -05:00
INSTALL.VMS Update all copyright notices. 2024-01-27 11:11:22 -05:00
MAKEPP Fix links (mostly http -> https). 2018-12-25 22:44:05 +01:00
PROBLEMS * docs/PROBLEMS: Mention rendering differences on different 2011-02-24 20:01:00 +01:00
raster.txt Update all copyright notices. 2024-01-27 11:11:22 -05:00
README * Version 2.13.1 released. 2023-06-24 08:11:05 +02:00
release Update all copyright notices. 2024-01-27 11:11:22 -05:00
TODO Update all copyright notices. 2024-01-27 11:11:22 -05:00
VERSIONS.TXT * Version 2.13.3 released. 2024-08-12 12:50:14 +02:00

After saying `make refdoc' or `make refdoc-venv' the `reference/' directory
contains the FreeType API reference.  You need Python >= 3.5 and pip to make
this target.

There are two ways to generate the documentation:

1. Using `make refdoc':

    - Ensure `python' and `pip' are available.
    - Install pip package `docwriter' with `pip install --user docwriter'.
    - Make target with `make refdoc'.
    - This target can be run offline once required packages are installed.

2. Using `make refdoc-venv' (requires internet access):

    - Ensure `python', `pip' and Python package `virtualenv' are available.
    - Make target with `make refdoc-venv'.
    - This may or may not require internet access every time depending on
    pip and system caching.

Some troubleshooting tips:

* Regularly run `pip install --upgrade docwriter' to check for updates which
may include bug fixes.

* `Docwriter' does not support Python 2.  Ensure that Python >= 3.5 is
installed and available as `python3'/`python'.

* Ensure that `docwriter' is installed in the same Python target that
`make refdoc' uses (python3/python).

* If none of this works, send a mail to `freetype-devel@nongnu.org' or file
an issue at `https://github.com/freetype/docwriter/issues'.