Files
pdf/tests/edits/forensic_real/keystroke_report.json
T
2026-07-31 10:50:37 +05:30

625 lines
14 KiB
JSON

{
"u0000_coverage_failure": false,
"embedded_font_after_fix": {
"before_pdf_baseFont": "BCDEEE+Arial-BoldMT",
"before_fontfile2_sha": "cc80da80a119a52c",
"note": "After U+0000 fix, edit-entry emit reuses original embedded subset (no system Arial)"
},
"before": {
"text": "Professional Experience",
"adv": [
8.003997802734375,
4.740001678466797,
7.247997283935547,
3.996002197265625,
6.7440032958984375,
6.743995666503906,
6.743995666503906,
3.2519989013671875,
7.2480010986328125,
7.2480010986328125,
6.7440032958984375,
3.2519989013671875,
3.2519989013671875,
8.003997802734375,
6.73199462890625,
7.2480010986328125,
6.7440032958984375,
4.739990234375,
3.2519989013671875,
6.7440032958984375,
7.24798583984375,
6.7440185546875,
5.843994140625
],
"x0": 50.525001525878906,
"runPerChar": 1,
"emitMode": "per-char",
"emits": [
{
"text": "P",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 50.525,
"runPerChar": 1
},
{
"text": "r",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 58.529,
"runPerChar": 1
},
{
"text": "o",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 63.269,
"runPerChar": 1
},
{
"text": "f",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 70.517,
"runPerChar": 1
},
{
"text": "e",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 74.513,
"runPerChar": 1
},
{
"text": "s",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 81.257,
"runPerChar": 1
},
{
"text": "s",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 88.001,
"runPerChar": 1
},
{
"text": "i",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 94.745,
"runPerChar": 1
},
{
"text": "o",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 97.997,
"runPerChar": 1
},
{
"text": "n",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 105.245,
"runPerChar": 1
},
{
"text": "a",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 112.493,
"runPerChar": 1
},
{
"text": "l",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 119.237,
"runPerChar": 1
},
{
"text": "E",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 125.741,
"runPerChar": 1
},
{
"text": "x",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 133.745,
"runPerChar": 1
},
{
"text": "p",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 140.477,
"runPerChar": 1
},
{
"text": "e",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 147.725,
"runPerChar": 1
},
{
"text": "r",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 154.469,
"runPerChar": 1
},
{
"text": "i",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 159.209,
"runPerChar": 1
},
{
"text": "e",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 162.461,
"runPerChar": 1
},
{
"text": "n",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 169.205,
"runPerChar": 1
},
{
"text": "c",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 176.453,
"runPerChar": 1
},
{
"text": "e",
"fontPtr": "0x1741fa4b9e0",
"measureFacePtr": "0x1741de6e630",
"atX": 183.197,
"runPerChar": 1
}
]
},
"after": {
"text": "Professional Experiencex",
"adv": [
8.003997802734375,
4.740001678466797,
7.247997283935547,
3.996002197265625,
6.7440032958984375,
6.743995666503906,
6.743995666503906,
3.2519989013671875,
7.2480010986328125,
7.2480010986328125,
6.7440032958984375,
3.2519989013671875,
3.2519989013671875,
8.003997802734375,
6.73199462890625,
7.2480010986328125,
6.7440032958984375,
4.739990234375,
3.2519989013671875,
6.7440032958984375,
7.24798583984375,
6.7440185546875,
5.843994140625,
6.673875
],
"x0": 50.525001525878906,
"runPerChar": 0,
"emitMode": "whole-word",
"emits": [
{
"text": "P",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 50.525,
"runPerChar": 1
},
{
"text": "r",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 58.529,
"runPerChar": 1
},
{
"text": "o",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 63.269,
"runPerChar": 1
},
{
"text": "f",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 70.517,
"runPerChar": 1
},
{
"text": "e",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 74.513,
"runPerChar": 1
},
{
"text": "s",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 81.257,
"runPerChar": 1
},
{
"text": "s",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 88.001,
"runPerChar": 1
},
{
"text": "i",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 94.745,
"runPerChar": 1
},
{
"text": "o",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 97.997,
"runPerChar": 1
},
{
"text": "n",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 105.245,
"runPerChar": 1
},
{
"text": "a",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 112.493,
"runPerChar": 1
},
{
"text": "l",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 119.237,
"runPerChar": 1
},
{
"text": "E",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 125.741,
"runPerChar": 1
},
{
"text": "x",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 133.745,
"runPerChar": 1
},
{
"text": "p",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 140.477,
"runPerChar": 1
},
{
"text": "e",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 147.725,
"runPerChar": 1
},
{
"text": "r",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 154.469,
"runPerChar": 1
},
{
"text": "i",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 159.209,
"runPerChar": 1
},
{
"text": "e",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 162.461,
"runPerChar": 1
},
{
"text": "n",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 169.205,
"runPerChar": 1
},
{
"text": "c",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 176.453,
"runPerChar": 1
},
{
"text": "e",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 183.197,
"runPerChar": 1
},
{
"text": "x",
"fontPtr": "0x1741fb1cb40",
"measureFacePtr": "0x1741de6c050",
"atX": 189.041,
"runPerChar": 1
}
],
"note": "advLen=0 -> recomputed HarfBuzz advances; runPerChar=0"
},
"first_diff": null,
"glyphs": [
{
"i": 0,
"char": "P",
"xB": 50.525001525878906,
"xA": 50.525001525878906,
"dx": 0.0,
"advB": 8.003997802734375,
"advA": 8.003997802734375,
"dAdv": 0.0
},
{
"i": 1,
"char": "r",
"xB": 58.52899932861328,
"xA": 58.52899932861328,
"dx": 0.0,
"advB": 4.740001678466797,
"advA": 4.740001678466797,
"dAdv": 0.0
},
{
"i": 2,
"char": "o",
"xB": 63.26900100708008,
"xA": 63.26900100708008,
"dx": 0.0,
"advB": 7.247997283935547,
"advA": 7.247997283935547,
"dAdv": 0.0
},
{
"i": 3,
"char": "f",
"xB": 70.51699829101562,
"xA": 70.51699829101562,
"dx": 0.0,
"advB": 3.996002197265625,
"advA": 3.996002197265625,
"dAdv": 0.0
},
{
"i": 4,
"char": "e",
"xB": 74.51300048828125,
"xA": 74.51300048828125,
"dx": 0.0,
"advB": 6.7440032958984375,
"advA": 6.7440032958984375,
"dAdv": 0.0
},
{
"i": 5,
"char": "s",
"xB": 81.25700378417969,
"xA": 81.25700378417969,
"dx": 0.0,
"advB": 6.743995666503906,
"advA": 6.743995666503906,
"dAdv": 0.0
},
{
"i": 6,
"char": "s",
"xB": 88.0009994506836,
"xA": 88.0009994506836,
"dx": 0.0,
"advB": 6.743995666503906,
"advA": 6.743995666503906,
"dAdv": 0.0
},
{
"i": 7,
"char": "i",
"xB": 94.7449951171875,
"xA": 94.7449951171875,
"dx": 0.0,
"advB": 3.2519989013671875,
"advA": 3.2519989013671875,
"dAdv": 0.0
},
{
"i": 8,
"char": "o",
"xB": 97.99699401855469,
"xA": 97.99699401855469,
"dx": 0.0,
"advB": 7.2480010986328125,
"advA": 7.2480010986328125,
"dAdv": 0.0
},
{
"i": 9,
"char": "n",
"xB": 105.2449951171875,
"xA": 105.2449951171875,
"dx": 0.0,
"advB": 7.2480010986328125,
"advA": 7.2480010986328125,
"dAdv": 0.0
},
{
"i": 10,
"char": "a",
"xB": 112.49299621582031,
"xA": 112.49299621582031,
"dx": 0.0,
"advB": 6.7440032958984375,
"advA": 6.7440032958984375,
"dAdv": 0.0
},
{
"i": 11,
"char": "l",
"xB": 119.23699951171875,
"xA": 119.23699951171875,
"dx": 0.0,
"advB": 3.2519989013671875,
"advA": 3.2519989013671875,
"dAdv": 0.0
},
{
"i": 12,
"char": " ",
"xB": 122.48899841308594,
"xA": 122.48899841308594,
"dx": 0.0,
"advB": 3.2519989013671875,
"advA": 3.2519989013671875,
"dAdv": 0.0
},
{
"i": 13,
"char": "E",
"xB": 125.74099731445312,
"xA": 125.74099731445312,
"dx": 0.0,
"advB": 8.003997802734375,
"advA": 8.003997802734375,
"dAdv": 0.0
},
{
"i": 14,
"char": "x",
"xB": 133.7449951171875,
"xA": 133.7449951171875,
"dx": 0.0,
"advB": 6.73199462890625,
"advA": 6.73199462890625,
"dAdv": 0.0
},
{
"i": 15,
"char": "p",
"xB": 140.47698974609375,
"xA": 140.47698974609375,
"dx": 0.0,
"advB": 7.2480010986328125,
"advA": 7.2480010986328125,
"dAdv": 0.0
},
{
"i": 16,
"char": "e",
"xB": 147.72499084472656,
"xA": 147.72499084472656,
"dx": 0.0,
"advB": 6.7440032958984375,
"advA": 6.7440032958984375,
"dAdv": 0.0
},
{
"i": 17,
"char": "r",
"xB": 154.468994140625,
"xA": 154.468994140625,
"dx": 0.0,
"advB": 4.739990234375,
"advA": 4.739990234375,
"dAdv": 0.0
},
{
"i": 18,
"char": "i",
"xB": 159.208984375,
"xA": 159.208984375,
"dx": 0.0,
"advB": 3.2519989013671875,
"advA": 3.2519989013671875,
"dAdv": 0.0
},
{
"i": 19,
"char": "e",
"xB": 162.4609832763672,
"xA": 162.4609832763672,
"dx": 0.0,
"advB": 6.7440032958984375,
"advA": 6.7440032958984375,
"dAdv": 0.0
},
{
"i": 20,
"char": "n",
"xB": 169.20498657226562,
"xA": 169.20498657226562,
"dx": 0.0,
"advB": 7.24798583984375,
"advA": 7.24798583984375,
"dAdv": 0.0
},
{
"i": 21,
"char": "c",
"xB": 176.45297241210938,
"xA": 176.45297241210938,
"dx": 0.0,
"advB": 6.7440185546875,
"advA": 6.7440185546875,
"dAdv": 0.0
},
{
"i": 22,
"char": "e",
"xB": 183.19699096679688,
"xA": 183.19699096679688,
"dx": 0.0,
"advB": 5.843994140625,
"advA": 5.843994140625,
"dAdv": 0.0
}
],
"interpretation": "First keystroke drops client advances (length mismatch) and origLines. Engine recomputes natural HarfBuzz advances (no original TJ kerning). First mutation is advance of glyph index 1 ('r'): client/kerned ~4.740 -> natural ~4.670. Positions of all subsequent glyphs diverge from that point."
}