aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2013-03-15 22:42:36 +0100
committerThomas White <taw@bitwiz.org.uk>2013-03-15 22:42:36 +0100
commitc2a43e72e4898659cf05bb8e68733f02a249e0a1 (patch)
tree7c3a5755eba2751cf7fae73ac14a46925c8e4a4d
parent704e09d069017c9e47c855a28f610a705cba1046 (diff)
Fix space distribution on last line
-rw-r--r--src/wrap.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/wrap.c b/src/wrap.c
index deee556..f47bf83 100644
--- a/src/wrap.c
+++ b/src/wrap.c
@@ -454,10 +454,37 @@ static enum wrap_box_space space(struct wrap_line *boxes, int i)
static void distribute_spaces_last_line(struct wrap_line *l, double w,
double sp)
{
+ int i;
int overfull = 0;
for ( i=0; i<l->n_boxes-1; i++ ) {
- l->boxes[i].sp = sp_x(l->boxes[i].space);
+ if ( sp < sp_zp(l->boxes[i].space) ) {
+ l->boxes[i].sp = sp_zp(l->boxes[i].space);
+ overfull = 1;
+ } else if ( sp > sp_x(l->boxes[i].space) ) {
+ l->boxes[i].sp = sp_x(l->boxes[i].space);
+ } else {
+ l->boxes[i].sp = sp;
+ }
+ }
+ l->boxes[l->n_boxes-1].sp = 0.0;
+ l->overfull = overfull;
+}
+
+
+static void distribute_spaces_normal_line(struct wrap_line *l, double w,
+ double sp)
+{
+ int i;
+ int overfull = 0;
+
+ for ( i=0; i<l->n_boxes-1; i++ ) {
+ if ( sp < sp_zp(l->boxes[i].space) ) {
+ l->boxes[i].sp = sp_zp(l->boxes[i].space);
+ overfull = 1;
+ } else {
+ l->boxes[i].sp = sp;
+ }
}
l->boxes[l->n_boxes-1].sp = 0.0;
l->overfull = overfull;
@@ -469,7 +496,6 @@ static void distribute_spaces(struct wrap_line *l, double w)
int i;
double total;
double sp;
- int overfull = 0;
total = 0.0;
for ( i=0; i<l->n_boxes; i++ ) {