From c635cb4ef1a21ff07e210f2733f97ccb01c0ed15 Mon Sep 17 00:00:00 2001 From: Andreu Botella Date: Wed, 7 Feb 2024 05:40:56 -0800 Subject: [PATCH] Fully implement bidi for a line's trailing spaces (UAX#9 L1) Per UAX#9 L1, any spaces that after line breaking would fall logically at the end of a line must be reset to the paragraph's initial embedding level, regardless of the embedding level of those spaces in the paragraph. Until now, Blink only had partial support for this. The reason this was hard to implement in Blink is because the direction of text is computed in a per-paragraph level, splitting the text into items with a given direction and embedding level. Those items are then split into item results when line breaking, but item results must have the same direction as the item. As part of line breaking, some item results are produced which only have trailing spaces. The partial support, implemented in crrev.com/c/2505486, consisted of marking these results with the `has_only_trailing_spaces` flag, and using this flag to distinguish them when reordering the item results. This patch builds on top of that partial fix by adding a final processing step to line breaking, which splits item results so that trailing spaces (with a different embedding level as the paragraph) are split into its own item result, and by marking all trailing spaces item results as `has_only_trailing_spaces`. This also fixes bug 1514753, where having a item result with non-base direction which had logically trailing spaces was causing the text (rather than the spaces) to hang, because `LineInfo::ComputeTrailingSpaceWidth` assumed that UAX#9 L1 held. This patch also modifies some existing WPT tests to make them use a monospace Arabic webfont (since it's not guaranteed that all OS's have one), and by changing the widths slightly to work around bug 1409445. Bug: 316409, 1514753 Change-Id: I1eb751b457d413b5099dad8f95badba9a1b3e5fb Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5199988 Reviewed-by: Koji Ishii Commit-Queue: Andreu Botella Cr-Commit-Position: refs/heads/main@{#1257309} --- .../white-space/eol-spaces-bidi-001.html | 13 ++- .../white-space/eol-spaces-bidi-002.html | 15 ++- .../white-space/eol-spaces-bidi-004.html | 41 ++++++++ .../reference/eol-spaces-bidi-001-ref.html | 13 ++- .../reference/eol-spaces-bidi-002-ref.html | 16 +-- .../reference/eol-spaces-bidi-004-ref.html | 21 ++++ .../eol-spaces-bidi-alt-004-ref.html | 18 ++++ fonts/hasubi-mono/HasubiMono-Regular.woff2 | Bin 0 -> 26432 bytes fonts/hasubi-mono/LICENSE.txt | 92 ++++++++++++++++++ fonts/hasubi-mono/README.md | 7 ++ 10 files changed, 217 insertions(+), 19 deletions(-) create mode 100644 css/css-text/white-space/eol-spaces-bidi-004.html create mode 100644 css/css-text/white-space/reference/eol-spaces-bidi-004-ref.html create mode 100644 css/css-text/white-space/reference/eol-spaces-bidi-alt-004-ref.html create mode 100644 fonts/hasubi-mono/HasubiMono-Regular.woff2 create mode 100644 fonts/hasubi-mono/LICENSE.txt create mode 100644 fonts/hasubi-mono/README.md diff --git a/css/css-text/white-space/eol-spaces-bidi-001.html b/css/css-text/white-space/eol-spaces-bidi-001.html index b8bcbe17b738d4..570f22de7be9f1 100644 --- a/css/css-text/white-space/eol-spaces-bidi-001.html +++ b/css/css-text/white-space/eol-spaces-bidi-001.html @@ -7,8 +7,13 @@ +

Test passes if a blue box (the white space) is visible at the left start in first line and no red is shown.

+
+
XXX X
diff --git a/css/css-text/white-space/reference/eol-spaces-bidi-001-ref.html b/css/css-text/white-space/reference/eol-spaces-bidi-001-ref.html index 430706c5569759..2aa8f4a83c6b15 100644 --- a/css/css-text/white-space/reference/eol-spaces-bidi-001-ref.html +++ b/css/css-text/white-space/reference/eol-spaces-bidi-001-ref.html @@ -4,8 +4,13 @@ +

Test passes if a blue box (the white space) is visible at the left start in first line and no red is shown.

+
X
diff --git a/css/css-text/white-space/reference/eol-spaces-bidi-alt-004-ref.html b/css/css-text/white-space/reference/eol-spaces-bidi-alt-004-ref.html new file mode 100644 index 00000000000000..4d068654a76d5f --- /dev/null +++ b/css/css-text/white-space/reference/eol-spaces-bidi-alt-004-ref.html @@ -0,0 +1,18 @@ + + +CSS Text 3 test reference + + + + +

Test passes if a blue box (the white space) is visible at the left start in first line and no red is shown.

+

diff --git a/fonts/hasubi-mono/HasubiMono-Regular.woff2 b/fonts/hasubi-mono/HasubiMono-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ee8b598dd9630487cd58c2875025b96ede9e8754 GIT binary patch literal 26432 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