From 91687742f61d4b74572f3176fa3d8442438df504 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 2 Aug 2021 01:17:18 -0400 Subject: itemize: Fix up gravity state initialization itemize_state_init was setting gravity-related fields to their initial values too late, after update_attr_iterator has already set them to the values for the first run. Test included. --- pango/pango-context.c | 9 +++++---- tests/layouts/valid-20.expected | 40 ++++++++++++++++++++++++++++++++++++++++ tests/layouts/valid-20.markup | 2 ++ 3 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 tests/layouts/valid-20.expected create mode 100644 tests/layouts/valid-20.markup diff --git a/pango/pango-context.c b/pango/pango-context.c index ac59f3d8..4f15dd61 100644 --- a/pango/pango-context.c +++ b/pango/pango-context.c @@ -1031,6 +1031,11 @@ itemize_state_init (ItemizeState *state, state->embedding_end = text + start_index; update_embedding_end (state); + state->gravity = PANGO_GRAVITY_AUTO; + state->centered_baseline = PANGO_GRAVITY_IS_VERTICAL (state->context->resolved_gravity); + state->gravity_hint = state->context->gravity_hint; + state->resolved_gravity = PANGO_GRAVITY_AUTO; + /* Initialize the attribute iterator */ if (cached_iter) @@ -1088,10 +1093,6 @@ itemize_state_init (ItemizeState *state, else state->font_desc_gravity = PANGO_GRAVITY_AUTO; - state->gravity = PANGO_GRAVITY_AUTO; - state->centered_baseline = PANGO_GRAVITY_IS_VERTICAL (state->context->resolved_gravity); - state->gravity_hint = state->context->gravity_hint; - state->resolved_gravity = PANGO_GRAVITY_AUTO; state->derived_lang = NULL; state->current_fonts = NULL; state->cache = NULL; diff --git a/tests/layouts/valid-20.expected b/tests/layouts/valid-20.expected new file mode 100644 index 00000000..6939260b --- /dev/null +++ b/tests/layouts/valid-20.expected @@ -0,0 +1,40 @@ +abcdef + +--- parameters + +wrapped: 0 +ellipsized: 0 +lines: 2 + +--- attributes + +range 0 3 +[0,3]gravity=1 +[0,3]gravity-hint=1 +range 3 6 +[3,6]gravity=0 +range 6 2147483647 + +--- directions + +0 0 0 0 0 0 0 + +--- cursor positions + +0(0) 1(0) 2(0) 3(0) 4(0) 5(0) 5(1) 7(0) + +--- lines + +i=1, index=0, paragraph-start=1, dir=ltr 'abcdef +' +i=2, index=7, paragraph-start=1, dir=ltr '' + +--- runs + +i=1, index=0, chars=3, level=0, gravity=east, flags=0, font=OMITTED, script=latin, language=en-us, 'abc' +[0,3]gravity=1 +[0,3]gravity-hint=1 +i=2, index=3, chars=3, level=0, gravity=south, flags=0, font=OMITTED, script=latin, language=en-us, 'def' +[3,6]gravity=0 +i=3, index=6, no run, line end +i=4, index=7, no run, line end diff --git a/tests/layouts/valid-20.markup b/tests/layouts/valid-20.markup new file mode 100644 index 00000000..fe6480d7 --- /dev/null +++ b/tests/layouts/valid-20.markup @@ -0,0 +1,2 @@ +# exercise gravity handling +abcdef -- cgit v1.2.1