Bug 240213

Summary: .measureText() returns TextMetrics object with rounded values for bounding box
Product: WebKit Reporter: Andreas <andreas>
Component: Layout and RenderingAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: ahmad.saleem792, andreas, bfulgham, mmaxfield, sabouhallawa, simon.fraser, webkit-bug-importer, zalan
Priority: P2 Keywords: InRadar
Version: Safari 15   
Hardware: Mac (Intel)   
OS: macOS 10.15   
See Also: https://bugs.webkit.org/show_bug.cgi?id=250020
Attachments:
Description Flags
Comparison between browsers
none
Test element none

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.