summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-05-10 03:57:41 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-05-10 03:57:41 +0000
commitb74477786377d6e86df12ff6c97529f481bbb4f1 (patch)
treeb9df9a4a8060f6bb3fb4f431fa4e138856c61206
parentc4ee1b04e1e4b10adba336bbc11e9daab8bf3e50 (diff)
parentaa606673d3ae4dae54cef5d7d2de031b8f0b73a1 (diff)
downloadpango-b74477786377d6e86df12ff6c97529f481bbb4f1.tar.gz
Merge branch 'fix-sentence-breaks' into 'master'
break: Fix an inconsistency with sentence breaks See merge request GNOME/pango!330
-rw-r--r--pango/break.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/pango/break.c b/pango/break.c
index 6b8e5c01..c34d0512 100644
--- a/pango/break.c
+++ b/pango/break.c
@@ -306,7 +306,6 @@ pango_default_break (const gchar *text,
/* Emoji extended pictographics */
gboolean is_Extended_Pictographic;
-
wc = next_wc;
break_type = next_break_type;
@@ -932,7 +931,20 @@ pango_default_break (const gchar *text,
prev_prev_SB_type == SB_ATerm_Close_Sp) &&
IS_OTHER_TERM(prev_SB_type) &&
SB_type == SB_Lower)
- attrs[prev_SB_i].is_sentence_boundary = FALSE;
+ {
+ attrs[prev_SB_i].is_sentence_boundary = FALSE;
+ attrs[prev_SB_i].is_sentence_start = FALSE;
+ attrs[prev_SB_i].is_sentence_end = FALSE;
+ last_sentence_start = -1;
+ for (int j = prev_SB_i - 1; j >= 0; j--)
+ {
+ if (attrs[j].is_sentence_boundary)
+ {
+ last_sentence_start = j;
+ break;
+ }
+ }
+ }
else if ((prev_SB_type == SB_ATerm ||
prev_SB_type == SB_ATerm_Close_Sp ||
prev_SB_type == SB_STerm ||
@@ -1537,8 +1549,9 @@ pango_default_break (const gchar *text,
/* meets space character, move sentence start */
if (last_sentence_start != -1 &&
last_sentence_start == i - 1 &&
- attrs[i - 1].is_white)
+ attrs[i - 1].is_white) {
last_sentence_start++;
+ }
}