)]}'
{
  "commit": "f6bcedab83b42b2c6a8a0d1d874011506fe11da3",
  "tree": "7bdeb08a19fc3c4635378e0ec78713488d8d0c91",
  "parents": [
    "7990062241aea35c4e9e066800d6a764e6e81dfa"
  ],
  "author": {
    "name": "Behdad Esfahbod",
    "email": "behdad@behdad.org",
    "time": "Thu Aug 20 05:17:24 2026 -0600"
  },
  "committer": {
    "name": "Behdad Esfahbod",
    "email": "behdad@behdad.org",
    "time": "Thu Aug 20 05:21:02 2026 -0600"
  },
  "message": "[subset/cff] Record byte segments instead of tokens when not analyzing hints\n\nThe CFF subroutine subsetter recorded one parsed_cs_op_t entry per\ncharstring token (every operand and operator), then merged adjacent\nentries back together in a separate compact() pass.  When hints are\nnot being analyzed (not dropping hints and not populating the subset\naccelerator), per-op granularity is never needed: the only structure\nthat matters is the subroutine-call sites, whose numbers are\nre-encoded with new biases.\n\nIn that mode, only note token boundaries (two integer stores) and\nflush verbatim byte segments at call sites and at the end of each\nstring.  CFF1\u0027s return/endchar bytes flush through add_op; CFF2 has\nno such ops in the stream, so flush explicitly where the interpreter\nsynthesizes them at end-of-string.  This eliminates the compact()\npass, shrinks the parsed representation by an order of magnitude,\nand add_op inlines into the interpreter loop again.\n\nSpeeds up CFF subsetting: hb-subset on SourceHanSans (10K glyphs,\nall unicodes) improves by ~9.5% total CPU (interleaved A/B against\nmain with perf stat).  Layout-heavy and glyf fonts unaffected.\n\nTested with meson test (all 267 tests pass, including CFF1/CFF2\ngolden-file subset comparisons).\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7abeafa1d3a589e8eb6953064638766b16c941b5",
      "old_mode": 33188,
      "old_path": "src/hb-subset-cff-common.hh",
      "new_id": "9f8883a0195fe77393279e1624fc368c42879dc5",
      "new_mode": 33188,
      "new_path": "src/hb-subset-cff-common.hh"
    },
    {
      "type": "modify",
      "old_id": "9e6055d7d9b74b79cdb6a3975740854cf393523a",
      "old_mode": 33188,
      "old_path": "src/hb-subset-cff2.cc",
      "new_id": "6fc62124acc288e1f7bcdc67a3ac8a9db7f3e8e3",
      "new_mode": 33188,
      "new_path": "src/hb-subset-cff2.cc"
    }
  ]
}
