From 2a2cdd51f9c7560ff2eb6e92a2fe3a4b75b54e1c Mon Sep 17 00:00:00 2001 From: Jaro Date: Wed, 10 May 2023 07:50:14 +0200 Subject: [PATCH] Add ancestor boxes to interface. --- .../loremIpsum20em.golden | 22 ++++++ .../spannedArabicFiller20em.golden | 28 ++++++++ .../loremIpsum20em.golden | 22 ++++++ .../paragraphLayout/arabicFiller20em.golden | 8 +++ .golden/paragraphLayout/czechHello.golden | 2 + .../czechHelloParagraphNarrow.golden | 10 +++ .../czechHelloParagraphUltraNarrow.golden | 22 ++++++ .golden/paragraphLayout/devanagari.golden | 2 + .../paragraphLayout/devanagariAccent.golden | 2 + .../devanagariPrefixedAccent.golden | 2 + .golden/paragraphLayout/hardBreaksLTR.golden | 18 +++++ .golden/paragraphLayout/hardBreaksRTL.golden | 18 +++++ .golden/paragraphLayout/ligature.golden | 2 + .../ligatureParagraphBreak1.golden | 6 ++ .../ligatureParagraphBreak2.golden | 6 ++ .../paragraphLayout/lineHeightLarger.golden | 2 + .../paragraphLayout/lineHeightNormal.golden | 2 + .../paragraphLayout/lineHeightSmaller.golden | 2 + .../paragraphLayout/loremIpsum100em.golden | 6 ++ .golden/paragraphLayout/loremIpsum20em.golden | 22 ++++++ .golden/paragraphLayout/manySpaces.golden | 8 +++ .../paragraphLayout/mixedLanguageLTR.golden | 4 ++ .../paragraphLayout/mixedScriptWords.golden | 46 ++++++++++++ .../spannedArabicFiller20em.golden | 28 ++++++++ .../spannedLoremIpsum20em.golden | 60 ++++++++++++++++ .../richParagraphLayout/loremIpsum20em.golden | 22 ++++++ .golden/richParagraphLayout/mixedSizes.golden | 10 +++ .../richParagraphLayout/nestedBoxes.golden | 6 ++ CHANGELOG.md | 4 ++ balkon.cabal | 1 + lib/Data/Text/ParagraphLayout/Plain.hs | 10 +++ lib/Data/Text/ParagraphLayout/Rich.hs | 11 +++ .../ParagraphLayout/Internal/AncestorBox.hs | 70 +++++++++++++++++++ .../Text/ParagraphLayout/Internal/Fragment.hs | 29 +++++++- .../Text/ParagraphLayout/Internal/Layout.hs | 2 +- .../Text/ParagraphLayout/Internal/Plain.hs | 10 ++- .../Internal/Rich/ParagraphLayout.hs | 2 +- test/Data/Text/ParagraphLayout/PrettyShow.hs | 7 +- 38 files changed, 528 insertions(+), 6 deletions(-) create mode 100644 src/Data/Text/ParagraphLayout/Internal/AncestorBox.hs diff --git a/.golden/paginatedParagraphLayout/loremIpsum20em.golden b/.golden/paginatedParagraphLayout/loremIpsum20em.golden index 906feb6..3aafe8a 100644 --- a/.golden/paginatedParagraphLayout/loremIpsum20em.golden +++ b/.golden/paginatedParagraphLayout/loremIpsum20em.golden @@ -5,6 +5,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 18310, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -52,6 +54,8 @@ , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17443, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -105,6 +109,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 19791, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -157,6 +163,8 @@ , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17562, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -202,6 +210,8 @@ , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 18769, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -254,6 +264,8 @@ , Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 19226, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -302,6 +314,8 @@ , Fragment { fragmentUserData = () , fragmentLine = 7 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 17973, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -351,6 +365,8 @@ , Fragment { fragmentUserData = () , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 18971, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -410,6 +426,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 17239, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -455,6 +473,8 @@ , Fragment { fragmentUserData = () , fragmentLine = 10 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 19199, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -505,6 +525,8 @@ , Fragment { fragmentUserData = () , fragmentLine = 11 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 12076, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paginatedParagraphLayout/spannedArabicFiller20em.golden b/.golden/paginatedParagraphLayout/spannedArabicFiller20em.golden index 6c8aeb7..bdffa12 100644 --- a/.golden/paginatedParagraphLayout/spannedArabicFiller20em.golden +++ b/.golden/paginatedParagraphLayout/spannedArabicFiller20em.golden @@ -5,6 +5,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 12652, y_origin = 0, x_size = 7198, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -34,6 +36,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 7060, y_origin = 0, x_size = 5592, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -56,6 +60,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 7060, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -86,6 +92,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 14850, y_origin = -1500, x_size = 4045, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -107,6 +115,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 9168, y_origin = -1500, x_size = 5682, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -134,6 +144,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3213, y_origin = -1500, x_size = 5955, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -161,6 +173,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 3213, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -218,6 +232,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 14300, y_origin = 0, x_size = 4862, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -242,6 +258,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 10225, y_origin = 0, x_size = 4075, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -262,6 +280,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3898, y_origin = 0, x_size = 6327, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -289,6 +309,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 3898, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -305,6 +327,8 @@ , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 12238, y_origin = -1500, x_size = 2357, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -322,6 +346,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 5880, y_origin = -1500, x_size = 6358, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -350,6 +376,8 @@ [ Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 5880, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = diff --git a/.golden/paginatedRichParagraphLayout/loremIpsum20em.golden b/.golden/paginatedRichParagraphLayout/loremIpsum20em.golden index ae48c65..862469f 100644 --- a/.golden/paginatedRichParagraphLayout/loremIpsum20em.golden +++ b/.golden/paginatedRichParagraphLayout/loremIpsum20em.golden @@ -4,6 +4,8 @@ [ Fragment { fragmentUserData = "text" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 18310, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -51,6 +53,8 @@ , Fragment { fragmentUserData = "text" , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17443, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -103,6 +107,8 @@ [ Fragment { fragmentUserData = "text" , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 19791, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -155,6 +161,8 @@ , Fragment { fragmentUserData = "text" , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17562, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -200,6 +208,8 @@ , Fragment { fragmentUserData = "text" , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 18769, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -252,6 +262,8 @@ , Fragment { fragmentUserData = "text" , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 19226, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -300,6 +312,8 @@ , Fragment { fragmentUserData = "text" , fragmentLine = 7 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 17973, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -349,6 +363,8 @@ , Fragment { fragmentUserData = "text" , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 18971, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -407,6 +423,8 @@ [ Fragment { fragmentUserData = "text" , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 17239, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -452,6 +470,8 @@ , Fragment { fragmentUserData = "text" , fragmentLine = 10 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 19199, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -502,6 +522,8 @@ , Fragment { fragmentUserData = "text" , fragmentLine = 11 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 12076, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/arabicFiller20em.golden b/.golden/paragraphLayout/arabicFiller20em.golden index dedea39..b5e19b7 100644 --- a/.golden/paragraphLayout/arabicFiller20em.golden +++ b/.golden/paragraphLayout/arabicFiller20em.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 19850, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -61,6 +63,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 18895, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -120,6 +124,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3000, x_size = 19162, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -174,6 +180,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4500, x_size = 14595, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/czechHello.golden b/.golden/paragraphLayout/czechHello.golden index 0a998ec..0cbb174 100644 --- a/.golden/paragraphLayout/czechHello.golden +++ b/.golden/paragraphLayout/czechHello.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 5274, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/czechHelloParagraphNarrow.golden b/.golden/paragraphLayout/czechHelloParagraphNarrow.golden index 3ef8270..7b6084d 100644 --- a/.golden/paragraphLayout/czechHelloParagraphNarrow.golden +++ b/.golden/paragraphLayout/czechHelloParagraphNarrow.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1234, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -15,6 +17,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 1089, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -26,6 +30,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 948, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -36,6 +42,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 961, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -46,6 +54,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 835, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/czechHelloParagraphUltraNarrow.golden b/.golden/paragraphLayout/czechHelloParagraphUltraNarrow.golden index f1553a0..9f75e2a 100644 --- a/.golden/paragraphLayout/czechHelloParagraphUltraNarrow.golden +++ b/.golden/paragraphLayout/czechHelloParagraphUltraNarrow.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 663, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -14,6 +16,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 571, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -23,6 +27,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 590, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -32,6 +38,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 253, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -41,6 +49,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 246, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -50,6 +60,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 446, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -59,6 +71,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 7 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 502, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -68,6 +82,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 559, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -77,6 +93,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 402, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -86,6 +104,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 10 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 559, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -95,6 +115,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 11 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 276, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/devanagari.golden b/.golden/paragraphLayout/devanagari.golden index 1a662f4..b815e62 100644 --- a/.golden/paragraphLayout/devanagari.golden +++ b/.golden/paragraphLayout/devanagari.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 8640, y_size = -1630} , fragmentPen = (0, -1171) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/devanagariAccent.golden b/.golden/paragraphLayout/devanagariAccent.golden index 5acc935..cb0028a 100644 --- a/.golden/paragraphLayout/devanagariAccent.golden +++ b/.golden/paragraphLayout/devanagariAccent.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 645, y_size = -1000} , fragmentPen = (0, -500) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/devanagariPrefixedAccent.golden b/.golden/paragraphLayout/devanagariPrefixedAccent.golden index 597417b..c2b8862 100644 --- a/.golden/paragraphLayout/devanagariPrefixedAccent.golden +++ b/.golden/paragraphLayout/devanagariPrefixedAccent.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 0, y_size = -1000} , fragmentPen = (0, -500) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/hardBreaksLTR.golden b/.golden/paragraphLayout/hardBreaksLTR.golden index fede313..6ab1480 100644 --- a/.golden/paragraphLayout/hardBreaksLTR.golden +++ b/.golden/paragraphLayout/hardBreaksLTR.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1563, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -19,6 +21,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 3357, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -40,6 +44,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 1563, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -54,6 +60,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 4305, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -67,6 +75,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 861, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -76,6 +86,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 1563, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -90,6 +102,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 7 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 0, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -98,6 +112,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 3675, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -111,6 +127,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 1722, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/hardBreaksRTL.golden b/.golden/paragraphLayout/hardBreaksRTL.golden index 6d610ab..bfe580a 100644 --- a/.golden/paragraphLayout/hardBreaksRTL.golden +++ b/.golden/paragraphLayout/hardBreaksRTL.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 2808, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -19,6 +21,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 5852, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -40,6 +44,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3000, x_size = 2808, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -54,6 +60,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4500, x_size = 4884, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -68,6 +76,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -6000, x_size = 1211, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -77,6 +87,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -7500, x_size = 2808, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -91,6 +103,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 7 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -9000, x_size = 0, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -99,6 +113,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -10500, x_size = 4156, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -112,6 +128,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -12000, x_size = 1960, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/ligature.golden b/.golden/paragraphLayout/ligature.golden index 40619d6..e7e3734 100644 --- a/.golden/paragraphLayout/ligature.golden +++ b/.golden/paragraphLayout/ligature.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 4672, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/ligatureParagraphBreak1.golden b/.golden/paragraphLayout/ligatureParagraphBreak1.golden index 9d5e0f5..c841adc 100644 --- a/.golden/paragraphLayout/ligatureParagraphBreak1.golden +++ b/.golden/paragraphLayout/ligatureParagraphBreak1.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 2162, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -17,6 +19,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 2104, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -30,6 +34,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 402, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/ligatureParagraphBreak2.golden b/.golden/paragraphLayout/ligatureParagraphBreak2.golden index 7561457..678db38 100644 --- a/.golden/paragraphLayout/ligatureParagraphBreak2.golden +++ b/.golden/paragraphLayout/ligatureParagraphBreak2.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1772, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -17,6 +19,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 1361, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -28,6 +32,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 1535, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/lineHeightLarger.golden b/.golden/paragraphLayout/lineHeightLarger.golden index 24d08fa..9ef9836 100644 --- a/.golden/paragraphLayout/lineHeightLarger.golden +++ b/.golden/paragraphLayout/lineHeightLarger.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 522, y_size = -1600} , fragmentPen = (0, -1172) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/lineHeightNormal.golden b/.golden/paragraphLayout/lineHeightNormal.golden index faa15d4..b4aed99 100644 --- a/.golden/paragraphLayout/lineHeightNormal.golden +++ b/.golden/paragraphLayout/lineHeightNormal.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 522, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/lineHeightSmaller.golden b/.golden/paragraphLayout/lineHeightSmaller.golden index 003e592..64a00a6 100644 --- a/.golden/paragraphLayout/lineHeightSmaller.golden +++ b/.golden/paragraphLayout/lineHeightSmaller.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 522, y_size = -599} , fragmentPen = (0, -671) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/loremIpsum100em.golden b/.golden/paragraphLayout/loremIpsum100em.golden index d67b091..2b24b6a 100644 --- a/.golden/paragraphLayout/loremIpsum100em.golden +++ b/.golden/paragraphLayout/loremIpsum100em.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 95412, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -225,6 +227,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 98954, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -454,6 +458,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 4041, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/loremIpsum20em.golden b/.golden/paragraphLayout/loremIpsum20em.golden index d6002f2..ddf2e36 100644 --- a/.golden/paragraphLayout/loremIpsum20em.golden +++ b/.golden/paragraphLayout/loremIpsum20em.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 18310, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -52,6 +54,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17443, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -98,6 +102,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 19791, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -150,6 +156,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 17562, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -195,6 +203,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 18769, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -247,6 +257,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 19226, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -295,6 +307,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 7 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 17973, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -344,6 +358,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 18971, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -396,6 +412,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 17239, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -441,6 +459,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 10 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 19199, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -491,6 +511,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 11 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 12076, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/manySpaces.golden b/.golden/paragraphLayout/manySpaces.golden index 71b4c03..2060b76 100644 --- a/.golden/paragraphLayout/manySpaces.golden +++ b/.golden/paragraphLayout/manySpaces.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 3132, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -19,6 +21,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 3132, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -33,6 +37,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 3132, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -47,6 +53,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 3132, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/mixedLanguageLTR.golden b/.golden/paragraphLayout/mixedLanguageLTR.golden index 3659880..9584802 100644 --- a/.golden/paragraphLayout/mixedLanguageLTR.golden +++ b/.golden/paragraphLayout/mixedLanguageLTR.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 4837, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -27,6 +29,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 4837, y_origin = 0, x_size = 1276, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/mixedScriptWords.golden b/.golden/paragraphLayout/mixedScriptWords.golden index 28d3caf..2105e27 100644 --- a/.golden/paragraphLayout/mixedScriptWords.golden +++ b/.golden/paragraphLayout/mixedScriptWords.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -16,6 +18,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 777, y_origin = 0, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -27,6 +31,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3112, y_origin = 0, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -38,6 +44,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -49,6 +57,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 777, y_origin = -1121, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -60,6 +70,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3112, y_origin = -1121, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -71,6 +83,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -82,6 +96,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 2335, y_origin = -2242, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -93,6 +109,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3112, y_origin = -2242, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -104,6 +122,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -115,6 +135,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 2335, y_origin = -3363, x_size = 777, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -126,6 +148,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3112, y_origin = -3363, x_size = 2335, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -137,6 +161,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 253, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -146,6 +172,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 253, y_origin = -4484, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -155,6 +183,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 1016, y_origin = -4484, x_size = 737, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -166,6 +196,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 1753, y_origin = -4484, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -175,6 +207,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 2516, y_origin = -4484, x_size = 484, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -185,6 +219,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3000, y_origin = -4484, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -194,6 +230,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3763, y_origin = -4484, x_size = 253, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -203,6 +241,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 4016, y_origin = -4484, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -212,6 +252,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -221,6 +263,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 763, y_origin = -5605, x_size = 253, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -230,6 +274,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 1016, y_origin = -5605, x_size = 763, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/spannedArabicFiller20em.golden b/.golden/paragraphLayout/spannedArabicFiller20em.golden index 2bde95e..6538e9c 100644 --- a/.golden/paragraphLayout/spannedArabicFiller20em.golden +++ b/.golden/paragraphLayout/spannedArabicFiller20em.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 12652, y_origin = 0, x_size = 7198, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -34,6 +36,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 7060, y_origin = 0, x_size = 5592, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -56,6 +60,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 7060, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -86,6 +92,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 14850, y_origin = -1500, x_size = 4045, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -107,6 +115,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 9168, y_origin = -1500, x_size = 5682, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -134,6 +144,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3213, y_origin = -1500, x_size = 5955, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -161,6 +173,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1500, x_size = 3213, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -178,6 +192,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 14300, y_origin = -3000, x_size = 4862, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -202,6 +218,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 10225, y_origin = -3000, x_size = 4075, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -222,6 +240,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3898, y_origin = -3000, x_size = 6327, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -249,6 +269,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3000, x_size = 3898, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -265,6 +287,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 12238, y_origin = -4500, x_size = 2357, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -282,6 +306,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 5880, y_origin = -4500, x_size = 6358, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = @@ -310,6 +336,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4500, x_size = 5880, y_size = -1500} , fragmentPen = (0, -1085) , fragmentGlyphs = diff --git a/.golden/paragraphLayout/spannedLoremIpsum20em.golden b/.golden/paragraphLayout/spannedLoremIpsum20em.golden index ca8c66a..c3d7b8d 100644 --- a/.golden/paragraphLayout/spannedLoremIpsum20em.golden +++ b/.golden/paragraphLayout/spannedLoremIpsum20em.golden @@ -5,6 +5,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 8747, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -34,6 +36,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 8747, y_origin = 0, x_size = 9563, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -66,6 +70,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 8553, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -98,6 +104,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 8553, y_origin = -1121, x_size = 8890, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -126,6 +134,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 9114, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -158,6 +168,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 9114, y_origin = -2242, x_size = 7467, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -184,6 +196,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 16581, y_origin = -2242, x_size = 3210, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -200,6 +214,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 3799, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -219,6 +235,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3799, y_origin = -3363, x_size = 7878, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -246,6 +264,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 11677, y_origin = -3363, x_size = 5885, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -267,6 +287,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 5686, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -291,6 +313,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 5686, y_origin = -4484, x_size = 8592, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -322,6 +346,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 14278, y_origin = -4484, x_size = 4491, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -341,6 +367,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 1301, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -355,6 +383,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 1301, y_origin = -5605, x_size = 11041, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -387,6 +417,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 12342, y_origin = -5605, x_size = 6884, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -414,6 +446,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 7 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 10089, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -447,6 +481,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 7 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 10089, y_origin = -6726, x_size = 7884, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -477,6 +513,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 8158, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -506,6 +544,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 8158, y_origin = -7847, x_size = 6988, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -534,6 +574,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 15146, y_origin = -7847, x_size = 3825, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -551,6 +593,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 4594, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -571,6 +615,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 4594, y_origin = -8968, x_size = 10907, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -607,6 +653,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 15501, y_origin = -8968, x_size = 1738, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -618,6 +666,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 10 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 6426, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -643,6 +693,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 10 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 6426, y_origin = -10089, x_size = 5590, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -668,6 +720,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 10 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 12016, y_origin = -10089, x_size = 7183, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -690,6 +744,8 @@ ParagraphLayout , Fragment { fragmentUserData = () , fragmentLine = 11 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 2652, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -707,6 +763,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 11 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 2652, y_origin = -11210, x_size = 5383, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -731,6 +789,8 @@ ParagraphLayout [ Fragment { fragmentUserData = () , fragmentLine = 11 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 8035, y_origin = -11210, x_size = 4041, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/richParagraphLayout/loremIpsum20em.golden b/.golden/richParagraphLayout/loremIpsum20em.golden index 1f4a458..ede3a66 100644 --- a/.golden/richParagraphLayout/loremIpsum20em.golden +++ b/.golden/richParagraphLayout/loremIpsum20em.golden @@ -4,6 +4,8 @@ ParagraphLayout [ Fragment { fragmentUserData = "text" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 18310, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -51,6 +53,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 2 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -1121, x_size = 17443, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -97,6 +101,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 3 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -2242, x_size = 19791, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -149,6 +155,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 4 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -3363, x_size = 17562, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -194,6 +202,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 5 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -4484, x_size = 18769, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -246,6 +256,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 6 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -5605, x_size = 19226, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -294,6 +306,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 7 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -6726, x_size = 17973, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -343,6 +357,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 8 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -7847, x_size = 18971, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -395,6 +411,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 9 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -8968, x_size = 17239, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -440,6 +458,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 10 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -10089, x_size = 19199, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -490,6 +510,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text" , fragmentLine = 11 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = -11210, x_size = 12076, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/richParagraphLayout/mixedSizes.golden b/.golden/richParagraphLayout/mixedSizes.golden index afff56f..4d27003 100644 --- a/.golden/richParagraphLayout/mixedSizes.golden +++ b/.golden/richParagraphLayout/mixedSizes.golden @@ -4,6 +4,8 @@ ParagraphLayout [ Fragment { fragmentUserData = "bigText1" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 1651, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -16,6 +18,8 @@ ParagraphLayout , Fragment { fragmentUserData = "smallText1" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 1651, y_origin = 0, x_size = 1956, y_size = -841} , fragmentPen = (0, -699) , fragmentGlyphs = @@ -30,6 +34,8 @@ ParagraphLayout , Fragment { fragmentUserData = "bigText2" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 3607, y_origin = 0, x_size = 1651, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -42,6 +48,8 @@ ParagraphLayout , Fragment { fragmentUserData = "smallText2" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 5258, y_origin = 0, x_size = 1956, y_size = -841} , fragmentPen = (0, -699) , fragmentGlyphs = @@ -56,6 +64,8 @@ ParagraphLayout , Fragment { fragmentUserData = "bigText3" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 7214, y_origin = 0, x_size = 1420, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/.golden/richParagraphLayout/nestedBoxes.golden b/.golden/richParagraphLayout/nestedBoxes.golden index 15940d2..74c04e2 100644 --- a/.golden/richParagraphLayout/nestedBoxes.golden +++ b/.golden/richParagraphLayout/nestedBoxes.golden @@ -4,6 +4,8 @@ ParagraphLayout [ Fragment { fragmentUserData = "text1" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 0, y_origin = 0, x_size = 8569, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -31,6 +33,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text2" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 8569, y_origin = 0, x_size = 3350, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = @@ -46,6 +50,8 @@ ParagraphLayout , Fragment { fragmentUserData = "text3" , fragmentLine = 1 + , fragmentAncestorBoxes = + [] , fragmentRect = Rect {x_origin = 11919, y_origin = 0, x_size = 2657, y_size = -1121} , fragmentPen = (0, -932) , fragmentGlyphs = diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b0fe57..5b8789f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,10 @@ * Added line numbers to laid out fragments. +* Added information about ancestor boxes of laid out fragments. + The plain text interface implicitly generates one box per span, while + the rich text interface gives the user direct control over the box hierarchy. + ## 0.3.0.1 -- TBD * Increased font size for the "shaped runs" output so that it better fits diff --git a/balkon.cabal b/balkon.cabal index 41fb4ad..1a78a30 100644 --- a/balkon.cabal +++ b/balkon.cabal @@ -104,6 +104,7 @@ library balkon-internal -- Modules exported to tests and to the public part of the library. exposed-modules: + Data.Text.ParagraphLayout.Internal.AncestorBox, Data.Text.ParagraphLayout.Internal.ApplyBoxes, Data.Text.ParagraphLayout.Internal.BiDiReorder, Data.Text.ParagraphLayout.Internal.BoxOptions, diff --git a/lib/Data/Text/ParagraphLayout/Plain.hs b/lib/Data/Text/ParagraphLayout/Plain.hs index 4471eb0..1a65cfb 100644 --- a/lib/Data/Text/ParagraphLayout/Plain.hs +++ b/lib/Data/Text/ParagraphLayout/Plain.hs @@ -35,13 +35,23 @@ module Data.Text.ParagraphLayout.Plain ( Fragment , fragmentUserData , fragmentLine + , fragmentAncestorBoxes , fragmentRect , fragmentPen , fragmentGlyphs ) + , AncestorBox + ( AncestorBox + , boxUserData + , boxLeftSpacing + , boxRightSpacing + , boxStartSpacing + , boxEndSpacing + ) ) where +import Data.Text.ParagraphLayout.Internal.AncestorBox import Data.Text.ParagraphLayout.Internal.Fragment import Data.Text.ParagraphLayout.Internal.LineHeight import Data.Text.ParagraphLayout.Internal.ParagraphOptions diff --git a/lib/Data/Text/ParagraphLayout/Rich.hs b/lib/Data/Text/ParagraphLayout/Rich.hs index fac6ef7..5a3ca15 100644 --- a/lib/Data/Text/ParagraphLayout/Rich.hs +++ b/lib/Data/Text/ParagraphLayout/Rich.hs @@ -45,13 +45,24 @@ module Data.Text.ParagraphLayout.Rich ( Fragment , fragmentUserData , fragmentLine + , fragmentAncestorBoxes , fragmentRect , fragmentPen , fragmentGlyphs ) + , fragmentSpacedRect + , AncestorBox + ( AncestorBox + , boxUserData + , boxLeftSpacing + , boxRightSpacing + , boxStartSpacing + , boxEndSpacing + ) ) where +import Data.Text.ParagraphLayout.Internal.AncestorBox import Data.Text.ParagraphLayout.Internal.BoxOptions import Data.Text.ParagraphLayout.Internal.Fragment import Data.Text.ParagraphLayout.Internal.LineHeight diff --git a/src/Data/Text/ParagraphLayout/Internal/AncestorBox.hs b/src/Data/Text/ParagraphLayout/Internal/AncestorBox.hs new file mode 100644 index 0000000..44911a1 --- /dev/null +++ b/src/Data/Text/ParagraphLayout/Internal/AncestorBox.hs @@ -0,0 +1,70 @@ +module Data.Text.ParagraphLayout.Internal.AncestorBox + ( AncestorBox (..) + , totalLeftSpacing + , totalRightSpacing + ) +where + +import Data.Int (Int32) +import Data.Maybe (catMaybes) + +-- | Describes the relationship of a fragment to an inline box that contains it. +-- +-- A box can have many fragments, and a fragment contained by a box is also +-- contained by all ancestors of that box. +-- +-- The root inline box, which forms the basis of each paragraph, is implied +-- and not described by this type of record. +data AncestorBox d = AncestorBox + + { boxUserData :: d + -- ^ User-defined data associated with the inline box. + + , boxLeftSpacing :: Maybe Int32 + -- ^ `Just` an amount of empty space to add to the left side + -- of the fragment on account of this inline box, or `Nothing` + -- if this is not the leftmost fragment of this inline box. + -- + -- Equal to `boxStartSpacing` for LTR boxes. + -- + -- Equal to `boxEndSpacing` for RTL boxes. + + , boxRightSpacing :: Maybe Int32 + -- ^ `Just` an amount of empty space to add to the right side + -- of the fragment on account of this inline box, or `Nothing` + -- if this is not the rightmost fragment of this inline box. + -- + -- Equal to `boxStartSpacing` for RTL boxes. + -- + -- Equal to `boxEndSpacing` for LTR boxes. + + , boxStartSpacing :: Maybe Int32 + -- ^ `Just` an amount of empty space to add to the start side + -- of the fragment on account of this inline box, or `Nothing` + -- if this is not the startmost fragment of this inline box. + -- + -- Equal to `boxLeftSpacing` for LTR boxes. + -- + -- Equal to `boxRightSpacing` for RTL boxes. + + , boxEndSpacing :: Maybe Int32 + -- ^ `Just` an amount of empty space to add to the end side + -- of the fragment on account of this inline box, or `Nothing` + -- if this is not the endmost fragment of this inline box. + -- + -- Equal to `boxLeftSpacing` for RTL boxes. + -- + -- Equal to `boxRightSpacing` for LTR boxes. + + } + deriving (Eq, Read, Show) + +-- | Amount of empty space to add to the left side +-- on account of all given boxes in sum. +totalLeftSpacing :: [AncestorBox d] -> Int32 +totalLeftSpacing bs = sum $ catMaybes $ map boxLeftSpacing bs + +-- | Amount of empty space to add to the right side +-- on account of all given boxes in sum. +totalRightSpacing :: [AncestorBox d] -> Int32 +totalRightSpacing bs = sum $ catMaybes $ map boxRightSpacing bs diff --git a/src/Data/Text/ParagraphLayout/Internal/Fragment.hs b/src/Data/Text/ParagraphLayout/Internal/Fragment.hs index 4e19411..1b67537 100644 --- a/src/Data/Text/ParagraphLayout/Internal/Fragment.hs +++ b/src/Data/Text/ParagraphLayout/Internal/Fragment.hs @@ -1,12 +1,15 @@ module Data.Text.ParagraphLayout.Internal.Fragment ( Fragment (..) , ShapedRun - , shapedRun) + , fragmentSpacedRect + , shapedRun + ) where import Data.Int (Int32) import Data.Text.Glyphize (GlyphInfo, GlyphPos) +import Data.Text.ParagraphLayout.Internal.AncestorBox import Data.Text.ParagraphLayout.Internal.Rect -- | A unit of text laid out in a rectangular area. @@ -28,6 +31,11 @@ data Fragment d = Fragment -- Fragments with the same line number are on the same line and will not be -- separated by page breaks. + , fragmentAncestorBoxes :: [AncestorBox d] + -- ^ Information about inline boxes which contain this fragment + -- (starting from the nearest ancestor and continuing upwards through the + -- tree, up to but excluding the root) and the spacing required by them. + , fragmentRect :: Rect Int32 -- ^ Physical position of the fragment within the paragraph, calculated -- using all glyph advances in this fragment and the calculated line height. @@ -43,6 +51,8 @@ data Fragment d = Fragment -- the area to draw on -- you need FreeType or a similar library for that. -- -- The origin coordinates are relative to the paragraph. + -- + -- This is the CSS equivalent of /content box/, before adding box spacing. , fragmentPen :: (Int32, Int32) -- ^ Coordinates of the initial pen position, from which the first glyph @@ -56,6 +66,23 @@ data Fragment d = Fragment } deriving (Eq, Read, Show) +-- | Physical position of the fragment within the paragraph, with spacing +-- added to the glyph advances. This is the space that the fragment takes up +-- in the paragraph. +fragmentSpacedRect :: Fragment d -> Rect Int32 +fragmentSpacedRect (Fragment { fragmentRect = r, fragmentAncestorBoxes = bs }) + | x_size r >= 0 = r + { x_origin = x_origin r - leftSpacing + , x_size = x_size r + leftSpacing + rightSpacing + } + | otherwise = r + { x_origin = x_origin r + rightSpacing + , x_size = x_size r - leftSpacing - rightSpacing + } + where + leftSpacing = totalLeftSpacing bs + rightSpacing = totalRightSpacing bs + -- | A simplified representation of a box fragment, suitable for passing to a -- text drawing library but lacking detailed size information. type ShapedRun = (Int32, Int32, [(GlyphInfo, GlyphPos)]) diff --git a/src/Data/Text/ParagraphLayout/Internal/Layout.hs b/src/Data/Text/ParagraphLayout/Internal/Layout.hs index 6569583..8e898e0 100644 --- a/src/Data/Text/ParagraphLayout/Internal/Layout.hs +++ b/src/Data/Text/ParagraphLayout/Internal/Layout.hs @@ -104,7 +104,7 @@ positionFragmentH line originY originX (WithSpan rs pf) = (nextX, WithSpan rs frag) where nextX = originX + PF.advance pf - frag = Fragment userData line rect (penX, penY) (PF.glyphs pf) + frag = Fragment userData line [] rect (penX, penY) (PF.glyphs pf) userData = RS.spanUserData rs rect = Rect originX originY (PF.advance pf) (-lineHeight) penX = 0 diff --git a/src/Data/Text/ParagraphLayout/Internal/Plain.hs b/src/Data/Text/ParagraphLayout/Internal/Plain.hs index 394694f..50e9e80 100644 --- a/src/Data/Text/ParagraphLayout/Internal/Plain.hs +++ b/src/Data/Text/ParagraphLayout/Internal/Plain.hs @@ -4,6 +4,7 @@ where import Data.Text.Glyphize (Direction (DirLTR)) +import Data.Text.ParagraphLayout.Internal.AncestorBox import Data.Text.ParagraphLayout.Internal.BoxOptions import Data.Text.ParagraphLayout.Internal.Fragment import Data.Text.ParagraphLayout.Internal.ParagraphOptions @@ -71,5 +72,10 @@ getSpanIndex :: Fragment (Int, d) -> Int getSpanIndex Fragment { fragmentUserData = (i, _) } = i stripSpanIndex :: Fragment (Int, d) -> Fragment d -stripSpanIndex f = case fragmentUserData f of - (_, d) -> f { fragmentUserData = d } +stripSpanIndex f = f + { fragmentUserData = snd (fragmentUserData f) + , fragmentAncestorBoxes = map stripSpanIndexInBox (fragmentAncestorBoxes f) + } + +stripSpanIndexInBox :: AncestorBox (Int, d) -> AncestorBox d +stripSpanIndexInBox ab = ab { boxUserData = snd (boxUserData ab) } diff --git a/src/Data/Text/ParagraphLayout/Internal/Rich/ParagraphLayout.hs b/src/Data/Text/ParagraphLayout/Internal/Rich/ParagraphLayout.hs index d2e5be1..50e4c99 100644 --- a/src/Data/Text/ParagraphLayout/Internal/Rich/ParagraphLayout.hs +++ b/src/Data/Text/ParagraphLayout/Internal/Rich/ParagraphLayout.hs @@ -35,7 +35,7 @@ instance Line (ParagraphLayout d) where -- | Wrap the given `Fragment`s and compute their containing rectangle. paragraphLayout :: [Fragment d] -> ParagraphLayout d paragraphLayout frags = ParagraphLayout pRect frags - where pRect = containRects $ map fragmentRect frags + where pRect = containRects $ map fragmentSpacedRect frags -- | A `ParagraphLayout` with no fragments. -- Useful as an identity element for `appendFragments`. diff --git a/test/Data/Text/ParagraphLayout/PrettyShow.hs b/test/Data/Text/ParagraphLayout/PrettyShow.hs index 29d122c..455bdf9 100644 --- a/test/Data/Text/ParagraphLayout/PrettyShow.hs +++ b/test/Data/Text/ParagraphLayout/PrettyShow.hs @@ -109,7 +109,7 @@ instance Show d => PrettyShow (Plain.SpanLayout d) where ] instance Show d => PrettyShow (Fragment d) where - prettyShow (Fragment d l r pen glyphs) = concat + prettyShow (Fragment d l bs r pen glyphs) = concat [ "Fragment" , newline , indent3 @@ -121,6 +121,11 @@ instance Show d => PrettyShow (Fragment d) where , show l , newline , indent3 + , ", fragmentAncestorBoxes =" + , newline + , concat $ commaFirstList indent4 $ map show bs + , newline + , indent3 , ", fragmentRect = " , show r , newline -- 2.30.2