diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-08-21 23:54:03 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-08-25 01:08:02 -0400 |
commit | b614ea2b06b3c9defaceb92b6904fa8a92249abe (patch) | |
tree | c20fdc8a2dc8a85561e3a8df5bf147d3c2888cd5 /tests | |
parent | 3aee7615e9a123ae750e49e9864bdaa4b267cdbb (diff) | |
download | pango-b614ea2b06b3c9defaceb92b6904fa8a92249abe.tar.gz |
Add segmentation attributesbreak-tailoring
Add attributes that let us override word and
sentence boundaries (and, indirectly, line breaks).
Tests included.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/breaks/five.break | 1 | ||||
-rw-r--r-- | tests/breaks/five.expected | 7 | ||||
-rw-r--r-- | tests/breaks/fourteen.break | 2 | ||||
-rw-r--r-- | tests/breaks/fourteen.expected | 7 | ||||
-rw-r--r-- | tests/breaks/thirteen.break | 2 | ||||
-rw-r--r-- | tests/breaks/thirteen.expected | 7 | ||||
-rw-r--r-- | tests/breaks/twelve.break | 2 | ||||
-rw-r--r-- | tests/breaks/twelve.expected | 7 | ||||
-rw-r--r-- | tests/test-common.c | 2 | ||||
-rw-r--r-- | tests/testattributes.c | 16 |
10 files changed, 50 insertions, 3 deletions
diff --git a/tests/breaks/five.break b/tests/breaks/five.break new file mode 100644 index 00000000..c9a192dd --- /dev/null +++ b/tests/breaks/five.break @@ -0,0 +1 @@ +<span segment='word'>ab
cd</span> diff --git a/tests/breaks/five.expected b/tests/breaks/five.expected new file mode 100644 index 00000000..17ce3a58 --- /dev/null +++ b/tests/breaks/five.expected @@ -0,0 +1,7 @@ +Text: a b [0x2028] c d [0x0a] +Breaks: lc c c Lc c c c +Whitespace: w w w +Sentences: bs e bs e b +Words: bs be b +Graphemes: b b b b b b b +Hyphens: i i diff --git a/tests/breaks/fourteen.break b/tests/breaks/fourteen.break new file mode 100644 index 00000000..e270276d --- /dev/null +++ b/tests/breaks/fourteen.break @@ -0,0 +1,2 @@ +# item-spanning line break attrs +<span allow_breaks='n'>ab<span segment='word'>c α</span>βγ</span> diff --git a/tests/breaks/fourteen.expected b/tests/breaks/fourteen.expected new file mode 100644 index 00000000..c8a22617 --- /dev/null +++ b/tests/breaks/fourteen.expected @@ -0,0 +1,7 @@ +Text: a b c [ ] α β γ [0x0a] +Breaks: c l l c c +Whitespace: x w w +Sentences: bs e b +Words: bs bse bse be b +Graphemes: b b b b b b b b b +Hyphens: i i i i diff --git a/tests/breaks/thirteen.break b/tests/breaks/thirteen.break new file mode 100644 index 00000000..a1e5cacf --- /dev/null +++ b/tests/breaks/thirteen.break @@ -0,0 +1,2 @@ +# some line breaks remain in words +a <span segment='word'>absp defg</span> b diff --git a/tests/breaks/thirteen.expected b/tests/breaks/thirteen.expected new file mode 100644 index 00000000..70742cff --- /dev/null +++ b/tests/breaks/thirteen.expected @@ -0,0 +1,7 @@ +Text: a [ ] a b [0x200b] s p [0x200b] [ ] [ ] d e [0xad] f g [ ] b [0x0a] +Breaks: c c lc c c lc c c c c lc c c lc c c lc c c +Whitespace: x x x x w w +Sentences: bs e b +Words: bs be bs be bs be b +Graphemes: b b b b b b b b b b b b b b b b b b b +Hyphens: i i i i i i diff --git a/tests/breaks/twelve.break b/tests/breaks/twelve.break new file mode 100644 index 00000000..a1659be4 --- /dev/null +++ b/tests/breaks/twelve.break @@ -0,0 +1,2 @@ +# test line break attributes +the file <span segment='word'>/path/</span><span segment='word'>to/</span><span segment='word'>my/</span>home is cursed. diff --git a/tests/breaks/twelve.expected b/tests/breaks/twelve.expected new file mode 100644 index 00000000..63e14e64 --- /dev/null +++ b/tests/breaks/twelve.expected @@ -0,0 +1,7 @@ +Text: t h e [ ] f i l e [ ] / p a t h / t o / m y / h o m e [ ] i s [ ] c u r s e d . [0x0a] +Breaks: c c c c lc c c c c lc c c c c c lc c c lc c c lc c c c c lc c c lc c c c c c c c c +Whitespace: x x x x w w +Sentences: bs e b +Words: bs be bs be bs bse bs bse be bs be bs be b b +Graphemes: b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b +Hyphens: i i i i i i i i i i i i i i i i i i i diff --git a/tests/test-common.c b/tests/test-common.c index 011b2eef..0e3719e7 100644 --- a/tests/test-common.c +++ b/tests/test-common.c @@ -144,6 +144,8 @@ print_attribute (PangoAttribute *attr, GString *string) case PANGO_ATTR_SHOW: case PANGO_ATTR_TEXT_TRANSFORM: case PANGO_ATTR_ABSOLUTE_LINE_HEIGHT: + case PANGO_ATTR_WORD: + case PANGO_ATTR_SENTENCE: g_string_append_printf (string, "%d", ((PangoAttrInt *)attr)->value); break; case PANGO_ATTR_FONT_DESC: diff --git a/tests/testattributes.c b/tests/testattributes.c index f950a204..b9dcc1b3 100644 --- a/tests/testattributes.c +++ b/tests/testattributes.c @@ -75,6 +75,8 @@ test_attributes_basic (void) test_copy (pango_attr_text_transform_new (PANGO_TEXT_TRANSFORM_UPPERCASE)); test_copy (pango_attr_line_height_new (1.5)); test_copy (pango_attr_line_height_new_absolute (3000)); + test_copy (pango_attr_word_new ()); + test_copy (pango_attr_sentence_new ()); } static void @@ -125,7 +127,7 @@ test_binding (PangoAttribute *attr) INVALID, LANGUAGE, STRING, INT, INT, INT, INT, SIZE, FONT_DESC, COLOR, COLOR, INT, INT, INT, SHAPE, FLOAT, INT, INT, COLOR, COLOR, SIZE, INT, INT, FONT_FEATURES, INT, INT, INT, INT, INT, INT, COLOR, FLOAT, - INT, INT, INT, INT + INT, INT, INT, INT, INT, INT }; switch (attr_base[attr->klass->type]) @@ -207,6 +209,8 @@ test_binding_helpers (void) test_binding (pango_attr_text_transform_new (PANGO_TEXT_TRANSFORM_UPPERCASE)); test_binding (pango_attr_line_height_new (1.5)); test_binding (pango_attr_line_height_new_absolute (3000)); + test_binding (pango_attr_word_new ()); + test_binding (pango_attr_sentence_new ()); } static void @@ -1213,8 +1217,8 @@ test_merge2 (void) pango_attr_list_unref (list); } -/* This only prints rise, size and scale, which are the - * only relevant attributes in the test that uses this +/* This only prints rise, size, scale, allow_breaks and line_break, + * which are the only relevant attributes in the tests that use this * function. */ static void @@ -1240,6 +1244,12 @@ print_tags_for_attributes (PangoAttrIterator *iter, g_string_append_printf (s, "[%d, %d]scale=%f\n", attr->start_index, attr->end_index, ((PangoAttrFloat*)attr)->value); + + attr = pango_attr_iterator_get (iter, PANGO_ATTR_ALLOW_BREAKS); + if (attr) + g_string_append_printf (s, "[%d, %d]allow_breaks=%d\n", + attr->start_index, attr->end_index, + ((PangoAttrInt*)attr)->value); } static void |