Bug 215259

Summary: [WinCairo] Use Cairo DirectWrite font backend
Product: WebKit Reporter: Fujii Hironori <Hironori.Fujii>
Component: PlatformAssignee: Fujii Hironori <Hironori.Fujii>
Status: RESOLVED FIXED    
Severity: Normal CC: webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 262768    
Bug Blocks: 258365    
Attachments:
Description Flags
WIP patch
none
Patch for Cairo 1.16
none
Patch for Cairo 1.16
none
WIP patch
none
WIP patch
none
WIP patch
none
WIP patch
none
small-font-test.html
none
WIP patch
none
WIP patch
none
WIP patch
none
WIP patch
none
WIP patch
none
WIP patch none

Description Fujii Hironori 2020-08-07 00:21:17 PDT
[WinCairo] Use Cairo DirectWrite font backend

Mozilla has Cairo DirectWrite patch. Let's try it.
Comment 1 Fujii Hironori 2020-08-07 00:21:58 PDT
Created attachment 406156 [details]
WIP patch
Comment 2 Fujii Hironori 2020-08-07 00:25:49 PDT
Created attachment 406157 [details]
Patch for Cairo 1.16
Comment 3 Fujii Hironori 2020-08-10 13:42:01 PDT
No color glyphs are rendered with this patch.

According to the following document, I should use IDWriteFactory4::TranslateColorGlyphRun.

Color Fonts - Win32 apps | Microsoft Docs
https://docs.microsoft.com/en-us/windows/win32/directwrite/color-fonts

IDWriteFactory4::TranslateColorGlyphRun (dwrite_3.h) - Win32 apps | Microsoft Docs
https://docs.microsoft.com/en-us/windows/win32/api/dwrite_3/nf-dwrite_3-idwritefactory4-translatecolorglyphrun
Comment 4 Fujii Hironori 2020-08-17 19:59:25 PDT
Created attachment 406764 [details]
Patch for Cairo 1.16
Comment 5 Fujii Hironori 2020-08-17 20:00:06 PDT
Created attachment 406765 [details]
WIP patch
Comment 6 Fujii Hironori 2020-08-27 21:31:06 PDT
Graphic bits » Blog Archive » DirectWrite Text Rendering in Firefox 6
https://web.archive.org/web/20160909065035/https://blog.mozilla.org/nattokirai/2011/08/11/directwrite-text-rendering-in-firefox-6/
Comment 7 Fujii Hironori 2020-08-31 14:29:05 PDT
Created attachment 407628 [details]
WIP patch
Comment 8 Fujii Hironori 2020-08-31 14:52:32 PDT
I found some minor issues.

Because WinCairo is using Uniscribe for shaping, I need to use
DirectWrite GDI compatible mode at the moment. Unfortunately,
DirectWrite GDI compatible mode looks jaggier than GDI. Even
though GDI is rendering text with subpixel antialiasing both
vertically and horizontally, DirectWrite GDI compatible mode
seems to do it only horizontally.

Uniscribe doesn't combine some emoji sequences.
https://getemoji.com/

Both issues are related to Uniscribe. WinCairo should use
DirectWrite or HarfBuzz DirectWrite backend for shaping.
Comment 9 Fujii Hironori 2020-08-31 18:03:08 PDT
Screenshots: https://ibb.co/album/dsHY4
Comment 10 Fujii Hironori 2020-08-31 18:04:32 PDT
Oh, wrong URL!

