Fix #134 and include a test for it. #175
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Try to ensure that using "the width computed during an unconstrained layout" as the width constraint during a relayout produces the same layout. Note, here I aim to also make this work for cases where the initial width limit isn't completely unconstrained. This is useful for certain UI layout algorithms.
Fixes #134
line_width
it needs to use the same exact float arithmetic that was used to compute the width that is compared againstline_width
when making line wrapping choices. Passing this width through as the LayoutLine width is the most convenient option without making more major changes to the API. Nevertheless, I am imagining that if we get a dedicated measurement method (i.e. that doesn't do the final positioning and alignment of glyphs and which cachesVec<VisualLine>
), then this width can just be exposed there instead of preserving it in LayoutLine.edit: one thing that I was going to mention here is that this means the width in LayoutLine might not as precisely match the positioned glyphs where their positions have been perturbed by different floating point errors.
fit_x
to checking whether potential addition to the current line width would exceed theline_width
. This avoids the float error being dependent on the providedline_width
value.Wrap::Word
inserts newline for trailing space (after word) #155 is addressed.opt-level=1
to keep test runtime down.fonts
folder for fonts used in tests.is_whitespace
, justification, and line breaks.