Closed Bug 1553889 Opened 5 years ago Closed 5 years ago

The width of text rendered using the -apple-system font has increased by ~3.4%

Categories

(Core :: Layout: Text and Fonts, defect, P2)

69 Branch
Desktop
macOS
defect

Tracking

()

VERIFIED FIXED
mozilla69
Tracking Status
firefox-esr60 --- unaffected
firefox67 --- unaffected
firefox68 + verified
firefox69 + verified

People

(Reporter: sime.vidas, Assigned: jfkthame)

References

(Regression, )

Details

(Keywords: fonts, regression, testcase)

Attachments

(1 file)

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0

Steps to reproduce:

  1. Use Firefox Nightly on macOS
  2. Open https://output.jsbin.com/gacugek/quiet
  3. Check the DevTools Console

Actual results:

The width of the paragraph is 478.3px.

Expected results:

The width of the paragraph should be smaller. It’s ~459px in Chrome and Safari, and 462.6px in Firefox stable.

For some reason, Firefox Nightly has started rendering the text differently (this started happening a 1-2 days ago), so that it’s now more spread out.

This change broke my site’s desktop layout a bit, which is why I’m reporting it.

Has STR: --- → yes
Component: Untriaged → Layout: Text and Fonts
Keywords: fonts, testcase
OS: Unspecified → macOS
Product: Firefox → Core
Hardware: Unspecified → Desktop

I can't think of something that would've intentionally changed this off-hand. I'm not on Mac but maybe you or Jonathan can take a look at what changed behavior here using mozregression?

Maybe bug 1509423?

Flags: needinfo?(jfkthame)

Yes, this is a result of bug 1509423. You can confirm this by going to about:config and toggling the setting gfx.font_rendering.coretext.enabled to true.

We should fix this before letting that ride the train to release.

[Tracking Requested - why for this release]:
This is a text-rendering regression on macOS; we should avoid shipping it to release users. (If we don't get a real fix landed in a timely way, we can flip the pref to revert to the old code path, as we haven't removed it from the tree.)

Status: UNCONFIRMED → NEW
Ever confirmed: true
Flags: needinfo?(jfkthame)
Priority: -- → P2
Regressed by: 1509423

I think what must be happening here is that harfbuzz is applying tracking from the AAT 'trak' table, and then we're also applying it separately in the thebes code; we need to disable that in our code when harfbuzz is handling it. I'll look into this properly soon.

Assignee: nobody → jfkthame

Ah, it's the opposite of comment 3, actually: harfbuzz doesn't automatically apply 'trak' adjustments for us, but we only do so in gfxMacFont if we're using CoreText shaping. So we need to rearrange gfxMacFont::ShapeText such that it'll apply the tracking in all cases, regardless of which shaper was used.

Blocks: 1554193

Once we've fixed the immediate regression here, we should actually move the 'trak' table support out of the Mac backend and make it part of the platform-independent gfxFont shaping path. Filed bug 1554193 for that.

Pushed by jkew@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/91d8ca122eda Apply the AAT 'trak' table to macOS fonts regardless of whether we shaped using CoreText or HarfBuzz. r=jrmuizel

Backed out changeset 91d8ca122eda (Bug 1553889) for bugs/513153-2a.html failures

Push with failure: https://treeherder.mozilla.org/#/jobs?repo=autoland&revision=91d8ca122edaf8e547b832f6e7f06e32cb13523a&selectedJob=248620317

Backout link: https://hg.mozilla.org/integration/autoland/rev/46eeb92b85f858a4ed49cc25a779faef723dc09f

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=248620317&repo=autoland&lineNumber=17276

