
Rendering text is quite a hard problem. Correct me if I'm wrong, but I think the approach you sketch assumes that there is a one-to-one mapping of characters to glyphs. This is fairly restrictive for English (e.g. no ligatures are possible); it is remarkably ungeneralisable to other languages. Most languages, even if written in the Latin script, require more sophisticated processing.
I imagine it may be a better approach to pass a string of (Unicode?) characters to a function that renders them all at once.
My wrapper does not require that the vector contains a list of only single glyphs. You could also iterate over glyph-pairs or glyph-triples just as easily. So as far as I know, there is no reason why you can't do "unicode" or "ligatures".