)]}'
{
  "commit": "7dfadb98db46d2d8a6d30d45eea8fd56dfe8c650",
  "tree": "0226edefa27ee8aee5a00a4661346efc2f9b0498",
  "parents": [
    "554fa4412c5e471c017b690de3b5ea775866f8aa"
  ],
  "author": {
    "name": "Tom Sepez",
    "email": "tsepez@google.com",
    "time": "Tue Sep 22 15:43:26 2026 -0700"
  },
  "committer": {
    "name": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Sep 22 15:43:26 2026 -0700"
  },
  "message": "Add Fontations glyph rendering pipeline using Skrifa hinted outlines\n\nIntegrate Skrifa outline extraction and TrueType bytecode hinting\ninto CFX_Face::RenderGlyph(). When the Fontations backend is enabled,\nquery Skrifa for hinted TrueType outlines (or scaled outlines as\nfallback), convert the resulting path verbs and coordinates into an\nFT_Outline, and rasterize via FT_Render_Glyph(). Also implement\nCFX_Face::LoadGlyphPath() via Skrifa unscaled outlines.\n\nUpdate testing harnesses to support Fontations/Skrifa execution flags,\ncombine caller diff options with Fontations antialiasing tolerances,\nand add suppressions for known subpixel rendering discrepancies.\n\nTAG\u003dagy\nCONV\u003ddb6cb163-190b-47d4-bbdc-b519626ce208\n\nBug: 42271123\nChange-Id: I9934502347aa7b433ed32310d2ae811b09a3bb5e\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156170\nReviewed-by: Lei Zhang \u003cthestig@chromium.org\u003e\nCommit-Queue: Tom Sepez \u003ctsepez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5df12aa0b2e3ab418a535cf7eb2ee8ca3d1164e3",
      "old_mode": 33188,
      "old_path": "core/fxge/cfx_face.cpp",
      "new_id": "16bbb19b6a39af1fd8075eafb403615decf0719c",
      "new_mode": 33188,
      "new_path": "core/fxge/cfx_face.cpp"
    },
    {
      "type": "modify",
      "old_id": "d71999984f06f1f0b40b95e009770928df488a8a",
      "old_mode": 33188,
      "old_path": "core/fxge/skrifa/src/main.rs",
      "new_id": "be592fadb7995e1de8b63cacfb1cd45623da546d",
      "new_mode": 33188,
      "new_path": "core/fxge/skrifa/src/main.rs"
    },
    {
      "type": "modify",
      "old_id": "ddb00327edd1d1f50adc9111a4f33a988d30ccab",
      "old_mode": 33188,
      "old_path": "fpdfsdk/fpdf_view_embeddertest.cpp",
      "new_id": "f23d05e8aae1f8eb97ac47b426291260ca36dc10",
      "new_mode": 33188,
      "new_path": "fpdfsdk/fpdf_view_embeddertest.cpp"
    },
    {
      "type": "modify",
      "old_id": "9ffcbd0c5c364d40396d3e5a9f142214404ddba6",
      "old_mode": 33188,
      "old_path": "testing/SUPPRESSIONS",
      "new_id": "abda6465181877d120fad8530e6c36b886b939f9",
      "new_mode": 33188,
      "new_path": "testing/SUPPRESSIONS"
    },
    {
      "type": "modify",
      "old_id": "f2c76e13fc90d748fa5ec6be2998095a2a20d554",
      "old_mode": 33188,
      "old_path": "testing/embedder_test.cpp",
      "new_id": "50186477d56908b50bbdee5d70260378a05adb3c",
      "new_mode": 33188,
      "new_path": "testing/embedder_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "a83ebdaac781d7e2b5e3564bd7ae928d6cfb6d07",
      "old_mode": 33188,
      "old_path": "testing/embedder_test_environment.h",
      "new_id": "3ac640422e5ed8d546236168086a983d102a1e1f",
      "new_mode": 33188,
      "new_path": "testing/embedder_test_environment.h"
    },
    {
      "type": "modify",
      "old_id": "6be6b8cbbd916c675209741e100b2edc5ac090be",
      "old_mode": 33188,
      "old_path": "testing/utils/pixel_diff_util.h",
      "new_id": "c15e6366ce55e28e64d553d89a52d77fb83667a0",
      "new_mode": 33188,
      "new_path": "testing/utils/pixel_diff_util.h"
    },
    {
      "type": "modify",
      "old_id": "4add08e456f33eb460c192e3a33c9a09377f0c24",
      "old_mode": 33188,
      "old_path": "xfa/fde/cfde_textout_unittest.cpp",
      "new_id": "947f2178a9fb4f57fe30ac4ca88388c4a88ba127",
      "new_mode": 33188,
      "new_path": "xfa/fde/cfde_textout_unittest.cpp"
    }
  ]
}
