From: Joe Neeman <joeneeman@gmail.com>
Date: Fri, 14 Nov 2008 19:05:43 +0000 (-0800)
Subject: Add BAD_SPACING_PENALTY as a penalty rather than a force.
X-Git-Tag: release/2.13.1-1~61^2~8
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=4bfe4d8c7247fe6c3271d65e6f023ba90a28cf46;p=lilypond.git

Add BAD_SPACING_PENALTY as a penalty rather than a force.
---

diff --git a/lily/page-breaking.cc b/lily/page-breaking.cc
index 47bbd16fc3..c265f38d72 100644
--- a/lily/page-breaking.cc
+++ b/lily/page-breaking.cc
@@ -1077,19 +1077,13 @@ Page_breaking::space_systems_on_2_pages (vsize configuration, vsize first_page_n
       page1_line_count += cached_line_details_[i].compressed_nontitle_lines_count_;
       page2_line_count += cached_line_details_[cached_line_details_.size () - 1 - i].compressed_nontitle_lines_count_;
 
-      // NOTE: we treat max-systems-per-page and min-systems-per-page as soft
-      // constraints. That is, we penalize harshly when they don't happen
-      // but we don't completely reject.
-      page1_force[i] = line_count_penalty (page1_line_count) 
-	+ (ragged1 && page1.force_ < 0 && i > 0) ? infinity_f : page1.force_;
+      page1_force[i] = + (ragged1 && page1.force_ < 0 && i > 0) ? infinity_f : page1.force_;
 
       if (ragged2)
 	page2_force[page2_force.size () - 1 - i] =
 	  (page2.force_ < 0 && i + 1 < page1_force.size ()) ? infinity_f : 0;
       else
 	page2_force[page2_force.size () - 1 - i] = page2.force_;
-
-      page2_force[page2_force.size () - 1 - i] += line_count_penalty (page2_line_count);
     }
 
   /* find the position that minimises the sum of the page forces */
@@ -1099,7 +1093,12 @@ Page_breaking::space_systems_on_2_pages (vsize configuration, vsize first_page_n
     {
       Real f = page1_force[i] * page1_force[i] + page2_force[i] * page2_force[i];
       Real uneven = 2 * (page1_force[i] - page2_force[i]);
+
+      // NOTE: we treat max-systems-per-page and min-systems-per-page as soft
+      // constraints. That is, we penalize harshly when they don't happen
+      // but we don't completely reject.
       Real dem = uneven * uneven + f
+	+ line_count_penalty (i+1) + line_count_penalty (page2_force.size () - i)
 	+ cached_line_details_[i+1].page_penalty_
 	+ cached_line_details_.back ().page_penalty_ + cached_line_details_.back ().turn_penalty_;
       if (dem < best_demerits)