)]}'
{
  "commit": "f93a897afedf4a634c74d3d2871519e675ee0d83",
  "tree": "69754fffe49c3ee52aad005200ffc8c38a414c3e",
  "parents": [
    "06c1a25e63b70a1a9e0f6edc18af1e9361a1c52a"
  ],
  "author": {
    "name": "Moazin Khatti",
    "email": "moazinkhatri@gmail.com",
    "time": "Sat Dec 25 19:20:44 2021 -0800"
  },
  "committer": {
    "name": "Werner Lemberg",
    "email": "wl@gnu.org",
    "time": "Thu Jan 20 16:45:18 2022 +0000"
  },
  "message": "Add code to load OT-SVG glyph documents.\n\n* include/freetype/config/ftheader.h (FT_OTSVG_H): New macro.\n* include/freetype/freetype.h (FT_FACE_FLAG_SVG, FT_HAS_SVG): New macros.\n(FT_LOAD_SVG_ONLY): New internal macro.\n* include/freetype/ftimage.h (FT_Glyph_Format): New enumeration value\n`FT_GLYPH_FORMAT_SVG`.\n* include/freetype/internal/ftobjs.h (FT_GLYPH_OWN_GZIP_SVG): New macro.\n* include/freetype/internal/fttrace.h: Add `ttsvg` for `ttsvg.c`.\n* include/freetype/internal/sfnt.h(load_svg, free_svg, load_svg_doc): New\nfunctions.\n* include/freetype/internal/tttypes.h (TT_FaceRec): Add `svg` for\nthe SVG table.\n* include/freetype/otsvg.h (FT_SVG_DocumentRec): New structure to hold the\nSVG document and other necessary information of an OT-SVG glyph in a glyph\nslot.\n* include/freetype/tttags.h (TTAG_SVG): New macro.\n\n* src/base/ftobjs.c: Include `otsvg.h`.\n(ft_glyphslot_init): Allocate `FT_SVG_DocumentRec` in `slot-\u003eother`\nif the SVG table exists.\n(ft_glyphslot_clear): Free it upon clean-up if it is a GZIP compressed\nglyph.\n(ft_glyphslot_done): Free the document data if it is a GZIP compressed\nglyph.\n(FT_Load_Glyph): Don\u0027t auto-hint SVG documents.\n\n* src/cache/ftcbasic.c (ftc_basic_family_load_glyph): Add support for\nFT_GLYPH_FORMAT_SVG.\n\n* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttsvg.c`.\n* src/sfnt/sfdriver.c: Include `ttsvg.h`.\n(sfnt_interface): Add `tt_face_load_svg`, `tt_face_free_svg` and\n`tt_face_load_svg_doc`.\n* src/sfnt/sfnt.c: Include `ttsvg.c`.\n* src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Add code to load and\nfree data of the the SVG table.\n* src/sfnt/ttsvg.c: New file, implementing `tt_face_load_svg`,\n`tt_face_free_svg` and `tt_face_load_svg_doc`.\n* src/sfnt/ttsvg.h: Declarations of the SVG functions in\n`ttsvg.c`.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f3ba393961f72a6cb28816a6edde3c59d12d6d15",
      "old_mode": 33188,
      "old_path": "include/freetype/config/ftheader.h",
      "new_id": "a8c6833df779ba1fba0c393904c5d3945a33de19",
      "new_mode": 33188,
      "new_path": "include/freetype/config/ftheader.h"
    },
    {
      "type": "modify",
      "old_id": "1018636596d79726569562cacbca19d2abea6319",
      "old_mode": 33188,
      "old_path": "include/freetype/freetype.h",
      "new_id": "69beb7c7bc81fb2cdad36ad5fbe31e1c6aad29b5",
      "new_mode": 33188,
      "new_path": "include/freetype/freetype.h"
    },
    {
      "type": "modify",
      "old_id": "1e62abed99d1e3e2c9c3d018d5deb01b1b83a2ab",
      "old_mode": 33188,
      "old_path": "include/freetype/ftglyph.h",
      "new_id": "c934fd55cbe8b4082899dc28d3b980b1e01df5b4",
      "new_mode": 33188,
      "new_path": "include/freetype/ftglyph.h"
    },
    {
      "type": "modify",
      "old_id": "af5855b6d164d6b18d81e5101005fdee2f00ca1c",
      "old_mode": 33188,
      "old_path": "include/freetype/ftimage.h",
      "new_id": "582b2c0f78b778231ee518caf85476880b03d320",
      "new_mode": 33188,
      "new_path": "include/freetype/ftimage.h"
    },
    {
      "type": "modify",
      "old_id": "1e86fc2e3c63d7a12f22b68cc8ef577db20cf37e",
      "old_mode": 33188,
      "old_path": "include/freetype/internal/ftobjs.h",
      "new_id": "1c779ceaeb26e6b4b928879e9b697220bc395ae0",
      "new_mode": 33188,
      "new_path": "include/freetype/internal/ftobjs.h"
    },
    {
      "type": "modify",
      "old_id": "e2c214ca0e8bb8d0ceda592bc37c497598e557ad",
      "old_mode": 33188,
      "old_path": "include/freetype/internal/fttrace.h",
      "new_id": "4251014344e3d91d0aea544f10ca301596f550db",
      "new_mode": 33188,
      "new_path": "include/freetype/internal/fttrace.h"
    },
    {
      "type": "modify",
      "old_id": "d985a99421906ce5fb23d4bd58940a8bfd451e68",
      "old_mode": 33188,
      "old_path": "include/freetype/internal/sfnt.h",
      "new_id": "c67b47e86060ab812c92ab8022ee5e17e8fcf676",
      "new_mode": 33188,
      "new_path": "include/freetype/internal/sfnt.h"
    },
    {
      "type": "modify",
      "old_id": "a1ff0532f19e0310c571950d49580790c41a73e7",
      "old_mode": 33188,
      "old_path": "include/freetype/internal/tttypes.h",
      "new_id": "df719387b5807374961bd7361ca951325deeff9c",
      "new_mode": 33188,
      "new_path": "include/freetype/internal/tttypes.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b8ff84f7b84744382ba0c8f116c1985e5e901e79",
      "new_mode": 33188,
      "new_path": "include/freetype/otsvg.h"
    },
    {
      "type": "modify",
      "old_id": "290bd71d7cb503ddd2e16db292a392468bb93b09",
      "old_mode": 33188,
      "old_path": "include/freetype/tttags.h",
      "new_id": "8b807641b8ba9e23be6f26754c99e6db72c2661b",
      "new_mode": 33188,
      "new_path": "include/freetype/tttags.h"
    },
    {
      "type": "modify",
      "old_id": "4f5e7d43945d7f9f1d044019f4675028bbc92a4d",
      "old_mode": 33188,
      "old_path": "src/base/ftobjs.c",
      "new_id": "391f46c7e75da003f736c66a1a71ea08de41c6f2",
      "new_mode": 33188,
      "new_path": "src/base/ftobjs.c"
    },
    {
      "type": "modify",
      "old_id": "4aa3c6a07b113b0972d918f860f13a676665e091",
      "old_mode": 33188,
      "old_path": "src/cache/ftcbasic.c",
      "new_id": "635b17d0742e71926c29c10308cb618a07a8d273",
      "new_mode": 33188,
      "new_path": "src/cache/ftcbasic.c"
    },
    {
      "type": "modify",
      "old_id": "6aca3781d4932f54ad4d81754b3b76cd6d456ef4",
      "old_mode": 33188,
      "old_path": "src/sfnt/rules.mk",
      "new_id": "ac4b57122620ce78976f8ad448be24665c29fc18",
      "new_mode": 33188,
      "new_path": "src/sfnt/rules.mk"
    },
    {
      "type": "modify",
      "old_id": "a1f761980a7f7951e68958758e9e9a07b618882b",
      "old_mode": 33188,
      "old_path": "src/sfnt/sfdriver.c",
      "new_id": "9115b6d3c7c554362c1c3eeca009ae06de037071",
      "new_mode": 33188,
      "new_path": "src/sfnt/sfdriver.c"
    },
    {
      "type": "modify",
      "old_id": "d4378667c635e53c5c65eda95106e3ccae206c64",
      "old_mode": 33188,
      "old_path": "src/sfnt/sfnt.c",
      "new_id": "9b3ceaedc08117217b4b73fe2008e8cf160fb259",
      "new_mode": 33188,
      "new_path": "src/sfnt/sfnt.c"
    },
    {
      "type": "modify",
      "old_id": "228364223f5250d3dc1d7d43b505f62a21c6b634",
      "old_mode": 33188,
      "old_path": "src/sfnt/sfobjs.c",
      "new_id": "f9d4d3858f2afd89399efe9323930a8ebb84c4e1",
      "new_mode": 33188,
      "new_path": "src/sfnt/sfobjs.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a4c10b98c15774b46bb106cb366467fee6180f87",
      "new_mode": 33188,
      "new_path": "src/sfnt/ttsvg.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7c234fd52474cc7934541139cbb69a03bd33e8a1",
      "new_mode": 33188,
      "new_path": "src/sfnt/ttsvg.h"
    }
  ]
}