20:55:16 INFO - REFTEST TEST-START | file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/513153-2a.html == file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/513153-2-ref.html
20:55:16 INFO - REFTEST TEST-LOAD | file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/513153-2a.html | 1400 / 2061 (67%)
20:55:16 INFO - ++DOMWINDOW == 56 (0x14c13c400) [pid = 1653] [serial = 3949] [outer = 0x12523b020]
20:55:16 INFO - REFTEST TEST-LOAD | file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/513153-2-ref.html | 1400 / 2061 (67%)
20:55:16 INFO - ++DOMWINDOW == 57 (0x14c137400) [pid = 1653] [serial = 3950] [outer = 0x12523b020]
20:55:16 INFO - REFTEST INFO | REFTEST fuzzy test (34, 138) <= (0, 0) <= (34, 138)
20:55:16 INFO - --DOMWINDOW == 56 (0x14bdc5400) [pid = 1653] [serial = 3937] [outer = 0x0] [url = data:text/html;charset=UTF-8,%3C%21%2D%2DCLEAR%2D%2D%3E]
20:55:16 INFO - --DOMWINDOW == 55 (0x14c109c00) [pid = 1653] [serial = 3938] [outer = 0x0] [url = file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/512410.html]
20:55:16 INFO - --DOMWINDOW == 54 (0x14c110400) [pid = 1653] [serial = 3939] [outer = 0x0] [url = file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/512410-ref.html]
20:55:16 INFO - --DOMWINDOW == 53 (0x14c139800) [pid = 1653] [serial = 3941] [outer = 0x0] [url = file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/512631-1.html]
20:55:16 INFO - --DOMWINDOW == 52 (0x14ab95400) [pid = 1653] [serial = 3936] [outer = 0x0] [url = file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/509155-1-ref.xhtml]
20:55:16 INFO - --DOMWINDOW == 51 (0x14bdc3800) [pid = 1653] [serial = 3935] [outer = 0x0] [url = file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/509155-1.xhtml]
20:55:16 INFO - --DOMWINDOW == 50 (0x14c136c00) [pid = 1653] [serial = 3940] [outer = 0x0] [url = data:text/html;charset=UTF-8,%3C%21%2D%2DCLEAR%2D%2D%3E]
20:55:16 INFO - REFTEST TEST-UNEXPECTED-PASS | file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/513153-2a.html == file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/513153-2-ref.html | image comparison, max difference: 0, number of differing pixels: 0
20:55:16 INFO - REFTEST IMAGE 1 (TEST): data:image/png;base64,iVBORw0KGgoAAAANSUh
20:55:16 INFO - REFTEST IMAGE 2 (REFERENCE): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAA
20:55:16 INFO - REFTEST TEST-END | file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/513153-2a.html == file:///Users/cltbld/tasks/task_1558989654/build/tests/reftest/tests/layout/reftests/bugs/513153-2-ref.html

Flags: needinfo?(jfkthame)
Pushed by jkew@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/a53e28d4e10e Apply the AAT 'trak' table to macOS fonts regardless of whether we shaped using CoreText or HarfBuzz. r=jrmuizel

Backed out changeset a53e28d4e10e (bug 1553889) for reftest failures at layout/reftests/forms/input/file/dynamic-max-width.html

Backout: https://hg.mozilla.org/integration/autoland/rev/b558ba472e668f18999200d08d07a0f2c2475cdb

Failure push: https://treeherder.mozilla.org/#/jobs?repo=autoland&selectedJob=248698235&revision=a53e28d4e10ec5bb5e2853290bfe34c5ce712e9d

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=248698235&repo=autoland&lineNumber=5269

