TJSで厳密な両端揃えとかルビ処理って無理じゃね?
フォントの高さと幅しか取得できないのに何処にルビ置くんだ?
1行の高さと文字の前進幅が最低限取得できんとガッタガタになるだろ?

JavaME(CLDC+MIDP)でやった時文字グラフの情報が取得出来なくて全部自前で
持って両端揃えと文字上部に置くだけのルビ実装したがソースが恐ろしい事になったぞ。それ+禁則処理。改行とルビまたぐだけでガタガタ・・・orz

そもそも、日本語文書の処理ってゲームの範疇軽く超えてるんだよな。ADVエンジンはそこら変矛盾してるよ。
まあ、最近はFxやOOoがOSSなんでロジックなんて幾らでもパクれるんだが。