It would make sense, if the message box frame is rendered before the characters themselves, that the game does a first pass for the whole text box to count how long each line is, then how long the longest line is. That maximum is the width of the message box frame (not counting the edges).
Chances are that, in your case, instead of counting pixels, it's counting how many letters there are, then using that count to repeat an instruction elsewhere (drawing the message box in chunks?).
You could put a breakpoint on the text itself to find the routine.
Then you could make it so that count is fixed, or determined by the game when it detects a character at the very beginning (shift-jis standard has many to spare, either for this, or even dictionary compression with a dictionary reference you could stuff in the otherwise useless huge font graphic) or deduced with a formula from that maximum count.
I find it more impressive that you figured out where the fixed width value was, and how you modified that. If you don't mind, please share your method
It's amazing that you figured out something for London Seirei Tanteidan. It was high time it got translated
Did you change the text routine internally to detect 1-byte characters to keep memory shortages from happening?
I've also dug into the ASM and have managed to perform a very basic hack to change the spacing of font characters on screen so that they aren't as distant from each other. Nothing fancy at all, just a 1 byte change from 13 (12px font width + 1 space) to 9.
An 8 pixel wide font would be good, but a 6px one (like this one from Xenogears, that ended up being rendered as 8px because of technical issues) would fit even more text, and more importantly would make message box frame width calculations (should you decide to go the more complicated route of reworking it) much, much easier since it would be a division by 2.