+ Real break_penalties = 0.0;
+ Grob *pc = this_one.cols_.back ();
+ if (pc->original ())
+ {
+ SCM pen = pc->get_property ("line-break-penalty");
+ if (scm_is_number (pen) && fabs (scm_to_double (pen)) < 10000)
+ break_penalties += scm_to_double (pen);
+ }
+
+ /*
+ Q: do we want globally non-cramped lines, or locally equally
+ cramped lines?
+
+ There used to be an example file input/test/uniform-breaking to
+ demonstrate problems with this approach. When music is gradually
+ becoming denser, the uniformity requirement makes lines go from
+ cramped to even more cramped (because going from cramped
+ 3meas/line to relatively loose 2meas/line is such a big step.
+
+ */
+
+ Real demerit = abs (this_one.force_) + abs (prev.force_ - this_one.force_)
+ + break_penalties;
+
+ if (!this_one.satisfies_constraints_)
+ {
+ /*
+ If it doesn't satisfy constraints, we make this one
+ really unattractive.
+
+ add 20000 to the demerits, so that a break penalty
+ of -10000 won't change the result */
+ demerit = max ((demerit + 20000), 2000.0);
+
+ demerit *= 10;
+ }
+
+ return demerit;