@x
@p function adjust_excess(p:pointer;r:real):scaled;
@y
@p function adjust_excess(p:pointer;r:glue_ratio):scaled;
@z

@x
   d:=abs(v+char_width(f)(i)-r*w);
@y
   d:=abs(v+char_width(f)(i)-glue_mult(r,w));
@z

@x
     dd:=abs(v+char_width(ff)(ii)-r*w);
@y
     dd:=abs(v+char_width(ff)(ii)-glue_mult(r,w));
@z

@x
     x:=x-adjust_excess(link(q),(gw+x)/gw);
@y
 { |adjust_excess| tries to make up the excess~|x| by stretching the glyphs
    by the factor |gw+x/gw| (represented as a |glue_ratio| value). }
     x:=x-adjust_excess(link(q),glue_fix(gw,gw+x,gw));
@z