| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
Update affected test outputs.
|
|
|
|
|
|
| |
Add an api to serialize PangoAttrList.
This will be useful in testing and debugging.
|
|\
| |
| |
| |
| | |
Rewrite process_item
See merge request GNOME/pango!509
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We must not add the width of the space back to
remaining_width, since we're just correcting the
glyphs to match the accounting that process_item
has already done.
This was showing up as justification operating
on wrong numbers when justifying lines with a
final space, leading to uneven margins.
|
| | |
|
| |
| |
| |
| |
| | |
It fails there (although it shouldn't), and I
don't have the means to debug it.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Our asan ci is unforgiving, and point out
every memory leak.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is not an entire rewrite, the basic approach
to fitting items is still the same. The main difference
here is that we shape and measure a possible breakpoint
before accepting it as candidate for breaking. This
is necessary to ensure that we have accurate width
information when making decisions about this
breakpoint - the width we are calculating based on
log widths is only an approximation (due to things
like clusters, hyphens, final spaces, etc).
To avoid excessive shaping, we only do this extra
work when we are close to the end of the line.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Generate random string that looks like a sentence.
* Measure the size at 100 random widths.
* assert that for those widths, when sorted, the measured widths
are increasing and the heights are decreasing.
* Generate random string that looks like a sentence.
* Generate a 2nd string adding hyphen + newline after every char of
original string.
* Assert that wrap-char wrap with width=0 is not larger than the width
of the 2nd string
The tests also generate random strings in LTR, RTL or both at the same
time to spice the test up even more.
It does that by picking random words out of hunspell directories, and if
none are installed, it falls back to lorem ipsum.
|
|\ \
| | |
| | |
| | |
| | | |
build: Bump the harfbuzz req
See merge request GNOME/pango!511
|
|/ /
| |
| |
| |
| |
| |
| | |
We are using the hb metrics api in more places
now, so just require 2.6.0 where it was introduced.
That version is almost 2 years old now, so that
is hopefully not too much of a burden.
|
|\ \
| |/
|/|
| |
| | |
pango-view: Remove debug spew
See merge request GNOME/pango!508
|
|/ |
|
|\
| |
| |
| |
| | |
More line breaking fixes
See merge request GNOME/pango!507
|
| |
| |
| |
| | |
Some of the layout tests now get better line breaks.
|
| | |
|
| |
| |
| |
| |
| | |
It turns out that we do need to look for longer breakpoints
after all if we want to find optimal solutions.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When looking for breakpoints, we were assuming that
there is no point to keep looking forward once we
hit a spot where the broken off part is too long.
But with hyphen insertion, that is no longer true,
necessarily. Consider 'bli '. Breaking after 'bl'
will insert 'bl-', which might be longer than
'bli', which is what will be inserted when we
break after the i.
To fix this, keep looking for breakpoints as long
as there is still a chance to find one.
|
| |
| |
| |
| |
| | |
We always need to check if we still fit, after shaping.
The width we use before is just an estimate.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The key insight here is that if we find a broken item
does not fit, we are only interested in finding an
*earlier* breakpoint - the later ones aren't going
to produce a shorter run.
So we can just keep track of the last char we want
to allow breaking at.
This fixes the case of finding the minimum width
with wrap mode PANGO_WRAP_WORD.
|
|/ |
|
|\
| |
| |
| |
| |
| |
| | |
Fix a bug in Small Caps handling
Closes #627
See merge request GNOME/pango!505
|
| | |
|
|/
|
|
|
|
|
|
|
| |
We were not passing the correct split_offset to
pango_item_split().
Testcase included.
Fixes: #627
|
|\
| |
| |
| |
| | |
Simplify breakpoint disabling
See merge request GNOME/pango!504
|
| | |
|
| |
| |
| |
| | |
This keeps spiraling :(
|
| |
| |
| |
| |
| |
| | |
If the break is at the end of the item, we
were forgetting to check for the space before
the break.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When we are breaking after a space, we must not
count the width of the space towards the line,
since we are zeroing it later.
It is a bit annoying that there are multiple places
where this has to be taken into account.
Another missing bit in this code is that we are
only looking at a single whitespace character before
the break, when we should really look for a sequence
of spaces.
|
| |
| |
| |
| |
| | |
When unsplitting an item, we were sometimes
calculating the remaining_width incorrectly.
|
| |
| |
| |
| | |
We can use the log_widths that we already have.
|
|/
|
|
|
|
| |
We only want this inside process_item, so we can
make this a purely local thing, without modifying
log_attrs.
|
|\
| |
| |
| |
| | |
Cosmetics
See merge request GNOME/pango!503
|
|/ |
|
|\
| |
| |
| |
| | |
coretext: correctly clamp the core text weights at min/max values
See merge request GNOME/pango!502
|
| |
| |
| |
| | |
Addresses bug found in #624
|
|\ \
| | |
| | |
| | |
| | | |
layout: Try harder to not produce overlong lines
See merge request GNOME/pango!501
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Our accounting for run lengths is imperfect (mainly
due to log widths for clusters being evenly distributed),
so it can happen that after reshaping the split item,
we find that it does not actually fit in the remaining
width. Previously, we would just use the split run
at that point and produce an overlong line. Instead,
undo the split, disable the breakpoint we used, and
try again.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This undoes the effect of pango_item_split.
We will use this in future commits.
Private for now.
|
| | |
| | |
| | |
| | | |
This will let us use some of them during layout.
|
| | |
| | |
| | |
| | |
| | |
| | | |
GTK frequently uses this width during measuring,
so it is good if we can reproduce what happens
in this case.
|
| | |
| | |
| | |
| | | |
This can make it easier to reproduce problems.
|
|/ / |
|
|\ \
| |/
|/|
| |
| | |
layout: Fix a poblem with hyphen width
See merge request GNOME/pango!500
|
| | |
|
| |
| |
| |
| | |
This checks behavior that is required by GTK.
|