11:49:24 INFO - REFTEST TEST-START | file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width.html == file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width-ref.html
11:49:24 INFO - REFTEST TEST-LOAD | file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width.html | 7 / 11 (63%)
11:49:24 INFO - JavaScript error: file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width.html, line 1: ReferenceError: test is not defined
11:49:24 INFO - REFTEST TEST-LOAD | file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width-ref.html | 7 / 11 (63%)
11:49:24 INFO - REFTEST TEST-UNEXPECTED-FAIL | file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width.html == file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width-ref.html | image comparison, max difference: 34, number of differing pixels: 134
11:49:24 INFO - REFTEST IMAGE 1 (TEST): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAPoCAYAAAAmy5qxAAAgAElEQVR4nOzd32ue9f3H8esfuE/voxzlIAc56EEhUCiCDCQU8UgMIjsQwdJBHXbgrAejRsc2LE5hlg4dCgpWqpuOSkXWuuka1G0Wu3Za2qmVJt9qTdM2N22TNOn7e+B6r7FNTWv7amcfD7igJtd9/fh8PLifua7rvpsCAAAIaa71AQAAADcOAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAHCFTM1NVXj4+M1NjZWo6OjNTo6WgcPHrzhl7NjMTY2VuPj4zU1NXWtpwoA4JoRIFwxX3zxRY2Ojlan06nZ2dmam5uz/GeZnZ2tTqdTo6Oj9cUXX1zrqQIAuGYECFfMoUOH6vTp09f6MK5rp0+frkOHDl3rwwAAuGYEyCLNzs7WyMhI/eMf/6jJycnasmVLVVUdPHiwdu7cedX2e+LEifrTn/501bZ/sf1u27btkl5z9OjRmp2dvUpH9P0wOztbR48evdaHAQBwzXyvA2RiYqKapqnXX3993s/7+/vrb3/72yVta3h4uJYuXVpbtmyp999/v3p6eur06dP1wgsv1N13330lD3ueTz/9tNrt9mW/ft++ffXCCy9c8uv2799fPT09i15/bm6ujh07VnNzc5e8r29zdh7PLv39/bVhw4Yrvp+Es+MEAHCjuiECpN1u11dffdX9+eUEyPLly+utt9467+fXe4C88cYbtWLFikt+3eUEyNGjR69qgExNTdWpU6dqy5Yt1TRNHT58+Irv62o7O04AADeqGyJAhoaGamhoqPvzcwPkww8/rIGBgWqappYtW1a7du06bztDQ0PVNE21Wq365S9/Wfv376+bbrqpquYHyPj4eN1+++3VNE319fXVO++8c8Hjevjhh6u3t7f6+/u7VydmZ2dr7dq11Wq1qt1u11NPPVVV5wfISy+9VD09PdU0Ta1cubKmp6erqmrXrl3d8xgaGqq9e/fWzp07q9VqVdM03Ss2FzvGZ555ptrtdrXb7Vq3bt11FyBnb++anp6uVqtVe/bsqaqv53PNmjXVarVq586dF5zTw4cPV19fX3cby5cvrz/84Q9VVfXcc8/Vz372s6q6tLm5HAIEALjR3RABcuTIkWq327Vp06aqmh8gg4OD9fOf/7wOHz5cjzzyyIJXCwYGBuq9996rqqqPP/64ent7q2p+gPzqV7+qu+++u44cOVLPP/98LV269Lzt7Nixo9rtdnU6nTpw4EDde++9NT09XSMjI7VkyZL69NNP68MPP6xWq1UTExPzAuTkyZPVarVqZGSkxsbGavny5bV169bueQwPD9fExEQ9/vjjNTg4WFXnXwFZ6Bg7nU73drUDBw7U4ODgdRcgw8PD9dBDD9WyZctq9erV3d+3Wq1avXp1ffnllzU3N7fgnPb399euXbvqs88+q6ZpuvM2NDRUv//97y95bi6HAAEAbnQ3RIBUVW3btq1arVaNjY11A+Srr76qpmnqxIkTVfX1g9dN01zwzeViAmTJkiW1atWqWr9+fT322GPVNE19/vnn87YzPj5erVar7rnnnnrllVe63wnxwAMP1C233FLr16+v9evXV19fX7344ovzAmTLli3V29vbXWfFihW1cuXKOnz48LzzONc3A2ShY3zttdfq5ptv7q63devW6y5ANm7cWBs3bqxVq1ZVX19f92pVq9Wqzz77rKrqonO6du3a2rBhQ/3ud7+rRx99tHtVqN1u18TExCXPzeUQIADAje6GCZCqqp/85Cd16623Vl9fX/3tb3+rsbGxapqmexvT1NRUNU1zwe9pWEyA9PX11fDwcG3atKm7fPnll+dt68iRI/X000/XihUrqre3t2ZmZmr16tU1NDQ077W7d++eFyCbN2+u/v7+eets3769Dh06VE3T1KlTp87b1zcDZKFj3Lx587z1tm/fft0FyLmfsLVmzZq67777qurrADk7Zxeb07feeqvuuOOOuv3222vXrl11xx131PPPP1/Lly/vbvdS5uZyCBAA4EZ3QwXIyZMnq7+/v5qm6d6CddNNN9XTTz9dMzMztXHjxnlXAc61mABZt25drV69uqampmpsbKzWrFlz3lWJDz74oB577LGqqpqcnKymaeqjjz6qbdu21cDAQI2Pj9fMzEytW7eu9uzZMy9Ajh8/Xq1Wqz7++OOq+vrZhVdffbWqqm6++eZ66qmnanZ2tl5++eW66667qqrq7bffrv7+/u6b94WO8exYffDBB3X8+PG68847uwFy7Nixeumlly461t8lQDZt2lTHjh2rTqdTmzZtqjNnztSBAwfqzTffrKrzA2T//v01MDBQ69evr6r5AVK18JyeOnWq2u129fX11ZkzZ+q5556rnp6e+sUvfnFZc3M5BAgAcKO7oQKk6uuHtc8NkHfeeafa7Xb307J27NhxwW0NDAzU+++/X1VVe/fuvWCAHDx4sAYGBqrValVvb289++yz521namqqbrvtturp6ane3t4aHh6uqqqZmZn64Q9/2D2O++67r86cOVOfffbZvIfQn3zyye46g4OD3dvFRkZGuuexbNmy+vvf/97dX39/f7VarZqZmbnoMT766KPdh+3vv//+boC8/fbb1Wq1anJycsGxvtwAmZycrFarVX/5y1/q3XffraZpanx8vDZs2FBLliypqvM/hre3t7cefPDBbty1Wq15V5ouNqe33XZb/ehHP6qqqtHR0WqaZt5YXcrcXA4BAgDc6L7XAXIpjh8/fsW21el0vnWdkydPXvDN+smTJ7/128RPnz59wec9LrbvmZmZRa03PT193rpV9a1h8V2ugJz7moX+fTkud06/y9x8GwECANzoBAhXxNzcXE1MTFyVZ0C+T86OEwDAjUqAcMWMjo52H/7mwqanp2t0dPRaHwYAwDUjQLhiPvnkkxobG6vp6emam5ur2dlZy3+Wubm5mp6errGxsfrkk0+u9VQBAFwzAoQrZnJysvbt21e7d++uPXv2WL6x7N69u/bt23fRh/kBAL7vBAhX1NzcXE1NTVWn06nJyUnLf5ZOp1NTU1OekQEAbngCBAAAiFlUgExNTdX4+HiNjY3V6OhojY6O1sGDB2/45exYjI2N1fj4eE1NTV3t+QIAgP9piwqQL774okZHR6vT6XQfqLXMdR+07nQ6NTo6Ou/buAEAgPMtKkAOHTr0nb+A7fvu9OnTdejQoWt9GAAAcF1bVIAcPXq0Zmdnr/ax/E+bnZ2NfcP17OxsjYyM1D/+8Y+anJysLVu2VFXVwYMHa+fOnVd139u3b1/wW9ivlhMnTtS2bdui+wQA4Or41gCZm5urY8eOXdan90xMTFTTNN2lv7+/NmzYcFkHer1bzDgtXbq0fvrTn8772Zo1a+rxxx+/pH0NDw/X0qVLa8uWLfX+++9XT09PnT59ul544YW6++67L+v4F6unp6f+/e9/X9Zrp6ena3h4+JJft3///urp6bmsfQIAcH1ZVIAcPXr0OwXI1NRUnTp1qrZs2VJN09Thw4cv62CvZ4sZpyVLllTTNPXXv/61+7P777//kgNk+fLl9dZbb5338+s9QCYnJ6tpLv2D1wQIAMD3RyRAzt6+NT09Xa1Wq/bs2VNVVf39/bVmzZpqtVq1c+fO+vDDD2tgYKCapqlly5bVrl27qqrqBz/4Qf3zn/+sqqq1a9d2ryL861//qptvvrmqqh5++OHq7e2t/v7+euGFF7rH8NJLL1VPT081TVMrV66s6enpSz6PxVhsgAwNDVVPT0/3y+jODZCFzv9cQ0ND1TRNtVqt+uUvf1n79++vm266qarmB8j4+Hjdfvvt1TRN9fX11TvvvHPBY7rQuM3OztbatWur1WpVu92up556qrv+uQGy0Nju2rWrex5DQ0O1d+/eqqpqt9vVNE319PTUu+++e9H9PPPMM9Vut6vdbte6desECADA90QkQIaHh+uhhx6qZcuW1erVq7u/b7VatXr16vryyy9rbm6uBgcH6+c//3kdPny4HnnkkVqxYkVVfX2b0tk3p729vdXb21tVVb/97W/rxz/+ce3YsaPa7XZ1Op06cOBA3XvvvTU9PV0nT56sVqtVIyMjNTY2VsuXL6+tW7de8nksxmIDZMeOHXXrrbfWqlWrqmp+gCx0/t80MDBQ7733XlVVffzxx93xODdAfvWrX9Xdd99dR44cqeeff76WLl163nYWGreRkZFasmRJffrpp/Xhhx9Wq9WqiYmJqvpvgFxsbAcHB2t4eLgmJibq8ccfr8HBwao6/wrIQvvpdDrVNE29/vrrdeDAgRocHBQgAADfE5EA2bhxY23cuLFWrVpVfX193b/st1qt+uyzz6qq6quvvqqmaboPOJ84caKapqmJiYnaunVr3XHHHbV3795asWJFrVixov71r3/VnXfeWa+//nqNj49Xq9Wqe+65p1555ZXu93Fs2bKlent7a/369bV+/fpasWJFrVy58pLPYzEWGyAjIyN16NCharVa9cYbb3QD5GLn/02LCZAlS5bUqlWrav369fXYY49V0zT1+eefz9vOQuP2wAMP1C233NIdt76+vnrxxRer6r8BstDYHj58eN55nOubAbLQfl577bXula2qqq1btwoQAIDviegtWFVfX8247777qurrADn73RljY2PVNE33Np6pqalqmqa++OKL6nQ61W636ze/+U1t2LChNmzYUE888US12+3urUxHjhypp59+ulasWFG9vb01MzNTmzdvrv7+/tq0aVN32b59+yWfx2JcSoBUVf3xj3+sdrtdd911Vz3++OMXPf9vWkyA9PX11fDw8Lxz//LLL8/b1oXGbfXq1TU0NDTvtbt3766q/wbIQmN76NChapqmTp06dd6+vhkgC+1n8+bN867+bN++XYAAAHxPRANk//79NTAwUOvXr6+q+QFSVXXTTTfV008/XTMzM7Vx48Z5fwU/exvO/v37uw8l33LLLVVV9cEHH9Rjjz1WVf99k/vRRx/V8ePHq9Vq1ccff1xVVc8991y9+uqrVVX15z//uftswubNm2tiYqJOnDhRL7744mV95PClBkhV1cqVK6tpmu4tWBc7/3MtJkDWrVtXq1evrqmpqRobG6s1a9acd1VioXHbtm1bDQwM1Pj4eM3MzNS6deu6z+2cDZCLje3NN99cTz31VM3OztbLL79cd911V1VVnTp1qpqmqbGxsaqqBfdz9v+bDz74oI4fP1533nlnN0COHTtWL7300qLmBACA608kQM4uvb299eCDD3bfCLdarXl/lX/nnXe6Dyq32+3asWNH93dPPPFE94121dfPgvz617+uqq+vFtx2223V09NTvb298z7q9cknn+xub3BwsHtL0w9+8IN69NFH69SpU9VqterNN9+snTt3VtM09X//93+XfK6LDZB33323+9+dTqd6e3u7AXKx8z/XwMBAvf/++1VVtXfv3gsGyMGDB2tgYKBarVb19vbWs88+e952Fhq3mZmZ+uEPf9g9jvvuu6/OnDlTVfMfQl9obEdGRrrnsWzZsvr73//e3eeqVauqaZp69913L7qfRx99tPuw/f33398NkLfffrtarVb3yhcAAP9brmqAXK7jx49f1utOnjx5weM8ffr0eX/9P3e9hf59Ka7kOF3u+V9Ip9P51nUWGreTJ0/W6dOnL/raC43tt+17ZmZmUfuZnp4+b92qy58jAACuvUUFyMTEhDd938I4AQDAt1vUt8KNjo5ete/P+L6Ynp6u0dHRa30YAABwXVtUgHzyySc1NjZW09PTNTc3V7Ozs5b/LHNzczU9PV1jY2P1ySefXO35AgCA/2mLCpDJycnat29f7d69u/bs2WP5xrJ79+7at2+fB6MBAOBbLCpAqr5+xmFqaqo6nU5NTk5a/rN0Op2ampry7AcAACzCogMEAADguxIgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAAC06yRIAAAVmSURBVBAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AA+P/261gAAAAAYJC/9Sx2lUUAsBEQAABgIyAAAMBGQAAAgI2AAAAAmwCIWEzE3BlODQAAAABJRU5ErkJggg==
11:49:24 INFO - REFTEST IMAGE 2 (REFERENCE): data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAPoCAYAAAAmy5qxAAAgAElEQVR4nOzd32ue9f3H8esfuE/voxzlIAc56EEhUCiCCBKKeCQGkR2IYOmgDjvY1INRY8c2LE5hlo5uTFCwUveTSkXWuukaOrdZ7NrN0k6tNPn2h2na5qZtkia+vweu9xrb1KTaV6s+HnBBTa77uj7X5/Lgeua6r/tuCgAAIKS52QMAAAC+OQQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECF+KqampGh8fr7GxsRodHa3R0dE6evToN365NBdjY2M1Pj5eU1NTN/tUAQDcVAKEL8Xx48drdHS0Op1Ozc7O1tzcnOW/y+zsbHU6nRodHa3jx4/f7FMFAHBTCRC+FMeOHauLFy/e7GHc0i5evFjHjh272cMAALipBMgizc7O1sjISP3jH/+oycnJ2r59e1VVHT16tPbu3XvD9nvu3Ln64x//eMO2f6397ty5c9Hrnz59umZnZ2/giL76Zmdn6/Tp0zd7GAAAN9XXOkAmJiaqaZp69dVX5/28v7+//va3vy1pW8PDw7V8+fLavn17vf3229XT01MXL16sF198sR544IEvc9jzfPDBB9Vut6/79YcOHaoXX3xxya87fPhw9fT0LGrdubm5OnPmTM3NzS15P4tx6TxeWvr7+2vTpk03ZF830o2eJwCAr4JvRIC02+36+OOPuz+/ngBZuXJlvfHGG1f8/FYPkNdee61WrVq15NctNUBOnz59wwNkamqqLly4UNu3b6+maerkyZM3ZH83yo2eJwCAr4JvRIAMDQ3V0NBQ9+eXB8i7775bAwMD1TRNrVixovbt23fFdoaGhqppmmq1WvXjH/+4Dh8+XLfddltVzQ+Q8fHxuueee6ppmurr66u33nrrquN64oknqre3t/r7+7t3J2ZnZ+uxxx6rVqtV7Xa7nnvuuaq6MkBefvnl6unpqaZpavXq1TU9PV1VVfv27esex9DQUB08eLD27t1brVarmqbp3rG51hh/8YtfVLvdrna7XevXr7/lAuTSW7ymp6er1WrVgQMHqurT87lu3bpqtVq1d+/eq57TkydPVl9fX3cbK1eurN/+9rdVVfX888/XD37wg6pa2rlZKgECAPANCZBTp05Vu92urVu3VtX8ABkcHKwf/vCHdfLkyXryyScXvFswMDBQf/3rX6uq6r333qve3t6qmh8gP/nJT+qBBx6oU6dO1QsvvFDLly+/Yju7d++udrtdnU6njhw5Ug899FBNT0/XyMhILVu2rD744IN69913q9Vq1cTExLwAOX/+fLVarRoZGamxsbFauXJl7dixo3scw8PDNTExUU8//XQNDg5W1ZV3QBYaY6fT6b5d7ciRIzU4OHjLBcjw8HA9/vjjtWLFilq7dm33961Wq9auXVsnTpyoubm5Bc9pf39/7du3rz788MNqmqZ73oaGhuo3v/nNks/NUgkQAIBvSIBUVe3cubNarVaNjY11A+Tjjz+upmnq3LlzVfXpg9dN01z14nIxAbJs2bJas2ZNbdy4sZ566qlqmqY++uijedsZHx+vVqtVDz74YP3617/ufi/E9773vbrzzjtr48aNtXHjxurr66uXXnppXoBs3769ent7u+usWrWqVq9eXSdPnpx3HJf7bIAsNMbf//73dfvtt3fX27Fjxy0XIJs3b67NmzfXmjVrqq+vr3u3qtVq1YcfflhVdc1z+thjj9WmTZvql7/8ZW3YsKF7V6jdbtfExMSSz81SCRAAgG9QgFRVffe736277rqr+vr66m9/+1uNjY1V0zTdtzFNTU1V0zRX/a6GxQRIX19fDQ8P19atW7vLiRMnrtjWqVOnasuWLbVq1arq7e2tmZmZWrt2bQ0NDc177f79++cFyLZt26q/v3/eOrt27apjx45V0zR14cKFK/b12QBZaIzbtm2bt96uXbtuuQC5/FO21q1bVw8//HBVfRogl87Ztc7pG2+8Uffee2/dc889tW/fvrr33nvrhRdeqJUrV3a3u5Rzs1QCBADgGxYg58+fr/7+/mqapvsWrNtuu622bNlSMzMztXnz5nl3AS63mABZv359rV27tqampmpsbKzWrVt3xV2Jd955p5566qmqqpqcnKymaerf//537dy5swYGBmp8fLxmZmZq/fr1deDAgXkBcvbs2Wq1WvXee+9V1afPLvzud7+rqqrbb7+9nnvuuZqdna1XXnml7r///qqqevPNN6u/v7978b7QGC/N1TvvvFNnz56t++67rxsgZ86cqZdffnnBef6iF9Zbt26tM2fOVKfTqa1bt9Ynn3xSR44cqddff72qrgyQw4cP18DAQG3cuLGq5gdI1cLn9MKFC9Vut6uvr68++eSTev7556unp6d+9KMfXde5WSoBAgDwDQuQqk8f1r48QN56661qt9vdT8vavXv3Vbc1MDBQb7/9dlVVHTx48KoBcvTo0RoYGKhWq1W9vb31q1/96ortTE1N1d133109PT3V29tbw8PDVVU1MzNT3/rWt7rjePjhh+uTTz6pDz/8cN5D6M8++2x3ncHBwe7bxUZGRrrHsWLFivr73//e3V9/f3+1Wq2amZm55hg3bNjQfdj+kUce6QbIm2++Wa1WqyYnJ686N1/kwnpycrJarVb9+c9/rj179lTTNDU+Pl6bNm2qZcuWVdWVH8Pb29tbjz76aDfuWq3WvDtN1zqnd999d33729+uqqrR0dFqmmbeXC3l3CyVAAEA+JoHyFKcPXv2S9tWp9P53HXOnz9/1QvR8+fPf+43il+8ePGqz3tca98zMzOLWm96evqKdavqmhfNX/TC+vLXLfTv63G95/SLnJtrESAAAAKEL8Hc3FxNTEy4sP4c5gkAQIDwJRkdHe0++M3VTU9P1+jo6M0eBgDATSVA+FK8//77NTY2VtPT0zU3N1ezs7OW/y5zc3M1PT1dY2Nj9f7779/sUwUAcFMJEL4Uk5OTdejQodq/f38dOHDA8pll//79dejQoQUf5AcA+KYQIHxp5ubmampqqjqdTk1OTlr+u3Q6nZqamvLsBwBACRAAACBoUQEyNTVV4+PjNTY2VqOjozU6OlpHjx79xi+X5mJsbKzGx8dramrqRp8vAAD4SltUgBw/frxGR0er0+l0H6q1zHUftu50OjU6Ojrv27gBAIArLSpAjh079oW+gO2b4OLFi3Xs2LGbPQwAALilLSpATp8+XbOzszd6LF9ps7Ozdfr06di+RkZG6h//+EdNTk7W9u3bq6rq6NGjtXfv3hu67127di34Lew3yrlz52rnzp3RfQIAcGN8boDMzc3VmTNnrusTfCYmJqppmu7S399fmzZtuq6B3uoWM0/Lly+v73//+/N+tm7dunr66aeXtK/h4eFavnx5bd++vd5+++3q6empixcv1osvvlgPPPDAdY1/sXp6euo///nPdb12enq6hoeHl/y6w4cPV09Pz3XtEwCAW8uiAuT06dNfKECmpqbqwoULtX379mqapk6ePHldg72VLWaeli1bVk3T1F/+8pfuzx555JElB8jKlSvrjTfeuOLn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RoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAhusrT4AAAVXSURBVAAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAP/ffh0LAAAAAAzyt57FrrIIADYCAgAAbAQEAADYCAgAALAREAAAYBP46EyI9tFhzQAAAABJRU5ErkJggg==
11:49:24 INFO - REFTEST INFO | Saved log: START file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width.html
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] OnDocumentLoad triggering WaitForTestEnd
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] WaitForTestEnd: Adding listeners
11:49:24 INFO - REFTEST INFO | Saved log: Initializing canvas snapshot
11:49:24 INFO - REFTEST INFO | Saved log: DoDrawWindow 0,0,800,1000
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: STATE_WAITING_TO_FIRE_INVALIDATE_EVENT
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: waiting for MozAfterPaint
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] AfterPaintListener in file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width.html
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] Webrender enabled, sending update whole canvas for invalidation
11:49:24 INFO - REFTEST INFO | Saved log: Updating entire canvas for invalidation
11:49:24 INFO - REFTEST INFO | Saved log: DoDrawWindow 0,0,800,1000
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: STATE_WAITING_TO_FIRE_INVALIDATE_EVENT
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: dispatching MozReftestInvalidate
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] AttrModifiedListener fired
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] FlushRendering generated paint for window file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width.html
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: STATE_WAITING_FOR_REFTEST_WAIT_REMOVAL
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: STATE_WAITING_FOR_SPELL_CHECKS
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: STATE_WAITING_FOR_APZ_FLUSH
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: done requesting APZ flush
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: STATE_WAITING_FOR_APZ_FLUSH
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] AfterPaintListener in file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width.html
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] SendUpdateCanvasForEvent with 0 rects
11:49:24 INFO - REFTEST INFO | Saved log: Updating canvas for invalidation
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: STATE_WAITING_FOR_APZ_FLUSH
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: apz-repaints-flushed fired
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: STATE_WAITING_TO_FINISH
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] MakeProgress: waiting for MozAfterPaint
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] AfterPaintListener in file:///Users/cltbld/tasks/task_1559043783/build/tests/reftest/tests/layout/reftests/forms/input/file/dynamic-max-width.html
11:49:24 INFO - REFTEST INFO | Saved log: [CONTENT] Webrender enabled, sending update whole canvas for invalidation
11:49:24 INFO - REFTEST INFO | Saved log: Updating entire canvas for invalidation
11:49:24 INFO - REFTEST INFO | Saved log: DoDrawWindow 0,0,800,1000

