Нафига свой шрифт?
Я для текстовых эфектов регулярно делаю по другому. Меряю ширину всх символов нужного шрифта нужного размера с 32 по 255 и забиваю в массив. А потом просто
_x+=sz[ord (s)-32];
Но сторку все равно анализировать нужно - чтобы переносы были корректные.