[cff, truetype] Add VARC (Variable Composites) table support.

The Variable Composites ('VARC' table) technology allows font glyphs to
reuse variants of other glyph shapes as their components.  This is similar
to a feature that some font design tools already provide to designers, for
example, Glyphs calls this 'Smart Components'.  The 'VARC' table allows us
carrying that design all the into the font binary file.

This enables significant file size saving in CJK fonts, for example, up
to 90% savings for simple Hangul shapes.

The 'VARC' table is part of the ISO Open Font Format version 5, and is
implemented and enabled by default in HarfBuzz since 12.0.0 (Sep 2025) and
FontTools.

For test fonts, see

  https://github.com/notofonts/noto-cjk-varco/releases

* include/freetype/config/ftoption.h, devel/ftoption.h
  (TT_CONFIG_OPTION_VARC): New macro.
* include/freetype/tttags.h (TTAG_VARC): New macro.
* include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC11): New macro.
* include/freetype/internal/fttrace.h (ttvarc): New macro.

* include/freetype/internal/tttypes.h (TT_FaceRec) [TT_CONFIG_OPTION_VARC]:
  New fields `tt_varc`, `face_varc`, `varc`, `varc_context`, and
  `varc_loading_components`.

* src/base/ftobjs.c [TT_CONFIG_OPTION_VARC]: Include `svvarc.h`.
  (FT_Load_Glyph) [TT_CONFIG_OPTION_VARC]: Don't use auto-hinting for VARC
  glyphs.

* include/freetype/internal/services/svvarc.h, src/truetype/ttvarc.c,
  src/truetype/ttvarc.h: New files.

* src/truetype/rules.mk (TT_DRV_SRC): Add `ttvarc.c`.

* src/truetype/truetype.c: Include `ttvarc.c`.
* src/truetype/ttdriver.c [TT_CONFIG_OPTION_VARC]: Include `svvarc.h` and
  `ttvarc.h`.
  (tt_service_varc, tt_services) [TT_CONFIG_OPTION_VARC]: New structures.
* src/truetype/ttgload.c [TT_CONFIG_OPTION_VARC]: Include `ttvarc.h`.
  (TT_Load_Glyph) [TT_CONFIG_OPTION_VARC]: Handle VARC glyphs.

* src/cff/cffdrivr.c [TT_CONFIG_OPTION_VAR]: Include `svvarc.h`.
  (cff_varc_load, cff_varc_done, cff_varc_has_glyph, cff_varc_load_glyph,
  cff_service_varc) [TT_CONFIG_OPTION_VAR]: New wrapper functions and
  structure to provide the VARC service.
  (cff_services): Updated.
* src/cff/cffgload.c [TT_CONFIG_OPTION_VARC]: Include `svvarc.h`.
  (cff_slot_load) [TT_CONFIG_OPTION_VARC]: Handle VARC glyphs.

* src/sfnt/sfobjs.c [TT_CONFIG_OPTION_VARC]: Include `svvarc.h`.
  (sfnt_init_face) [TT_CONFIG_OPTION_VARC]: Load the VARC service.
  (sfnt_load_face) [TT_CONFIG_OPTION_VARC]: Try to load the 'VARC' table.
  (sfnt_done_face) [TT_CONFIG_OPTION_VARC}: Clean up VARC handling.
18 files changed