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.