Merge pull request #192 from behdad/jfkthame-stch
[issue 191] Make apply_stch() give a more precise fit
This commit is contained in:
commit
dee0fbf9e2
|
@ -542,7 +542,18 @@ apply_stch (const hb_ot_shape_plan_t *plan,
|
|||
|
||||
hb_position_t w_remaining = w_total - w_fixed - overlap;
|
||||
if (sign * w_remaining > sign * w_repeating && sign * w_repeating > 0)
|
||||
n_copies = (sign * w_remaining + sign * w_repeating / 4) / (sign * w_repeating) - 1;
|
||||
n_copies = (sign * w_remaining) / (sign * w_repeating) - 1;
|
||||
|
||||
/* See if we can improve the fit by adding an extra repeat and squeezing them together a bit. */
|
||||
hb_position_t extra_repeat_overlap = 0;
|
||||
hb_position_t shortfall = sign * w_remaining - sign * w_repeating * (n_copies + 1);
|
||||
if (shortfall > 0)
|
||||
{
|
||||
++n_copies;
|
||||
hb_position_t excess = (n_copies + 1) * sign * w_repeating - sign * w_remaining;
|
||||
if (excess > 0)
|
||||
extra_repeat_overlap = excess / (n_copies * n_repeating);
|
||||
}
|
||||
|
||||
if (step == MEASURE)
|
||||
{
|
||||
|
@ -568,6 +579,8 @@ apply_stch (const hb_ot_shape_plan_t *plan,
|
|||
for (unsigned int n = 0; n < repeat; n++)
|
||||
{
|
||||
x_offset -= extents.width;
|
||||
if (n > 0)
|
||||
x_offset += extra_repeat_overlap;
|
||||
pos[k - 1].x_offset = x_offset;
|
||||
/* Append copy. */
|
||||
--j;
|
||||
|
|
Loading…
Reference in New Issue