+}
+
+void
+Fingering_column::do_x_positioning (Grob *me)
+{
+ extract_grob_set (me, "fingerings", fingerings);
+ if (!fingerings.size ())
+ return;
+
+ Grob *common_x = common_refpoint_of_array (fingerings, me, X_AXIS);
+
+ Real snap = robust_scm2double (me->get_property ("snap-radius"), 0.3);
+ vector<Fingering_and_offset> fos;
+
+ for (vsize i = 0; i < fingerings.size (); i++)
+ fos.push_back (Fingering_and_offset (fingerings[i], fingerings[i]->relative_coordinate (common_x, X_AXIS)));
+
+ vector_sort (fos, fingering_and_offset_less);
+ Direction dir = get_grob_direction (fingerings[0]);
+ if (dir == RIGHT)
+ reverse (fos);
+
+ Real prev = infinity_f * dir;
+ for (vsize i = 0; i < fos.size (); i++)
+ {
+ if ((fabs (fos[i].offset_ - prev) < snap)
+ && (fabs (fos[i].offset_ - prev) > EPS))
+ fos[i].offset_ = prev;
+
+ prev = fos[i].offset_;
+ }