Was gonna say, for the kerning/spacing thing, without making it super complex, you could have an optional csv string property, with the widths of the characters in the same order, defaulting to monospaced as before if left blank.
For example with numbers :
Char set :
0123456789.-
Widths :
16,5,16,16,16,16,16,16,16,16,3,16
At least as a very quick and dirty workaround. :)