RESOLVED FIXED Bug 65903
[Chromium] Implement text shaping with font-feature-settings on Linux
https://bugs.webkit.org/show_bug.cgi?id=65903
Summary [Chromium] Implement text shaping with font-feature-settings on Linux
Kenichi Ishibashi
Reported 2011-08-09 02:56:08 PDT
Implement text shaping with font-feature-settings CSS property. This bug entry is for Chromium Linux port.
Attachments
Patch V0 (22.67 KB, patch)
2011-08-09 03:24 PDT, Kenichi Ishibashi
no flags
Patch V1 (fix compile error) (22.67 KB, patch)
2011-08-09 03:31 PDT, Kenichi Ishibashi
no flags
Patch V2 (22.74 KB, patch)
2011-08-09 23:03 PDT, Kenichi Ishibashi
no flags
Kenichi Ishibashi
Comment 1 2011-08-09 03:24:32 PDT
Created attachment 103342 [details] Patch V0
Gustavo Noronha (kov)
Comment 2 2011-08-09 03:27:17 PDT
WebKit Review Bot
Comment 3 2011-08-09 03:27:30 PDT
Comment on attachment 103342 [details] Patch V0 Attachment 103342 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/9339192
Gyuyoung Kim
Comment 4 2011-08-09 03:29:51 PDT
Kenichi Ishibashi
Comment 5 2011-08-09 03:31:38 PDT
Created attachment 103343 [details] Patch V1 (fix compile error)
Evan Martin
Comment 6 2011-08-09 08:47:39 PDT
Comment on attachment 103343 [details] Patch V1 (fix compile error) View in context: https://bugs.webkit.org/attachment.cgi?id=103343&action=review This looks great, but I am a bit worried about performance... > Source/WebCore/platform/graphics/chromium/ComplexTextControllerLinux.cpp:212 > + HB_GSUB_Clear_Features(hbFace->gsub); Is this clearing any leftover cached gsub data on the hbFace? I wonder if it is expensive to reload this data repeatedly; we call setupFontForScriptRun for every span of text on a page...
Kenichi Ishibashi
Comment 7 2011-08-09 23:03:40 PDT
Created attachment 103444 [details] Patch V2
Kenichi Ishibashi
Comment 8 2011-08-09 23:06:20 PDT
Comment on attachment 103343 [details] Patch V1 (fix compile error) View in context: https://bugs.webkit.org/attachment.cgi?id=103343&action=review Hi Evan, Thank you for your review. I've revised the patch. >> Source/WebCore/platform/graphics/chromium/ComplexTextControllerLinux.cpp:212 >> + HB_GSUB_Clear_Features(hbFace->gsub); > > Is this clearing any leftover cached gsub data on the hbFace? > > I wonder if it is expensive to reload this data repeatedly; we call setupFontForScriptRun for every span of text on a page... As far as I checked, HB_{GPOS,GSUB}_Clear_Features() just reset some fields to zero and don't clean cached data. I think it is not so expensive. I revised the patch to reduce calling setupFontFeatures() either way.
Evan Martin
Comment 9 2011-08-10 08:50:34 PDT
Comment on attachment 103444 [details] Patch V2 View in context: https://bugs.webkit.org/attachment.cgi?id=103444&action=review LGTM > Source/WebCore/platform/graphics/Font.cpp:274 > + return Complex; One more question: this change here affects all WebKit ports. Will it be a problem for the other ports? I guess .featureSettings() is only available when the page uses these new CSS keywords, which should be very rare, right?
Adam Barth
Comment 10 2011-08-10 10:18:58 PDT
Comment on attachment 103444 [details] Patch V2 View in context: https://bugs.webkit.org/attachment.cgi?id=103444&action=review The harfbuzz code is a mystery to me, but I believe that evmar knows that he's talking about. :) >> Source/WebCore/platform/graphics/Font.cpp:274 >> + if (m_fontDescription.featureSettings() && m_fontDescription.featureSettings()->size() > 0) >> + return Complex; > > One more question: this change here affects all WebKit ports. Will it be a problem for the other ports? > > I guess .featureSettings() is only available when the page uses these new CSS keywords, which should be very rare, right? I'm not an expert here, but this seems ok to me. -webkit-font-feature-settings kicking us into complex mode shouldn't be too much of a problem.
WebKit Review Bot
Comment 11 2011-08-10 12:24:41 PDT
Comment on attachment 103444 [details] Patch V2 Clearing flags on attachment: 103444 Committed r92783: <http://trac.webkit.org/changeset/92783>
WebKit Review Bot
Comment 12 2011-08-10 12:24:47 PDT
All reviewed patches have been landed. Closing bug.
Kenichi Ishibashi
Comment 13 2011-08-10 17:40:25 PDT
Thank you for r+ing, Adam! (In reply to comment #10) > > I guess .featureSettings() is only available when the page uses these new CSS keywords, which should be very rare, right? Yes, .featureSettings() is only available when there are -webkit-font-feature-settings properties on the page, and it should be very rare.
Andrei Popescu
Comment 14 2011-08-11 04:41:04 PDT
It looks like the css3/font-feature-settings-rendering.html LT added in http://trac.webkit.org/changeset/92783 is missing expectations for Chromium. The actual output also looks wrong: http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&tests=css3%2Ffont-feature-settings-rendering.html I think the test was marked as failing for MAC and WIN in Chromium test expectations file, when it should have been skipped or marked as missing expectations. See http://trac.webkit.org/changeset/92837
Kenichi Ishibashi
Comment 15 2011-08-11 06:42:38 PDT
(In reply to comment #14) > I think the test was marked as failing for MAC and WIN in Chromium test expectations file, when it should have been skipped or marked as missing expectations. My fault. Thank you for fixing expectations.
Note You need to log in before you can comment on or make changes to this bug.