Sigh...... that showed up on the previous landing as well, I see, but it's been an intermittent in the past and so I overlooked it. :( Will fix this time!

Flags: needinfo?(jfkthame)
Pushed by jkew@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/c21269589d5b Apply the AAT 'trak' table to macOS fonts regardless of whether we shaped using CoreText or HarfBuzz. r=jrmuizel
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla69

Comment on attachment 9067286 [details]
Bug 1553889 - Apply the AAT 'trak' table to macOS fonts regardless of whether we shaped using CoreText or HarfBuzz. r=jrmuizel

Beta/Release Uplift Approval Request

  • User impact if declined:
  • Is this code covered by automated tests?: Yes
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): this fixes reftests that run on osx 10.14
  • String changes made/needed:
Attachment #9067286 - Flags: approval-mozilla-beta?

Given where we are in the cycle, we need a way better risk assessment than comment 14 since this affects code we ship to end users.

Flags: needinfo?(jfkthame)

I think the risk here is pretty minimal. We're not doing anything new or different, we're just moving the handling of the 'trak' table (only found in certain macOS fonts, generally) out of the "if shaping with Core Text" condition, so that it applies regardless of whether the Core Text or HarfBuzz shaper is used. This is in Mac-only code; it only affects fonts that have this specific table; it's using the already-existing code to implement it; and it's been confirmed by testing to produce the expected result.

