Bug 240213 - .measureText() returns TextMetrics object with rounded values for bounding box
Summary: .measureText() returns TextMetrics object with rounded values for bounding box
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: Safari 15
Hardware: Mac (Intel) macOS 10.15
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2022-05-08 01:34 PDT by Andreas
Modified: 2023-10-02 18:30 PDT (History)
8 users (show)

See Also:


Attachments
Comparison between browsers (403.06 KB, image/png)
2022-05-08 01:34 PDT, Andreas
no flags Details
Test element (668 bytes, text/html)
2022-05-08 01:35 PDT, Andreas
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas 2022-05-08 01:34:18 PDT
Created attachment 459011 [details]
Comparison between browsers

The values of the bounding box returned by CanvasRenderingContext2D.measureText() are rounded resulting in imprecise calculations in typographic centered applications (except for .actualBoundingBoxRight).

The issue might be related with:
https://bugs.webkit.org/show_bug.cgi?id=225695
Comment 1 Andreas 2022-05-08 01:35:08 PDT
Created attachment 459012 [details]
Test element
Comment 2 Radar WebKit Bug Importer 2022-05-15 01:35:13 PDT
<rdar://problem/93303504>
Comment 3 Ahmad Saleem 2023-10-02 18:28:12 PDT
I think we have 'boundingBoxAscent' etc. in html/TextMetrics.h as 'float' but Chrome has it as 'double'.

So changing it into 'double' might be solution.
Comment 4 Ahmad Saleem 2023-10-02 18:30:17 PDT
We have FIXME as well: https://github.com/WebKit/WebKit/blob/7b833e8e18ce1474a00504b49ff46757b96e1a83/Source/WebCore/html/TextMetrics.idl#L29

IDL + C++ side both need fixes.