The diff says something like

    {
       Real yshift = config->y[LEFT] - 0.5 * staff_space;
-      if (abs (round(yshift) - yshift) < 0.01 * staff_space)
+      if (abs ((int)(yshift + 0.5) - yshift) < 0.01 * staff_space)
         config->add (parameters.HORIZONTAL_INTER_QUANT_PENALTY, "H");
     }

Now here is the problem: casting to int rounds towards zero.  For
negative yshift, the equation becomes mostly nonsensical I think.

For example, if yshift == -1, we get abs((int)-0.5 - -1) < ...
which is abs(1) < ....

I doubt that this is the intent.

Instead of casting to int, one would probably need to use the floor
function.

-- 
David Kastrup


_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to