Add code to load OT-SVG glyph documents

System Internals / FreeType - Moazin Khatti [gmail.com] - 20 January 2022 16:45 UTC

- include/freetype/config/ftheader.h (FT_OTSVG_H): New macro.
- include/freetype/freetype.h (FT_FACE_FLAG_SVG, FT_HAS_SVG): New macros. (FT_LOAD_SVG_ONLY): New internal macro.
- include/freetype/ftimage.h (FT_Glyph_Format): New enumeration value `FT_GLYPH_FORMAT_SVG`.
- include/freetype/internal/ftobjs.h (FT_GLYPH_OWN_GZIP_SVG): New macro.
- include/freetype/internal/fttrace.h: Add `ttsvg` for `ttsvg.c`.
- include/freetype/internal/sfnt.h(load_svg, free_svg, load_svg_doc): New functions.
- include/freetype/internal/tttypes.h (TT_FaceRec): Add `svg` for the SVG table.
- include/freetype/otsvg.h (FT_SVG_DocumentRec): New structure to hold the SVG document and other necessary information of an OT-SVG glyph in a glyph slot.
- include/freetype/tttags.h (TTAG_SVG): New macro.

- src/base/ftobjs.c: Include `otsvg.h`. (ft_glyphslot_init): Allocate `FT_SVG_DocumentRec` in `slot->other` if the SVG table exists. (ft_glyphslot_clear): Free it upon clean-up if it is a GZIP compressed glyph. (ft_glyphslot_done): Free the document data if it is a GZIP compressed glyph. (FT_Load_Glyph): Don't auto-hint SVG documents.

- src/cache/ftcbasic.c (ftc_basic_family_load_glyph): Add support for FT_GLYPH_FORMAT_SVG.

- src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttsvg.c`.
- src/sfnt/sfdriver.c: Include `ttsvg.h`. (sfnt_interface): Add `tt_face_load_svg`, `tt_face_free_svg` and `tt_face_load_svg_doc`.
- src/sfnt/sfnt.c: Include `ttsvg.c`.
- src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Add code to load and free data of the the SVG table.
- src/sfnt/ttsvg.c: New file, implementing `tt_face_load_svg`, `tt_face_free_svg` and `tt_face_load_svg_doc`.
- src/sfnt/ttsvg.h: Declarations of the SVG functions in `ttsvg.c`.

f93a897af Add code to load OT-SVG glyph documents.
include/freetype/config/ftheader.h | 12 ++
include/freetype/freetype.h | 43 +++-
include/freetype/ftglyph.h | 2 +-
include/freetype/ftimage.h | 7 +-
include/freetype/internal/ftobjs.h | 3 +-
include/freetype/internal/fttrace.h | 1 +
include/freetype/internal/sfnt.h | 42 +++-
include/freetype/internal/tttypes.h | 3 +
include/freetype/otsvg.h | 114 +++++++++++
include/freetype/tttags.h | 1 +
src/base/ftobjs.c | 74 ++++++-
src/cache/ftcbasic.c | 3 +-
src/sfnt/rules.mk | 1 +
src/sfnt/sfdriver.c | 19 +-
src/sfnt/sfnt.c | 1 +
src/sfnt/sfobjs.c | 10 +
src/sfnt/ttsvg.c | 386 ++++++++++++++++++++++++++++++++++++
src/sfnt/ttsvg.h | 43 ++++
18 files changed, 741 insertions(+), 24 deletions(-)

Upstream: git.savannah.gnu.org


  • Share