Screenshots: https://ibb.co/album/dsHY4y
Comment 11 Fujii Hironori 2022-04-05 18:21:57 PDT
Cairo 1.17.6 added DWrite support.
https://lists.cairographics.org/archives/cairo/2022-March/029398.html
Comment 12 Fujii Hironori 2022-04-07 21:57:44 PDT
Created attachment 457016 [details]
WIP patch
Comment 13 Fujii Hironori 2022-04-07 22:01:17 PDT
Some ref tests failures.

  css2.1/20110323/text-indent-intrinsic-001.htm [ ImageOnlyFailure ]
  css2.1/20110323/text-indent-intrinsic-002.htm [ ImageOnlyFailure ]
  css2.1/20110323/text-indent-intrinsic-003.htm [ ImageOnlyFailure ]
  css2.1/20110323/text-indent-intrinsic-004.htm [ ImageOnlyFailure ]
  css3/bdi-element.html [ ImageOnlyFailure ]
  css3/flexbox/csswg/ttwf-reftest-flex-wrap-reverse.html [ ImageOnlyFailure ]
  css3/flexbox/csswg/ttwf-reftest-flex-wrap.html [ ImageOnlyFailure ]
  fast/css/absolute-inline-alignment-2.html [ ImageOnlyFailure ]
  fast/css/absolute-inline-alignment.html [ ImageOnlyFailure ]
  fast/css/negative-text-indent-in-inline-block.html [ ImageOnlyFailure ]
  fast/text/arabic-zwj-and-zwnj.html [ ImageOnlyFailure ]
  fast/text/complex-initial-advance.html [ ImageOnlyFailure ]
  fast/text/default-ignorable.html [ ImageOnlyFailure ]
  fast/text/embed-at-end-of-pre-wrap-line-simple-lines.html [ ImageOnlyFailure ]
  fast/text/fitzpatrick-combination.html [ ImageOnlyFailure ]
  fast/text/isolate-ignore.html [ ImageOnlyFailure ]
  fast/text/ja-sans-serif.html [ ImageOnlyFailure ]
  fast/text/otsvg-spacing.html [ ImageOnlyFailure ]
  fast/text/simple-line-layout-leading-whitespace-with-soft-hard-linebreak.html [ ImageOnlyFailure ]
  fast/text/soft-hyphen-min-preferred-width.html [ ImageOnlyFailure ]
  fast/text/softHyphen.html [ ImageOnlyFailure ]
  fast/text/text-combine-rendering.html [ ImageOnlyFailure ]
  fast/text/text-underline-first-line-decoration.html [ ImageOnlyFailure ]
  fast/text/text-underline-position-under.html [ ImageOnlyFailure ]
  fast/text/undefined-glyph-with-ligature.html [ ImageOnlyFailure ]
Comment 14 Fujii Hironori 2022-05-17 00:47:55 PDT
Created attachment 459487 [details]
WIP patch
Comment 15 Fujii Hironori 2022-05-18 18:42:56 PDT
Created attachment 459562 [details]
small-font-test.html
Comment 16 Fujii Hironori 2022-05-19 18:27:25 PDT
DWrite: Outermost edges of embedded bitmap font glyphs aren't drawn (#569) · Issues · cairo / cairo · GitLab
https://gitlab.freedesktop.org/cairo/cairo/-/issues/569
Comment 17 Fujii Hironori 2022-05-22 13:45:47 PDT
DWrite: It looks jaggy (#567) · Issues · cairo / cairo · GitLab
https://gitlab.freedesktop.org/cairo/cairo/-/issues/567
Comment 18 Fujii Hironori 2023-01-18 17:32:22 PST
Created attachment 464549 [details]
WIP patch
Comment 19 Fujii Hironori 2023-02-09 22:50:19 PST
Created attachment 464937 [details]
WIP patch
Comment 20 Fujii Hironori 2023-02-24 12:20:19 PST
Created attachment 465156 [details]
WIP patch
Comment 21 Fujii Hironori 2023-03-27 00:06:30 PDT
Created attachment 465605 [details]
WIP patch
Comment 22 Fujii Hironori 2023-03-30 13:51:10 PDT
Created attachment 465690 [details]
WIP patch
Comment 23 Fujii Hironori 2023-04-23 18:48:19 PDT
Created attachment 466056 [details]
WIP patch
Comment 24 Fujii Hironori 2023-10-11 23:02:34 PDT
Pull request: https://github.com/WebKit/WebKit/pull/18985
Comment 25 EWS 2023-10-12 13:16:03 PDT
Committed 269270@main (0f066948ca64): <https://commits.webkit.org/269270@main>

Reviewed commits have been landed. Closing PR #18985 and removing active labels.
Comment 26 Radar WebKit Bug Importer 2023-10-12 13:17:19 PDT
<rdar://problem/116878771>
Comment 27 Fujii Hironori 2023-10-12 13:59:57 PDT
Re-opening for pull request https://github.com/WebKit/WebKit/pull/19018
Comment 28 EWS 2023-10-12 14:03:04 PDT
Committed 269275@main (6d7089f0d592): <https://commits.webkit.org/269275@main>

Reviewed commits have been landed. Closing PR #19018 and removing active labels.