better canvas text layout