The issue has been replaced with placeElement(), just underway. https://github.com/WICG/canvas-place-element
There are also Text Metrics extensions landed in Chromium behind the ExtendedTextMetrics blink flag (I think). See https://blogs.igalia.com/schenney/canvas-text-editing/ Stephen. On Thu, Sep 12, 2024 at 10:07 AM Mike Taylor <miketa...@chromium.org> wrote: > According to https://issues.chromium.org/u/2/issues/40160099#comment20 - > it is not being pursued. > On 9/12/24 2:56 AM, Joe Lewis wrote: > > Is this initiative progressing. I'm writing a web-based word processor and > this will save a lot of efforts. > Curious to know if this is something that's still being pursued or should > I write my own layouting engine? > > Thanks, > Joe > On Thursday 16 December, 2021 at 2:30:17 pm UTC+5:30 Frank Tang wrote: > >> I am proposing an enhancement of Intl.Segmenter API (adding line break >> support) to TC39 for ECMA402 (see >> https://github.com/tc39-transfer/proposal-intl-segmenter-v2 ) The API >> expose "line break opportunity" of text which implement the >> Unicode® Standard Annex #14 >> <https://github.com/w3c/css-houdini-drafts/issues/14> UNICODE LINE >> BREAKING ALGORITHM (see https://www.unicode.org/reports/tr14/) >> so it can be used for developer to use it with >> >> 1. multiple lines of text rendering in <CANVAS> >> 2. jsPDF and other context which need to layout text into multiple >> lines >> 3. SVG multiple lines of text >> >> During the stage advancement discussion, one delegate suggest me to reach >> out to Houdini to see which one of the following is better >> >> 1. Instead of adding that to ECMA402 as a low level API, leave that >> part of job (breaking text into multiple lines of text) to Houdini to add >> such API to empower developers to use it on <CANVAS>, SVG , or for jsPDF >> and therefore there are no need to add them into ECMA402, OR >> 2. TC39 add such low level API into ECMA402 to allow developers to >> use that with the currently defined Houdini APIs, OR >> 3. TC39 add such low level API into ECMA402 to allow Houdini to >> depends on Intl.Segmenter for the job of finding out linguistic line break >> opportunity. >> >> Please comment so we can move forward better in TC39 / ECMA402. Thanks >> >> >> Similar question to you- do you think the enhancement to Intl.Segmenter >> will be conflict or redundant to your API? or will it complement the API >> you intend to implement? >> >> >> >> On Mon, Dec 14, 2020 at 10:30 AM 'Sushanth Rajasankar' via blink-dev < >> blin...@chromium.org> wrote: >> >>> Thanks, Ashley. I'm excited to see that we can help simplify code and >>> address your use case. Looking forward to your feedback once we have a >>> prototype in Chromium. >>> >>> ------------------------------ >>> *From:* Ashley Gullen <ash...@scirra.com> >>> *Sent:* Wednesday, December 9, 2020 2:53 AM >>> *To:* Sushanth Rajasankar <sushanth....@microsoft.com> >>> *Cc:* blin...@chromium.org <blin...@chromium.org>; Travis Leithead < >>> travis....@microsoft.com> >>> *Subject:* [EXTERNAL] Re: [blink-dev] Re: Intent to Prototype: Canvas >>> Formatted Text >>> >>> This would be good for our game engine Construct 3 (www.construct.net >>> <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.construct.net%2F&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336822305%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=nrKkgGSHQNxJMC724eJ30MgiN%2BitYpfjchzWnWELkLE%3D&reserved=0>) >>> as well. >>> >>> Our engine renders entirely to a canvas, and for displaying text we use >>> the canvas text APIs. Since ~2012 we've had to maintain our own custom word >>> wrap engine in JavaScript to handle multi-line text, and I doubt it does >>> everything this proposal does especially with regards to break >>> opportunities and bidi text, so it would be great if the browser could >>> handle that for us. I do think backwards compatibility would be tricky >>> though, as switching existing content to a different word wrap engine will >>> probably result in unwanted differences, but there's not much that can be >>> done about that. >>> >>> >>> On Tue, 8 Dec 2020 at 21:27, 'Sushanth Rajasankar' via blink-dev < >>> blin...@chromium.org> wrote: >>> >>> Fixing the row for "Web Developer signals" >>> >>> We do have positive signals from web developers, they are interested in >>> adopting this API for both performance and correctness reasons >>> >>> nhelfman · GitHub >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnhelfman&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336832260%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=VlWmi4gNHtCAdi7aNobH2oaJovJ651u7xOrrSbV%2BWXw%3D&reserved=0> >>> - >>> Excel Online - Microsoft >>> bonmotbot (Igor Kopylov) · GitHub >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fbonmotbot&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336832260%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Inf8rhPrPgAJTtKtsvRokBOCrzK6Umn8pUo8apcIZaQ%3D&reserved=0> >>> - >>> GSuite - Google >>> >>> Thanks, >>> Sushanth >>> ------------------------------ >>> *From:* 'Sushanth Rajasankar' via blink-dev <blin...@chromium.org> >>> *Sent:* Friday, December 4, 2020 4:36 PM >>> *To:* blin...@chromium.org <blin...@chromium.org> >>> *Cc:* Travis Leithead <travis....@microsoft.com> >>> *Subject:* [EXTERNAL] [blink-dev] Intent to Prototype: Canvas Formatted >>> Text >>> >>> >>> Contact emails >>> >>> sush...@microsoft.com, tra...@microsoft.com >>> >>> Explainer >>> >>> >>> https://github.com/WICG/canvas-formatted-text/blob/main/README.md >>> >>> >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FWICG%2Fcanvas-formatted-text%2Fblob%2Fmain%2FREADME.md&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336842214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=PPZGLccssO71KlyTUUcLwEjN8vDsssmTegWuKrZwHcM%3D&reserved=0> >>> Specification >>> >>> None >>> >>> >>> Summary >>> >>> Easily render multiline formatted text in Canvas, while letting the >>> browser handle the hard parts of line-breaking and other language-specific >>> constraints. >>> >>> >>> Blink component >>> >>> Blink>Canvas >>> >>> >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.chromium.org%2Fp%2Fchromium%2Fissues%2Flist%3Fq%3Dcomponent%3ABlink%253ECanvas&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336842214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=fuB5wSfM58VwIwKaDazVEKApWypB7hv6BzASfIumTG8%3D&reserved=0> >>> Motivation >>> >>> You have a paragraph of text. You want to write it to the canvas. Canvas >>> only supplies fill/strokeText -- only line of text at a time. Where do >>> you break your paragraph up? Doing this is JavaScript is hard and error >>> prone. For example, the author must consider: where are the break >>> opportunities between words or Graphemes? Break opportunities are based >>> primarily on the Unicode Spec but also use dictionaries for languages like >>> Thai and French that dictate additional line breaking rules. Other >>> consideration include identifying grapheme clusters, handling Bidi >>> text, proper text shaping and kerning. >>> >>> >>> >>> Luckily, the browser already has a powerful line breaking, text shaping >>> component used for regular HTML layout. This feature enables authors to tap >>> into the browser's layout feature while maintaining control over the layout >>> of multi-line formatted text. >>> >>> >>> >>> Initial public proposal >>> >>> https://github.com/WICG/proposals/issues/3 >>> >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FWICG%2Fproposals%2Fissues%2F3&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336852168%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=9D%2BBkgANFiTfpqRepnDofLhx6%2FvJoLGeoqfxajIuWrQ%3D&reserved=0> >>> >>> >>> TAG review >>> >>> None >>> >>> >>> TAG review status >>> >>> Pending >>> >>> >>> Risks >>> >>> This feature exposes new functionality to the Canvas. Similar behavior >>> is being exposed to the CSS Houdini Layout API. Our goal is to find a good >>> balance in terms of design that harmonizes the two concepts. >>> >>> >>> >>> Interoperability and Compatibility >>> >>> None >>> >>> >>> >>> Gecko: No signal >>> >>> WebKit: No signal >>> >>> Web developers: No signals >>> >>> >>> >>> >>> Is this feature fully tested by web-platform-tests >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromium.googlesource.com%2Fchromium%2Fsrc%2F%2B%2Fmaster%2Fdocs%2Ftesting%2Fweb_platform_tests.md&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336852168%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=oMOeWm4Qr8VRbyno8zhhfcHWpGI0j%2FnpiyMDfxDmmT0%3D&reserved=0> >>> ? >>> >>> No >>> >>> >>> Tracking bug >>> >>> https://bugs.chromium.org/p/chromium/issues/detail?id=1155764 >>> >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.chromium.org%2Fp%2Fchromium%2Fissues%2Fdetail%3Fid%3D1155764&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336852168%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=d00eqYe9gEumXTtPazSHYF2W1pFVwFh3%2F9uweStTAHE%3D&reserved=0> >>> >>> >>> Link to entry on the Chrome Platform Status >>> >>> https://chromestatus.com/feature/5996048675766272 >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromestatus.com%2Ffeature%2F5996048675766272&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336862132%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Wwyn%2B8e79rgNyM811Mrex%2FONbesUdtHPlmBk7twA1%2FU%3D&reserved=0> >>> >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromestatus.com%2Ffeature%2F5996048675766272&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336862132%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Wwyn%2B8e79rgNyM811Mrex%2FONbesUdtHPlmBk7twA1%2FU%3D&reserved=0> >>> >>> >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromestatus.com%2Ffeature%2F5996048675766272&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336872084%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=p9vt7HKqtZJM3X3OUt5gqDeB1x6GYsJng7z57BIueEk%3D&reserved=0> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "blink-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to blink-dev+...@chromium.org. >>> To view this discussion on the web visit >>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/MN2PR00MB060671AEFC6F81BCB9725037FDF09%40MN2PR00MB0606.namprd00.prod.outlook.com >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fa%2Fchromium.org%2Fd%2Fmsgid%2Fblink-dev%2FMN2PR00MB060671AEFC6F81BCB9725037FDF09%2540MN2PR00MB0606.namprd00.prod.outlook.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336872084%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=aVUDlLqL2GPMD5L7LcSWJ41UOe4EQjqXGFytpw%2FG0pw%3D&reserved=0> >>> . >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "blink-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to blink-dev+...@chromium.org. >>> To view this discussion on the web visit >>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/DM6PR00MB060336F0695308E30C6499C8FDCD9%40DM6PR00MB0603.namprd00.prod.outlook.com >>> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fa%2Fchromium.org%2Fd%2Fmsgid%2Fblink-dev%2FDM6PR00MB060336F0695308E30C6499C8FDCD9%2540DM6PR00MB0603.namprd00.prod.outlook.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=04%7C01%7CSushanth.Rajasankar%40microsoft.com%7Caeae998363ce4e73f49108d89c30b767%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C637431080336882040%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=qg83LnHBlKSSgcJBwd2481nNfExU%2BYr3Hxy2AfsrM5Q%3D&reserved=0> >>> . >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "blink-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to blink-dev+...@chromium.org. >>> >> To view this discussion on the web visit >>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/BYAPR00MB059824555DAD1801B8F6933AFDC79%40BYAPR00MB0598.namprd00.prod.outlook.com >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/BYAPR00MB059824555DAD1801B8F6933AFDC79%40BYAPR00MB0598.namprd00.prod.outlook.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+unsubscr...@chromium.org. > To view this discussion on the web visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/92387448-12d8-43b7-baef-a8e97f032e2bn%40chromium.org > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/92387448-12d8-43b7-baef-a8e97f032e2bn%40chromium.org?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+unsubscr...@chromium.org. > To view this discussion on the web visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/4fc7b100-d613-43d3-b64d-8d29f912973f%40chromium.org > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/4fc7b100-d613-43d3-b64d-8d29f912973f%40chromium.org?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGsbWzQq9HL42iOfj%3DRTBn14R4iDjZZ8tu5y8jnV8PrhAmFT5A%40mail.gmail.com.