For those who asked for a tutorial, here it is:
1) Unpack ...\FinalFantasy8\Data\main.fs archive to get \Data\eng\sysfnt.tdw file.
2) Unpack ...\FinalFantasy8\Data\menu.fs to get \Data\eng\menu\hires\sysfld00.TEX and \Data\eng\menu\hires\sysfld01.TEX files.
3) Unpack ...\FinalFantasy8\Data\fields.fs and few more files that are inside. You need any .msd file. The dialogues from those files can be found in the game itself. Edit the dialogues by writing the complete codepage into them. Pack the archive back.
4) Convert TEX to BMP. Redraw the fonts. Put the BMP back into TEX.
5) Open \Data\eng\sysfnt.tdw file in any HEX-editor. You should see the header, something like: 080000006C0000008588888888B847757A779966554494779447898888885887 leave out the beginning, copy the rest (not everything, a small piece should be enough).
6) Download D3DWindower. Tweak the preferences. Launch the game in windowed mode.
7) Download CheatEngine. Hook it to the launched game process.
8 ) Play the game to get to the dialogue you need. You should see some crooked, misaligned letters.
9) Use CheatEngine to find the byte sequence you've copied before. It is most likely that you found only one entry. If it wasn't found, the mistake is either in the value, or it was made during the search (you need to find a byte array, the bytes should be separated with the spacebar symbols).
10) Add the address you've found to the list. Right click on the entry and choose "View in memory" option.
11) That's it. Now it's time to have some fun. You need to change a few bytes from "76" to "7F" - you'll see a huge space appearing after some of the characters. That's the quick way to find the beginning of the alphabet (or you can calculate it by yourself - it's glyph's index / 2) and then you can start adjusting the symbols width to make it look pretty.
12) After getting the result you want, copy your changes from Cheat Engine to \Data\eng\sysfnt.tdw. file. Save them. Pack the file. Launch the game and be happy.
Caution: It is STRONGLY recommended to copy your changes as often as possible, and not after everything is done, or use PrintScreen - when the game's closed or crashed (by accident) its memory will be unloaded and your changes will be gone so that you'll have to start it all over again.
One more thing: D3DWindower intercepts any key pressed even if its window is not active at the moment (or maybe it's just me who messed up the preferences), so it would be better to remap the keys which are responsible for in-game choice (to avoid a dialogue being closed) to some "safer" ones" which you won't press by accident (you will press them though, but who knows?)
A piece of advice: When changing values in memory, CheatEngine displays them in decimal format, so that "FF" value will be displayed as "255". But the font width data takes only half of a byte which is pretty inconvenient. BUT! It allows to enter the data in hexadecimal format. Thus if one symbol is floor(8*1,67) pixels wide and the other is floor(10*1,67), you won't need a calculator with bit offset support. You just have to write it the way it is: 0xA8 (don't forget the least significat bits are the 1st symbol, the most significant bits are for the next symbol).