better implementation of non-ascii text drawing
apparently digit width is more reliable

char_width may be affected by double-width characters in some cases
handle wide characters

the cursor doesn't handle wide characters though - this won't be
possible until i actually do start keeping a logical layout of the
terminal screen rather than just the image