This (C++) article might assist you: "Using Subscripts and Superscripts When Showing Text in the Device Context:" [
^].
Have you looked into using Unicode Escape formatting to produce subscript ... I'm not sure if that works with PrintDocument.
If you do end up using a RichTextBox, see this MSDN article in addition to the link Sergey cites: [
^].
If you find a good solution, I'd like to suggest you post it here as a 'Tip/Trick.'