+ int lo = 0;
+
+ int hi = (fm->count () - 1) >? 2;
+ Box b;
+
+ /* do a binary search for each Y, not very efficient, but passable? */
+ do
+ {
+ int cmp = (lo + hi) / 2;
+ b = fm->get_char (cmp);
+ if (b[Y_AXIS].empty_b () || b[Y_AXIS].length () > y)
+ hi = cmp;
+ else
+ lo = cmp;
+ }
+ while (hi - lo > 1);
+
+ Molecule m (fm->get_char_molecule (lo));
+ b=m.extent_box();
+ b[X_AXIS] = Interval (0,0);
+
+ return Molecule (b, m.get_expr());