so the routine is a bit weird, but VWF is doable
060230d6 is where the width is pulled in. this grabs a word from 002d682c that is the size. Then there is a check at 060230de to see if the size is 12, and if it is, do the correct routine
what you can do is patch at 060230e4 to change r1 to the desired width
you can change 060230da to be extu.w r1,r0, giving you 060230dc to be a free word (which I change to e108).
This might be enought to BSR to a new area to properly return the width of a given font
looks like this is a global width for the text. This still needs to be traced to see where it actually applies.
060232e2 reads a long from 060ffab8 into r13 and adds it to R1.This is probably where you want to do the VFW, with R13 being width << 16
r11 is the position of the character, r7 is the line numberr8 is the character address that will be read (read as word) so 060232e2 needs to be replaced, basically a new sub that you pass in R8, read as word, figure out the width of that read, perform read <<= 16, return as r13
06023376 is a free word;
at 0602324c, do a mov #e8,r2 and change 0602324e to be extu.b r2,r2 instead. This frees up 0602336e, which we can fill with 1b9c. We have 06023334 point to do a word read at 0602336e, and we now have a long freed up at 06023374 to slap an address into