)]}'
{
  "commit": "4e4d7a14a4d9d484feb4a4770a892cd964cfd968",
  "tree": "b880fc69ad2e11423b4ea7249447c687b874a801",
  "parents": [
    "c374e352f78b5391b79d54a55c82539af49befd9"
  ],
  "author": {
    "name": "Ben Wagner",
    "email": "bungeman@chromium.org",
    "time": "Wed Jun 04 07:36:18 2025 -0700"
  },
  "committer": {
    "name": "Pdfium LUCI CQ",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jun 04 07:36:18 2025 -0700"
  },
  "message": "Current font need not contain part of ActualText\n\nWhen handling marked content there is currently a check that if the\ncurrent font does not have a mapping for any of the code points in an\nActualText then the ActualText is ignored. This check has been in the\ncode since the initial code drop. This undermines part of the purpose of\nActualText, such as providing the original code points even if there was\nno font which represented them.\n\nIn addition, it is not clear why this behavior would be wanted. One\npossibility is an attempt to reduce phishing where the copied (or\naccessible) content is intentionally different from was is drawn on the\npage (especially with respect to Unicode confusables). However, this is\ngenerally malicious content which could easily work around such a check\nby simply adding mappings in its fonts. Any benefit of ignoring such\nActualText has the downside of incorrectly handling real and intentional\nuses like when multiple code points map to a single glyph in a font.\n\nRemove this check and add a test which replaces English words with\nChinese replacements. This test fails before this change as the default\ntest font does not contain both sets of code points.\n\nBug: 420508260\nChange-Id: I4d82b603e5bda8ed13614e6ba3a4ce0c8f8f0d62\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/132710\nReviewed-by: Lei Zhang \u003cthestig@chromium.org\u003e\nReviewed-by: Ben Wagner \u003cbungeman@google.com\u003e\nCommit-Queue: Ben Wagner \u003cbungeman@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2385df38dba44d5dee141240b34881e826c7a4d3",
      "old_mode": 33188,
      "old_path": "core/fpdftext/cpdf_textpage.cpp",
      "new_id": "cbb2b40debe61928cc730380e8dfe7b0ba762f18",
      "new_mode": 33188,
      "new_path": "core/fpdftext/cpdf_textpage.cpp"
    },
    {
      "type": "modify",
      "old_id": "ac17ade58ee5455f98257dd129000b9dfb7fe25c",
      "old_mode": 33188,
      "old_path": "fpdfsdk/fpdf_text_embeddertest.cpp",
      "new_id": "f863e82265b285287fde2ce1c8a5d487265fffd8",
      "new_mode": 33188,
      "new_path": "fpdfsdk/fpdf_text_embeddertest.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "83e77e9831ba8ab87a2d836b805d941547b4a600",
      "new_mode": 33188,
      "new_path": "testing/resources/bug_420508260.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3c48a001e3952652a2fa3c8e3cbcf6acf9e03f29",
      "new_mode": 33188,
      "new_path": "testing/resources/bug_420508260.pdf"
    }
  ]
}
