if unknown font_stretch: font_stretch:=1; fi

def subscr(expr n) =
 if numeric n: n elseif string n: ASCII n fi
enddef;

let BEGINCHAR = beginchar;
def beginchar(expr n, w, h, d) =
 BEGINCHAR(n,(w)+(w)*(font_stretch-1)*char_stretch[subscr(n)],h,d)
enddef;

% this is for fonts based on exbase.mf which use
% beginchar_twice instead of beginchar
let BEGINCHAR_TWICE = beginchar_twice;
def beginchar_twice(expr n, w, h, d) =
 BEGINCHAR_TWICE(n,(w)+(w)*(font_stretch-1)*char_stretch[subscr(n)],h,d)
enddef;