Как-то раз страдал такой задачей:
http://g0blinish.ucoz.ru/forblog/40.ZIP

Естественно, что косяки вылезают, не довел до конца. Быстрая печать реализуется за счет памяти - нужно три шрифта, где выполнены нужные сдвиги.