QUnicodeTools: Fix interactions of WB3d and WB4 rules

Word breaking rule WB3d should not be affected by WB4.

This fixes the remaining word break test.

Task-number: QTBUG-97537
Pick-to: 6.2 6.3
Change-Id: I99aee831d7c54fafcd2a9d526a3e078b12c5bfad
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This commit is contained in:
Ievgenii Meshcheriakov 2022-05-05 15:26:06 +02:00
parent c63cdbdc43
commit 08d2ae411f
2 changed files with 8 additions and 3 deletions

View File

@ -287,6 +287,11 @@ static void getWordBreaks(const char16_t *string, qsizetype len, QCharAttributes
// WB15/WB16: break between pairs of Regional indicator // WB15/WB16: break between pairs of Regional indicator
ncls = QUnicodeTables::WordBreak_Any; ncls = QUnicodeTables::WordBreak_Any;
} }
if (Q_UNLIKELY(ncls == QUnicodeTables::WordBreak_WSegSpace
&& real_cls != QUnicodeTables::WordBreak_WSegSpace)) {
// WB3d should not be affected by WB4
action = WB::Break;
}
break; break;
case WB::Lookup: case WB::Lookup:
case WB::LookupW: case WB::LookupW:
@ -325,6 +330,8 @@ static void getWordBreaks(const char16_t *string, qsizetype len, QCharAttributes
} }
cls = ncls; cls = ncls;
real_cls = ncls;
if (action == WB::Break) { if (action == WB::Break) {
attributes[pos].wordBreak = true; attributes[pos].wordBreak = true;
if (currentWordType != WordTypeNone) if (currentWordType != WordTypeNone)
@ -345,8 +352,6 @@ static void getWordBreaks(const char16_t *string, qsizetype len, QCharAttributes
break; break;
} }
} }
real_cls = ncls;
} }
if (currentWordType != WordTypeNone) if (currentWordType != WordTypeNone)

View File

@ -983,7 +983,7 @@
÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (WSegSpace) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] ÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
÷ 0020 × 0020 ÷ # ÷ [0.2] SPACE (WSegSpace) × [3.4] SPACE (WSegSpace) ÷ [0.3] ÷ 0020 × 0020 ÷ # ÷ [0.2] SPACE (WSegSpace) × [3.4] SPACE (WSegSpace) ÷ [0.3]
# ÷ 0020 × 0308 ÷ 0020 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3] ÷ 0020 × 0308 ÷ 0020 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] SPACE (WSegSpace) ÷ [0.3]
÷ 0020 × 00AD ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0020 × 00AD ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0020 × 0308 × 00AD ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3] ÷ 0020 × 0308 × 00AD ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3] ÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (WSegSpace) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]