freetype/docs
David Saltzman 8f286c86ef Add support for kerning from 'GPOS' tables.
This commit adds support for kerning from 'GPOS' tables, while maintaining
support for basic 'kern' tables.  `FT_HAS_KERNING` will be true for a font
with either available and `FT_Get_Kerning` will still use the basic 'kern'
table data if avilable, otherwise check the GPOS 'kern' feature.

This feature is disabled by default; it can be enabled with the
`TT_CONFIG_OPTION_GPOS_KERNING` flag.

Only basic kerning (pair positioning with just an x advance) is supported
from the GPOS layout features; support for that was added to make the
existing `FT_Get_Kerning` API more consistently functional.  FreeType does
not intend to extend itself to further GPOS functionality though; a
higher-level library like HarfBuzz can be used instead for that.

* include/freetype/config/ftoption.h, include/devel/ftoption.h
(TT_CONFIG_OPTION_GPOS_KERNING): New configuration option.

* include/freetype/internal/fttrace.h: Add `ttgpos` trace handler.

* include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_gpos` and
`get_gpos_kerning` fields.
(FT_DEFINE_SFNT_INTERFACE): Updated.

* include/freetype/internal/tttypes.h: Include `fttypes.h`.
(TT_FaceRec) [TT_CONFIG_OPTION_GPOS_KERNING]: Add `gpos_table` and
`gpos_kerning_available` fields.

* src/sfnt/ttgpos.c, src/sfnt/ttgpos.h: New files.

* src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`.
(sfnt_interface): Updated.

* src/sfnt/sfnt.c: Include `ttgpos.c`.

* src/sfnt/sfobjs.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`.
(sfnt_load_face) [TT_CONFIG_OPTION_GPOS_KERNING]: Load and free GPOS kerning
data; check GPOS kerning availability.

* src/truetype/ttdriver.c (tt_get_kerning): Use GPOS kerning if there's no
'kern' table.
2024-01-27 10:55:04 +01:00
..
markdown [docs] Correct favicon. 2022-05-31 22:40:55 -04:00
oldlogs * docs/oldlogs/ChangeLog.210: Typos. 2023-01-18 18:31:27 +00:00
.gitignore [docs] (1/2) Move static web assets (#56745). 2019-12-21 19:13:37 +01:00
CHANGES Add support for kerning from 'GPOS' tables. 2024-01-27 10:55:04 +01:00
CMAKE * docs/CMAKE: New dummy file. 2013-11-10 06:26:52 +01:00
CUSTOMIZE Update all copyright notices. 2023-01-17 09:18:25 +01:00
DEBUG docs/DEBUG: Formatting. 2023-05-23 12:54:48 +02:00
DOCGUIDE Update all copyright notices. 2023-01-17 09:18:25 +01:00
FTL.TXT Update or fix links to use the https protocol instead of http. 2017-12-04 20:43:30 +01:00
GPLv2.TXT Update license documentation. 2011-06-18 08:06:57 +02:00
INSTALL [msbuild] Streamline the process. 2023-12-06 23:33:32 -05:00
INSTALL.ANY * docs/*: Typos. 2023-11-25 09:00:11 -05:00
INSTALL.CROSS Update all copyright notices. 2023-01-17 09:18:25 +01:00
INSTALL.GNU Update all copyright notices. 2023-01-17 09:18:25 +01:00
INSTALL.MAC Minor documentation updates. 2017-01-13 10:33:09 +01:00
INSTALL.UNIX Update all copyright notices. 2023-01-17 09:18:25 +01:00
INSTALL.VMS Update VMS installation support. 2023-03-10 16:56:15 +01: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
README * Version 2.13.1 released. 2023-06-24 08:11:05 +02:00
TODO Update all copyright notices. 2023-01-17 09:18:25 +01:00
VERSIONS.TXT * Version 2.13.2 released. 2023-08-25 20:12:52 +02:00
formats.txt * Version 2.13.1 released. 2023-06-24 08:11:05 +02:00
freetype-config.1 * Version 2.13.2 released. 2023-08-25 20:12:52 +02:00
freetype-web.txt * docs/*: Typos. 2023-11-25 09:00:11 -05:00
raster.txt Update all copyright notices. 2023-01-17 09:18:25 +01:00
release docs/release: Minor fixes. 2023-08-25 21:36:39 +02:00

README

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'.