@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