Flags: needinfo?(jfkthame)

I clarified with Jonathan that the change in bug 1509423 likely exposed this issue for the first time because it forced all fonts to route through HarfBuzz for shaping. It's very possible, however, that this has been a latent user-facing bug all along on newer versions of macOS since in the past, the decision to route through HarfBuzz vs. CoreText was based on the features of the specific font being shaped.

Comment on attachment 9067286 [details]
Bug 1553889 - Apply the AAT 'trak' table to macOS fonts regardless of whether we shaped using CoreText or HarfBuzz. r=jrmuizel

Fixes a font rendering regression on newer versions of macOS and unblocks migration of OSX testers to 10.14. Approved for 68rc1.

Attachment #9067286 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Flags: qe-verify+

I have reproduced this issue using Firefox 69.0a1 (2019.05.23) on macOS 10.14 here the width of the paragraph is 478.3px.
I can confirm this issue is fixed, I verified using Firefox 69.0a1 (2019.06.30) the width of the paragraph is 463px with gfx.font_rendering.coretext.enabled=false and on 68.0b14 on macOS 10.14 the width of the paragraph is 462.6px without gfx.font_rendering.coretext.enabled pref.
Waiting for 68.0RC1 to verify it.

QA Whiteboard: [qa-triaged]

I verified on 68.0RC1 using macOS 10.14 the width of the paragraph is 462.6px.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: