diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-05-10 03:57:41 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-05-10 03:57:41 +0000 |
commit | b74477786377d6e86df12ff6c97529f481bbb4f1 (patch) | |
tree | b9df9a4a8060f6bb3fb4f431fa4e138856c61206 /pango | |
parent | c4ee1b04e1e4b10adba336bbc11e9daab8bf3e50 (diff) | |
parent | aa606673d3ae4dae54cef5d7d2de031b8f0b73a1 (diff) | |
download | pango-b74477786377d6e86df12ff6c97529f481bbb4f1.tar.gz |
Merge branch 'fix-sentence-breaks' into 'master'
break: Fix an inconsistency with sentence breaks
See merge request GNOME/pango!330
Diffstat (limited to 'pango')
-rw-r--r-- | pango/break.c | 19 |
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++; + } } |