@KitRedgrave@glitch.social For speech bubbles, IS2 draws its text straight into memory one (fixed-width) letter at a time. I just replaced that function with a function that draws text in using a variable-width font. It doesn't do word-wrapping or any fancy kerning; it just draws a letter, moves forwards a particular number of pixels, draws another letter, etc, until it reaches an end-of-line control code, then continues on the next line, etc, until it hits an end-of-text code.
@KitRedgrave@glitch.social Because I had the disassembly handy, I could use that for reference, too, so most of my code is based on that, but instead of always moving forwards 12 pixels (the original font width), it reads from a table based on what letter it drew and moves forwards that amount instead.