From 9927e551b32660d4bc536bd0b5aa1b3222613c4b Mon Sep 17 00:00:00 2001 From: Jaro Date: Tue, 25 Apr 2023 11:44:17 +0200 Subject: [PATCH] Add line numbers to laid out fragments. --- .../loremIpsum20em.golden | 33 ++++--- .../spannedArabicFiller20em.golden | 42 ++++++--- .../paragraphLayout/arabicFiller20em.golden | 12 ++- .golden/paragraphLayout/czechHello.golden | 3 +- .../czechHelloParagraphNarrow.golden | 15 ++-- .../czechHelloParagraphUltraNarrow.golden | 33 ++++--- .golden/paragraphLayout/devanagari.golden | 3 +- .../paragraphLayout/devanagariAccent.golden | 3 +- .../devanagariPrefixedAccent.golden | 3 +- .golden/paragraphLayout/hardBreaksLTR.golden | 27 ++++-- .golden/paragraphLayout/hardBreaksRTL.golden | 27 ++++-- .golden/paragraphLayout/ligature.golden | 3 +- .../ligatureParagraphBreak1.golden | 9 +- .../ligatureParagraphBreak2.golden | 9 +- .../paragraphLayout/lineHeightLarger.golden | 3 +- .../paragraphLayout/lineHeightNormal.golden | 3 +- .../paragraphLayout/lineHeightSmaller.golden | 3 +- .../paragraphLayout/loremIpsum100em.golden | 9 +- .golden/paragraphLayout/loremIpsum20em.golden | 33 ++++--- .golden/paragraphLayout/manySpaces.golden | 12 ++- .../paragraphLayout/mixedLanguageLTR.golden | 6 +- .../paragraphLayout/mixedScriptWords.golden | 69 +++++++++----- .../spannedArabicFiller20em.golden | 42 ++++++--- .../spannedLoremIpsum20em.golden | 90 ++++++++++++------- CHANGELOG.md | 2 + lib/Data/Text/ParagraphLayout/Plain.hs | 8 +- .../Text/ParagraphLayout/Internal/Fragment.hs | 7 +- .../Text/ParagraphLayout/Internal/Plain.hs | 18 ++-- test/Data/Text/ParagraphLayout/PrettyShow.hs | 8 +- 29 files changed, 359 insertions(+), 176 deletions(-) diff --git a/.golden/paginatedParagraphLayout/loremIpsum20em.golden b/.golden/paginatedParagraphLayout/loremIpsum20em.golden index 5c48725..4354b42 100644 --- a/.golden/paginatedParagraphLayout/loremIpsum20em.golden +++ b/.golden/paginatedParagraphLayout/loremIpsum20em.golden @@ -3,7 +3,8 @@ , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 18310, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 18310, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 47, cluster = 4, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 507, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -48,7 +49,8 @@ ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17443, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17443, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 44, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -99,7 +101,8 @@ , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 19791, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 19791, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 76, cluster = 83, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -149,7 +152,8 @@ ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17562, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17562, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 56, cluster = 128, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 688, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -192,7 +196,8 @@ ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 18769, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 18769, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 166, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -242,7 +247,8 @@ ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 19226, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 19226, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 211, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -288,7 +294,8 @@ ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 17973, y_size = -1121} + { fragmentLine = 7 + , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 17973, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 71, cluster = 252, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 589, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -335,7 +342,8 @@ ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 18971, y_size = -1121} + { fragmentLine = 8 + , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 18971, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 294, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -392,7 +400,8 @@ , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 17239, y_size = -1121} + { fragmentLine = 9 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 17239, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 40, cluster = 339, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 580, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -435,7 +444,8 @@ ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 19199, y_size = -1121} + { fragmentLine = 10 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 19199, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 83, cluster = 377, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 589, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -483,7 +493,8 @@ ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 12076, y_size = -1121} + { fragmentLine = 11 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 12076, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 80, cluster = 422, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 861, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paginatedParagraphLayout/spannedArabicFiller20em.golden b/.golden/paginatedParagraphLayout/spannedArabicFiller20em.golden index 37b14c7..33ab3dc 100644 --- a/.golden/paginatedParagraphLayout/spannedArabicFiller20em.golden +++ b/.golden/paginatedParagraphLayout/spannedArabicFiller20em.golden @@ -3,7 +3,8 @@ , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 12652, y_origin = 0, x_size = 7198, y_size = -1500} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 12652, y_origin = 0, x_size = 7198, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 38, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -30,7 +31,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 7060, y_origin = 0, x_size = 5592, y_size = -1500} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 7060, y_origin = 0, x_size = 5592, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 702, cluster = 56, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 1248, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -50,7 +52,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 7060, y_size = -1500} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 7060, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 283, cluster = 93, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 388, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -78,7 +81,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 14850, y_origin = -1500, x_size = 4045, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 14850, y_origin = -1500, x_size = 4045, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 293, cluster = 113, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 270, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -97,7 +101,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 9168, y_origin = -1500, x_size = 5682, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 9168, y_origin = -1500, x_size = 5682, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 145, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -122,7 +127,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 3213, y_origin = -1500, x_size = 5955, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 3213, y_origin = -1500, x_size = 5955, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 293, cluster = 174, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 270, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -147,7 +153,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 3213, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 3213, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 90, cluster = 191, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 272, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -202,7 +209,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 14300, y_origin = 0, x_size = 4862, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 14300, y_origin = 0, x_size = 4862, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 216, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -224,7 +232,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 10225, y_origin = 0, x_size = 4075, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 10225, y_origin = 0, x_size = 4075, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 1311, cluster = 232, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 575, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -242,7 +251,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 3898, y_origin = 0, x_size = 6327, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 3898, y_origin = 0, x_size = 6327, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 264, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -267,7 +277,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 3898, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 3898, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 935, cluster = 280, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 476, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -281,7 +292,8 @@ ] } , Fragment - { fragmentRect = Rect {x_origin = 12238, y_origin = -1500, x_size = 2357, y_size = -1500} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 12238, y_origin = -1500, x_size = 2357, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 935, cluster = 293, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 476, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -296,7 +308,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 5880, y_origin = -1500, x_size = 6358, y_size = -1500} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 5880, y_origin = -1500, x_size = 6358, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 323, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -322,7 +335,8 @@ , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 5880, y_size = -1500} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 5880, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 90, cluster = 356, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 272, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/arabicFiller20em.golden b/.golden/paragraphLayout/arabicFiller20em.golden index 3344fee..1feab05 100644 --- a/.golden/paragraphLayout/arabicFiller20em.golden +++ b/.golden/paragraphLayout/arabicFiller20em.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 19850, y_size = -1500} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 19850, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 283, cluster = 93, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 388, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -57,7 +58,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 18895, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 18895, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 90, cluster = 191, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 272, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -114,7 +116,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3000, x_size = 19162, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -3000, x_size = 19162, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 935, cluster = 280, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 476, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -166,7 +169,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4500, x_size = 14595, y_size = -1500} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -4500, x_size = 14595, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 90, cluster = 356, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 272, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/czechHello.golden b/.golden/paragraphLayout/czechHello.golden index acf38a5..1494bb5 100644 --- a/.golden/paragraphLayout/czechHello.golden +++ b/.golden/paragraphLayout/czechHello.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 5274, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 5274, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 36, cluster = 5, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 663, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/czechHelloParagraphNarrow.golden b/.golden/paragraphLayout/czechHelloParagraphNarrow.golden index 8d91c2e..aafa362 100644 --- a/.golden/paragraphLayout/czechHelloParagraphNarrow.golden +++ b/.golden/paragraphLayout/czechHelloParagraphNarrow.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1234, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1234, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 36, cluster = 5, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 663, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -11,7 +12,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 1089, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 1089, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 82, cluster = 7, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 590, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -20,7 +22,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 948, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 948, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 86, cluster = 11, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 446, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -28,7 +31,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 961, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 961, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 246, cluster = 13, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -36,7 +40,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 835, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 835, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 16, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/czechHelloParagraphUltraNarrow.golden b/.golden/paragraphLayout/czechHelloParagraphUltraNarrow.golden index 39f19d2..5b794ef 100644 --- a/.golden/paragraphLayout/czechHelloParagraphUltraNarrow.golden +++ b/.golden/paragraphLayout/czechHelloParagraphUltraNarrow.golden @@ -3,77 +3,88 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 663, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 663, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 36, cluster = 5, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 663, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 571, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 571, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 75, cluster = 6, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 571, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 590, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 590, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 82, cluster = 7, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 590, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 253, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 253, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 8, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 246, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 246, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 15, cluster = 9, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 246, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 446, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 446, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 86, cluster = 11, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 446, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 502, y_size = -1121} + { fragmentLine = 7 + , fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 502, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 89, cluster = 12, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 502, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 559, y_size = -1121} + { fragmentLine = 8 + , fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 559, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 246, cluster = 13, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 402, y_size = -1121} + { fragmentLine = 9 + , fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 402, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 87, cluster = 15, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 402, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 559, y_size = -1121} + { fragmentLine = 10 + , fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 559, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 16, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 276, y_size = -1121} + { fragmentLine = 11 + , fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 276, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 4, cluster = 17, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 276, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/devanagari.golden b/.golden/paragraphLayout/devanagari.golden index 8ec4d0f..5779d56 100644 --- a/.golden/paragraphLayout/devanagari.golden +++ b/.golden/paragraphLayout/devanagari.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 8640, y_size = -1630} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 8640, y_size = -1630} , fragmentPen = (0, -1171) , fragmentGlyphs = [ (GlyphInfo {codepoint = 382, cluster = 8, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 555, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/devanagariAccent.golden b/.golden/paragraphLayout/devanagariAccent.golden index b55605d..0526845 100644 --- a/.golden/paragraphLayout/devanagariAccent.golden +++ b/.golden/paragraphLayout/devanagariAccent.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 645, y_size = -1000} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 645, y_size = -1000} , fragmentPen = (0, -500) , fragmentGlyphs = [ (GlyphInfo {codepoint = 529, cluster = 0, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 645, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/devanagariPrefixedAccent.golden b/.golden/paragraphLayout/devanagariPrefixedAccent.golden index 672f9a3..6815bc5 100644 --- a/.golden/paragraphLayout/devanagariPrefixedAccent.golden +++ b/.golden/paragraphLayout/devanagariPrefixedAccent.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 0, y_size = -1000} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 0, y_size = -1000} , fragmentPen = (0, -500) , fragmentGlyphs = [ (GlyphInfo {codepoint = 424, cluster = 1, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 0, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/hardBreaksLTR.golden b/.golden/paragraphLayout/hardBreaksLTR.golden index 10e4f39..a791ff3 100644 --- a/.golden/paragraphLayout/hardBreaksLTR.golden +++ b/.golden/paragraphLayout/hardBreaksLTR.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1563, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1563, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 1, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -15,7 +16,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 3357, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 3357, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 8, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -34,7 +36,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 1563, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 1563, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 22, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -46,7 +49,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 4305, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 4305, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 80, cluster = 29, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 861, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -57,14 +61,16 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 861, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 861, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 80, cluster = 34, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 861, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 1563, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 1563, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 37, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -76,13 +82,15 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 0, y_size = -1121} + { fragmentLine = 7 + , fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 0, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 3675, y_size = -1121} + { fragmentLine = 8 + , fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 3675, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 80, cluster = 45, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 861, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -93,7 +101,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 1722, y_size = -1121} + { fragmentLine = 9 + , fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 1722, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 80, cluster = 51, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 861, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/hardBreaksRTL.golden b/.golden/paragraphLayout/hardBreaksRTL.golden index b3490a8..e13262d 100644 --- a/.golden/paragraphLayout/hardBreaksRTL.golden +++ b/.golden/paragraphLayout/hardBreaksRTL.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 2808, y_size = -1500} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 2808, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 642, cluster = 11, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 468, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -15,7 +16,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 5852, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 5852, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 642, cluster = 37, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 468, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -34,7 +36,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3000, x_size = 2808, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -3000, x_size = 2808, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 642, cluster = 50, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 468, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -46,7 +49,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4500, x_size = 4884, y_size = -1500} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -4500, x_size = 4884, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 359, cluster = 63, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 827, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -58,14 +62,16 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -6000, x_size = 1211, y_size = -1500} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 0, y_origin = -6000, x_size = 1211, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 687, cluster = 65, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 1211, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -7500, x_size = 2808, y_size = -1500} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 0, y_origin = -7500, x_size = 2808, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 642, cluster = 79, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 468, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -77,13 +83,15 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -9000, x_size = 0, y_size = -1500} + { fragmentLine = 7 + , fragmentRect = Rect {x_origin = 0, y_origin = -9000, x_size = 0, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -10500, x_size = 4156, y_size = -1500} + { fragmentLine = 8 + , fragmentRect = Rect {x_origin = 0, y_origin = -10500, x_size = 4156, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 687, cluster = 90, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 1211, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -94,7 +102,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -12000, x_size = 1960, y_size = -1500} + { fragmentLine = 9 + , fragmentRect = Rect {x_origin = 0, y_origin = -12000, x_size = 1960, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 687, cluster = 95, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 1211, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/ligature.golden b/.golden/paragraphLayout/ligature.golden index 31b7f3a..db87f96 100644 --- a/.golden/paragraphLayout/ligature.golden +++ b/.golden/paragraphLayout/ligature.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 4672, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 4672, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 76, cluster = 0, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/ligatureParagraphBreak1.golden b/.golden/paragraphLayout/ligatureParagraphBreak1.golden index c617651..0afb90e 100644 --- a/.golden/paragraphLayout/ligatureParagraphBreak1.golden +++ b/.golden/paragraphLayout/ligatureParagraphBreak1.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 2162, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 2162, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 76, cluster = 0, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -13,7 +14,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 2104, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 2104, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 76, cluster = 5, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -24,7 +26,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 402, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 402, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 87, cluster = 10, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 402, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/ligatureParagraphBreak2.golden b/.golden/paragraphLayout/ligatureParagraphBreak2.golden index 32e2d4e..8987a7a 100644 --- a/.golden/paragraphLayout/ligatureParagraphBreak2.golden +++ b/.golden/paragraphLayout/ligatureParagraphBreak2.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1772, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1772, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 76, cluster = 0, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -13,7 +14,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 1361, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 1361, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 428, cluster = 4, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 643, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -22,7 +24,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 1535, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 1535, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 8, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/lineHeightLarger.golden b/.golden/paragraphLayout/lineHeightLarger.golden index d406926..a1302ae 100644 --- a/.golden/paragraphLayout/lineHeightLarger.golden +++ b/.golden/paragraphLayout/lineHeightLarger.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 522, y_size = -1600} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 522, y_size = -1600} , fragmentPen = (0, -1172) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 3, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/lineHeightNormal.golden b/.golden/paragraphLayout/lineHeightNormal.golden index 1a6b074..dffc3fc 100644 --- a/.golden/paragraphLayout/lineHeightNormal.golden +++ b/.golden/paragraphLayout/lineHeightNormal.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 522, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 522, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 3, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/lineHeightSmaller.golden b/.golden/paragraphLayout/lineHeightSmaller.golden index 64cc2d5..802a170 100644 --- a/.golden/paragraphLayout/lineHeightSmaller.golden +++ b/.golden/paragraphLayout/lineHeightSmaller.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 522, y_size = -599} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 522, y_size = -599} , fragmentPen = (0, -671) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 3, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/loremIpsum100em.golden b/.golden/paragraphLayout/loremIpsum100em.golden index 5ff920e..98ddbc9 100644 --- a/.golden/paragraphLayout/loremIpsum100em.golden +++ b/.golden/paragraphLayout/loremIpsum100em.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 95412, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 95412, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 47, cluster = 4, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 507, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -221,7 +222,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 98954, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 98954, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 70, cluster = 217, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 452, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -448,7 +450,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 4041, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 4041, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 79, cluster = 441, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 273, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/loremIpsum20em.golden b/.golden/paragraphLayout/loremIpsum20em.golden index adb6e92..1a99529 100644 --- a/.golden/paragraphLayout/loremIpsum20em.golden +++ b/.golden/paragraphLayout/loremIpsum20em.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 18310, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 18310, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 47, cluster = 4, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 507, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -48,7 +49,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17443, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17443, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 44, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -92,7 +94,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 19791, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 19791, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 76, cluster = 83, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -142,7 +145,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 17562, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 17562, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 56, cluster = 128, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 688, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -185,7 +189,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 18769, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 18769, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 166, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -235,7 +240,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 19226, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 19226, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 211, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -281,7 +287,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 17973, y_size = -1121} + { fragmentLine = 7 + , fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 17973, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 71, cluster = 252, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 589, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -328,7 +335,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 18971, y_size = -1121} + { fragmentLine = 8 + , fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 18971, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 294, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -378,7 +386,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 17239, y_size = -1121} + { fragmentLine = 9 + , fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 17239, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 40, cluster = 339, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 580, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -421,7 +430,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 19199, y_size = -1121} + { fragmentLine = 10 + , fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 19199, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 83, cluster = 377, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 589, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -469,7 +479,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 12076, y_size = -1121} + { fragmentLine = 11 + , fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 12076, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 80, cluster = 422, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 861, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/manySpaces.golden b/.golden/paragraphLayout/manySpaces.golden index 84572e7..d6d355a 100644 --- a/.golden/paragraphLayout/manySpaces.golden +++ b/.golden/paragraphLayout/manySpaces.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 3132, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 3132, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 3, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -15,7 +16,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 3132, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 3132, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 10, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -27,7 +29,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 3132, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 3132, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 18, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -39,7 +42,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 3132, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 3132, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 27, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/mixedLanguageLTR.golden b/.golden/paragraphLayout/mixedLanguageLTR.golden index d235568..f758c46 100644 --- a/.golden/paragraphLayout/mixedLanguageLTR.golden +++ b/.golden/paragraphLayout/mixedLanguageLTR.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 4837, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 4837, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 4, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -23,7 +24,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 4837, y_origin = 0, x_size = 1276, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 4837, y_origin = 0, x_size = 1276, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 0, cluster = 15, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 500, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/mixedScriptWords.golden b/.golden/paragraphLayout/mixedScriptWords.golden index a33438a..e7bdb35 100644 --- a/.golden/paragraphLayout/mixedScriptWords.golden +++ b/.golden/paragraphLayout/mixedScriptWords.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 777, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 7, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -12,7 +13,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 777, y_origin = 0, x_size = 2335, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 777, y_origin = 0, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 10, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 786, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -21,7 +23,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 3112, y_origin = 0, x_size = 777, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 3112, y_origin = 0, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 16, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -30,7 +33,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 777, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 20, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -39,7 +43,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 777, y_origin = -1121, x_size = 2335, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 777, y_origin = -1121, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 23, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 786, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -48,7 +53,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 3112, y_origin = -1121, x_size = 777, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 3112, y_origin = -1121, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 29, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -57,7 +63,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 2335, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 33, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 786, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -66,7 +73,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 2335, y_origin = -2242, x_size = 777, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 2335, y_origin = -2242, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 39, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -75,7 +83,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 3112, y_origin = -2242, x_size = 2335, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 3112, y_origin = -2242, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 42, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 786, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -84,7 +93,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 2335, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 49, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 786, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -93,7 +103,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 2335, y_origin = -3363, x_size = 777, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 2335, y_origin = -3363, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 55, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 262, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -102,7 +113,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 3112, y_origin = -3363, x_size = 2335, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 3112, y_origin = -3363, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 58, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 786, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -111,21 +123,24 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 253, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 253, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 65, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 253, y_origin = -4484, x_size = 763, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 253, y_origin = -4484, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 66, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 763, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 1016, y_origin = -4484, x_size = 737, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 1016, y_origin = -4484, x_size = 737, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 68, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -134,14 +149,16 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 1753, y_origin = -4484, x_size = 763, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 1753, y_origin = -4484, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 71, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 763, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 2516, y_origin = -4484, x_size = 484, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 2516, y_origin = -4484, x_size = 484, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 73, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -149,42 +166,48 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 3000, y_origin = -4484, x_size = 763, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 3000, y_origin = -4484, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 75, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 763, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 3763, y_origin = -4484, x_size = 253, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 3763, y_origin = -4484, x_size = 253, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 77, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 4016, y_origin = -4484, x_size = 763, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 4016, y_origin = -4484, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 78, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 763, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 763, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 81, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 763, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 763, y_origin = -5605, x_size = 253, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 763, y_origin = -5605, x_size = 253, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 77, cluster = 83, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) ] } , Fragment - { fragmentRect = Rect {x_origin = 1016, y_origin = -5605, x_size = 763, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 1016, y_origin = -5605, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 758, cluster = 84, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 763, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/spannedArabicFiller20em.golden b/.golden/paragraphLayout/spannedArabicFiller20em.golden index 4857114..9807e88 100644 --- a/.golden/paragraphLayout/spannedArabicFiller20em.golden +++ b/.golden/paragraphLayout/spannedArabicFiller20em.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 12652, y_origin = 0, x_size = 7198, y_size = -1500} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 12652, y_origin = 0, x_size = 7198, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 38, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -30,7 +31,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 7060, y_origin = 0, x_size = 5592, y_size = -1500} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 7060, y_origin = 0, x_size = 5592, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 702, cluster = 56, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 1248, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -50,7 +52,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 7060, y_size = -1500} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 7060, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 283, cluster = 93, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 388, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -78,7 +81,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 14850, y_origin = -1500, x_size = 4045, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 14850, y_origin = -1500, x_size = 4045, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 293, cluster = 113, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 270, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -97,7 +101,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 9168, y_origin = -1500, x_size = 5682, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 9168, y_origin = -1500, x_size = 5682, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 145, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -122,7 +127,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 3213, y_origin = -1500, x_size = 5955, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 3213, y_origin = -1500, x_size = 5955, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 293, cluster = 174, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 270, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -147,7 +153,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 3213, y_size = -1500} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 3213, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 90, cluster = 191, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 272, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -162,7 +169,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 14300, y_origin = -3000, x_size = 4862, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 14300, y_origin = -3000, x_size = 4862, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 216, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -184,7 +192,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 10225, y_origin = -3000, x_size = 4075, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 10225, y_origin = -3000, x_size = 4075, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 1311, cluster = 232, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 575, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -202,7 +211,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 3898, y_origin = -3000, x_size = 6327, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 3898, y_origin = -3000, x_size = 6327, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 264, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -227,7 +237,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3000, x_size = 3898, y_size = -1500} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -3000, x_size = 3898, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 935, cluster = 280, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 476, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -241,7 +252,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 12238, y_origin = -4500, x_size = 2357, y_size = -1500} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 12238, y_origin = -4500, x_size = 2357, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 935, cluster = 293, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 476, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -256,7 +268,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 5880, y_origin = -4500, x_size = 6358, y_size = -1500} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 5880, y_origin = -4500, x_size = 6358, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 323, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 236, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -282,7 +295,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4500, x_size = 5880, y_size = -1500} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -4500, x_size = 5880, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = [ (GlyphInfo {codepoint = 90, cluster = 356, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 272, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/.golden/paragraphLayout/spannedLoremIpsum20em.golden b/.golden/paragraphLayout/spannedLoremIpsum20em.golden index c74a2c1..86578dd 100644 --- a/.golden/paragraphLayout/spannedLoremIpsum20em.golden +++ b/.golden/paragraphLayout/spannedLoremIpsum20em.golden @@ -3,7 +3,8 @@ ParagraphLayout , spanLayouts = [ SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 8747, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 8747, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 47, cluster = 4, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 507, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -30,7 +31,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 8747, y_origin = 0, x_size = 9563, y_size = -1121} + { fragmentLine = 1 + , fragmentRect = Rect {x_origin = 8747, y_origin = 0, x_size = 9563, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 86, cluster = 22, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 446, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -60,7 +62,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 8553, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 8553, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 44, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -90,7 +93,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 8553, y_origin = -1121, x_size = 8890, y_size = -1121} + { fragmentLine = 2 + , fragmentRect = Rect {x_origin = 8553, y_origin = -1121, x_size = 8890, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 71, cluster = 65, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 589, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -116,7 +120,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 9114, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 9114, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 76, cluster = 83, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 253, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -146,7 +151,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 9114, y_origin = -2242, x_size = 7467, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 9114, y_origin = -2242, x_size = 7467, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 104, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -170,7 +176,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 16581, y_origin = -2242, x_size = 3210, y_size = -1121} + { fragmentLine = 3 + , fragmentRect = Rect {x_origin = 16581, y_origin = -2242, x_size = 3210, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 119, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 231, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -184,7 +191,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 3799, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 3799, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 56, cluster = 128, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 688, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -201,7 +209,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 3799, y_origin = -3363, x_size = 7878, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 3799, y_origin = -3363, x_size = 7878, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 68, cluster = 136, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 522, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -226,7 +235,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 11677, y_origin = -3363, x_size = 5885, y_size = -1121} + { fragmentLine = 4 + , fragmentRect = Rect {x_origin = 11677, y_origin = -3363, x_size = 5885, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 152, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 231, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -245,7 +255,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 5686, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 5686, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 166, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -267,7 +278,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 5686, y_origin = -4484, x_size = 8592, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 5686, y_origin = -4484, x_size = 8592, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 88, cluster = 179, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 574, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -296,7 +308,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 14278, y_origin = -4484, x_size = 4491, y_size = -1121} + { fragmentLine = 5 + , fragmentRect = Rect {x_origin = 14278, y_origin = -4484, x_size = 4491, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 199, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 231, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -313,7 +326,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 1301, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 1301, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 211, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -325,7 +339,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 1301, y_origin = -5605, x_size = 11041, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 1301, y_origin = -5605, x_size = 11041, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 214, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -355,7 +370,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 12342, y_origin = -5605, x_size = 6884, y_size = -1121} + { fragmentLine = 6 + , fragmentRect = Rect {x_origin = 12342, y_origin = -5605, x_size = 6884, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 235, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 231, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -380,7 +396,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 10089, y_size = -1121} + { fragmentLine = 7 + , fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 10089, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 71, cluster = 252, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 589, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -411,7 +428,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 10089, y_origin = -6726, x_size = 7884, y_size = -1121} + { fragmentLine = 7 + , fragmentRect = Rect {x_origin = 10089, y_origin = -6726, x_size = 7884, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 274, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 231, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -439,7 +457,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 8158, y_size = -1121} + { fragmentLine = 8 + , fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 8158, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 72, cluster = 294, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 559, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -466,7 +485,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 8158, y_origin = -7847, x_size = 6988, y_size = -1121} + { fragmentLine = 8 + , fragmentRect = Rect {x_origin = 8158, y_origin = -7847, x_size = 6988, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 312, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 231, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -492,7 +512,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 15146, y_origin = -7847, x_size = 3825, y_size = -1121} + { fragmentLine = 8 + , fragmentRect = Rect {x_origin = 15146, y_origin = -7847, x_size = 3825, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 83, cluster = 329, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 589, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -507,7 +528,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 4594, y_size = -1121} + { fragmentLine = 9 + , fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 4594, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 40, cluster = 339, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 580, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -525,7 +547,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 4594, y_origin = -8968, x_size = 10907, y_size = -1121} + { fragmentLine = 9 + , fragmentRect = Rect {x_origin = 4594, y_origin = -8968, x_size = 10907, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 348, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 231, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -559,7 +582,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 15501, y_origin = -8968, x_size = 1738, y_size = -1121} + { fragmentLine = 9 + , fragmentRect = Rect {x_origin = 15501, y_origin = -8968, x_size = 1738, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 81, cluster = 373, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 574, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -568,7 +592,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 6426, y_size = -1121} + { fragmentLine = 10 + , fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 6426, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 83, cluster = 377, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 589, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -591,7 +616,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 6426, y_origin = -10089, x_size = 5590, y_size = -1121} + { fragmentLine = 10 + , fragmentRect = Rect {x_origin = 6426, y_origin = -10089, x_size = 5590, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 391, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 231, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -614,7 +640,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 12016, y_origin = -10089, x_size = 7183, y_size = -1121} + { fragmentLine = 10 + , fragmentRect = Rect {x_origin = 12016, y_origin = -10089, x_size = 7183, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 82, cluster = 405, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 590, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -634,7 +661,8 @@ ParagraphLayout ] } , Fragment - { fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 2652, y_size = -1121} + { fragmentLine = 11 + , fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 2652, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 80, cluster = 422, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 861, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -649,7 +677,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 2652, y_origin = -11210, x_size = 5383, y_size = -1121} + { fragmentLine = 11 + , fragmentRect = Rect {x_origin = 2652, y_origin = -11210, x_size = 5383, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 3, cluster = 428, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 231, y_advance = 0, x_offset = 0, y_offset = 0}) @@ -671,7 +700,8 @@ ParagraphLayout , SpanLayout [ Fragment - { fragmentRect = Rect {x_origin = 8035, y_origin = -11210, x_size = 4041, y_size = -1121} + { fragmentLine = 11 + , fragmentRect = Rect {x_origin = 8035, y_origin = -11210, x_size = 4041, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = [ (GlyphInfo {codepoint = 79, cluster = 441, unsafeToBreak = False, unsafeToConcat = False, safeToInsertTatweel = False}, GlyphPos {x_advance = 273, y_advance = 0, x_offset = 0, y_offset = 0}) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e764fb..aa04318 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ * Future-proofed `ParagraphOptions` and `SpanOptions` by hiding their constructors. Use `defaultParagraphOptions` and `defaultSpanOptions` instead. +* Added line numbers to laid out fragments. + ## 0.3.0.1 -- TBD * Increased font size for the "shaped runs" output so that it better fits diff --git a/lib/Data/Text/ParagraphLayout/Plain.hs b/lib/Data/Text/ParagraphLayout/Plain.hs index 1714843..3a27d5b 100644 --- a/lib/Data/Text/ParagraphLayout/Plain.hs +++ b/lib/Data/Text/ParagraphLayout/Plain.hs @@ -30,7 +30,13 @@ module Data.Text.ParagraphLayout.Plain , layoutPlain , ParagraphLayout (ParagraphLayout, paragraphRect, spanLayouts) , SpanLayout (SpanLayout) - , Fragment (Fragment, fragmentPen, fragmentRect, fragmentGlyphs) + , Fragment + ( Fragment + , fragmentLine + , fragmentRect + , fragmentPen + , fragmentGlyphs + ) ) where diff --git a/src/Data/Text/ParagraphLayout/Internal/Fragment.hs b/src/Data/Text/ParagraphLayout/Internal/Fragment.hs index b403b2a..cb56279 100644 --- a/src/Data/Text/ParagraphLayout/Internal/Fragment.hs +++ b/src/Data/Text/ParagraphLayout/Internal/Fragment.hs @@ -19,7 +19,12 @@ import Data.Text.ParagraphLayout.Internal.Rect -- or because it contains glyphs from multiple scripts. data Fragment = Fragment - { fragmentRect :: Rect Int32 + { fragmentLine :: Int + -- ^ Logical number of the line box holding the fragment, starting at 1. + -- Fragments with the same line number are on the same line and will not be + -- separated by page breaks. + + , fragmentRect :: Rect Int32 -- ^ Physical position of the fragment within the paragraph, calculated -- using all glyph advances in this fragment and the calculated line height. -- diff --git a/src/Data/Text/ParagraphLayout/Internal/Plain.hs b/src/Data/Text/ParagraphLayout/Internal/Plain.hs index fa9e715..78f6928 100644 --- a/src/Data/Text/ParagraphLayout/Internal/Plain.hs +++ b/src/Data/Text/ParagraphLayout/Internal/Plain.hs @@ -70,7 +70,8 @@ layoutAndAlignLines :: Int32 -> NonEmpty (WithSpan Run) -> [WithSpan Fragment] layoutAndAlignLines maxWidth runs = frags where frags = concatMap NonEmpty.toList fragsInLines - (_, fragsInLines) = mapAccumL positionLineH originY canonicalLines + (_, fragsInLines) = mapAccumL positionLineH originY numberedLines + numberedLines = zip [1 ..] canonicalLines canonicalLines = fmap reorder logicalLines logicalLines = nonEmptyItems $ layoutLines maxWidth runs originY = paragraphOriginY @@ -102,24 +103,25 @@ layoutLines maxWidth runs = case nonEmpty rest of -- @vertical-align: top@ in CSS. -- -- TODO: For rich text, allow other types of vertical alignment. -positionLineH :: Int32 -> NonEmpty (WithSpan PF.ProtoFragment) -> +positionLineH :: Int32 -> (Int, NonEmpty (WithSpan PF.ProtoFragment)) -> (Int32, NonEmpty (WithSpan Fragment)) -positionLineH originY pfs = (nextY, frags) +positionLineH originY (line, pfs) = (nextY, frags) where nextY = maximum $ fmap y_min rects rects = fmap (\ (WithSpan _ r) -> fragmentRect r) frags - (_, frags) = mapAccumL (positionFragmentH originY) originX pfs + (_, frags) = mapAccumL (positionFragmentH line originY) originX pfs originX = paragraphOriginX -- | Position the given horizontal fragment on a line, -- using @originY@ as its top edge and @originX@ as its left edge, -- returning the X coordinate of its right edge for continuation. -positionFragmentH :: - Int32 -> Int32 -> WithSpan PF.ProtoFragment -> (Int32, WithSpan Fragment) -positionFragmentH originY originX (WithSpan rs pf) = (nextX, WithSpan rs frag) +positionFragmentH :: Int -> Int32 -> Int32 -> WithSpan PF.ProtoFragment -> + (Int32, WithSpan Fragment) +positionFragmentH line originY originX (WithSpan rs pf) = + (nextX, WithSpan rs frag) where nextX = originX + PF.advance pf - frag = Fragment rect (penX, penY) (PF.glyphs pf) + frag = Fragment line rect (penX, penY) (PF.glyphs pf) rect = Rect originX originY (PF.advance pf) (-lineHeight) penX = 0 penY = descent + leading `div` 2 - lineHeight diff --git a/test/Data/Text/ParagraphLayout/PrettyShow.hs b/test/Data/Text/ParagraphLayout/PrettyShow.hs index 5638eda..b145feb 100644 --- a/test/Data/Text/ParagraphLayout/PrettyShow.hs +++ b/test/Data/Text/ParagraphLayout/PrettyShow.hs @@ -82,11 +82,15 @@ instance PrettyShow Plain.SpanLayout where ] instance PrettyShow Plain.Fragment where - prettyShow (Plain.Fragment r pen glyphs) = concat + prettyShow (Plain.Fragment l r pen glyphs) = concat [ "Fragment" , newline , indent3 - , "{ fragmentRect = " + , "{ fragmentLine = " + , show l + , newline + , indent3 + , ", fragmentRect = " , show r , newline , indent3 -- 2.30.2