On 19/06/2023 17:37, Ashley Gullen wrote:
It'd be great to see support for this in Firefox but note that Chrome and Safari currently do not implement fontBoundingBox* attributes interoperably, as they return different values depending on the current textBaseline. See this issue: https://bugs.chromium.org/p/chromium/issues/detail?id=1183752 <https://bugs.chromium.org/p/chromium/issues/detail?id=1183752> I think it comes down to a spec issue as something in the spec is not well defined enough. It would be great to see a push to get this implemented consistently across all major browsers.


You're right, there are discrepancies between how browsers deal with font metrics; canvas textBaseline is certainly one place that shows up. I think some spec clarifications are needed before real progress will happen here.

This is why I've been hesitant to expose more of these attributes, but with both Chrome and Safari supporting fontBoundingBox, enabling it in Firefox as well seems like a useful step forward. It should be useful to some authors, at least, even if results with non-default textBaseline may be less reliable. (If nothing else, perhaps it'll stir interest in solving the outstanding metrics-interoperability issues.)

jk


On Mon, 19 Jun 2023 at 12:52, Jonathan Kew <[email protected] <mailto:[email protected]>> wrote:

    As of Firefox 116, I intend to turn the fontBoundingBox{Ascent,Descent}
    attributes of the Canvas2D TextMetrics interface on by default.

    This was developed behind the dom.textMetrics.fontBoundingBox.enabled
    preference.

    Status in other browsers is:
        Chrome - shipping
        Safari - shipping

    Bug to turn on by default:
    https://bugzilla.mozilla.org/show_bug.cgi?id=1801198
    <https://bugzilla.mozilla.org/show_bug.cgi?id=1801198>

    Standard:
    https://html.spec.whatwg.org/multipage/canvas.html#textmetrics
    <https://html.spec.whatwg.org/multipage/canvas.html#textmetrics>

    Note that the standard also lists some more TextMetrics attributes that
    we have implemented behind additional (default-disabled) prefs; I'm not
    proposing to ship these at this stage as there are still some
    outstanding concerns around interoperability. Shipping the
    fontBoundingBox* attributes will match what Chrome currently exposes on
    their release channel, and AFAICT is the most-requested of these.

    JK


    - - -
    Original "Intent to Prototype" email, from 2020-01-17 (as I can't find
    it in the Google Groups archive to link to...)
    - - -

    The TextMetrics interface represents the dimensions of a piece of text
    in the canvas, as created by the CanvasRenderingContext2D.measureText()
    method.

    Currently, Gecko only supports the .width attribute, but authors would
    also like to determine the actual dimensions that the rendered text
    would have in both x- and y-directions, as well as overall font metrics
    to assist with line spacing, etc.

    Safari supports the full set of TextMetrics attributes as currently
    documented in the HTML spec. Chrome has recently shipped support for
    the
    actualBoundingBox attributes; it has support for additional
    font-metrics
    attributes behind the "experimental web features" flag.

    Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1102584
    <https://bugzilla.mozilla.org/show_bug.cgi?id=1102584>

    Standard:
    https://html.spec.whatwg.org/multipage/canvas.html#textmetrics
    <https://html.spec.whatwg.org/multipage/canvas.html#textmetrics>

    Note that there are a number of open issues regarding the spec (see
    https://github.com/w3ctag/design-reviews/issues/302#issuecomment-427996200 
<https://github.com/w3ctag/design-reviews/issues/302#issuecomment-427996200>).
    For this reason, I propose to implement these attributes behind several
    prefs, and initially enable only the actualBoundingBox* attributes by
    default (matching what Chrome has shipped); the others will be
    preffed-off, but can be selectively enabled by authors who want to
    experiment with them.

    Testing: Some (limited) tests are in
    web-platform/tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.*

    Platform coverage: All

    Restricted to secure contexts: No. The existing TextMetrics
    interface is
    not restricted, and other browsers support the extended attributes in
    all contexts.

    Target Release: 74

    Preferences behind which this will be implemented:
        dom.textMetrics.actualBoundingBox.enabled  (default: true)
        dom.textMetrics.baselines.enabled          (default: false)
        dom.textMetrics.emHeight.enabled           (default: false)
        dom.textMetrics.fontBoundingBox.enabled    (default: false)

-- You received this message because you are subscribed to the Google
    Groups "[email protected] <mailto:[email protected]>"
    group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to [email protected]
    <mailto:dev-platform%[email protected]>.
    To view this discussion on the web visit
    
https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/c54e4f87-3961-d076-4606-63aec9c4c4dd%40gmail.com
 
<https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/c54e4f87-3961-d076-4606-63aec9c4c4dd%40gmail.com>.


--
You received this message because you are subscribed to the Google Groups 
"[email protected]" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/f3c75ebc-69c7-8b95-cd4f-6ebc5597781c%40gmail.com.

Reply via email to