There are 2 things that could work from what I can see right now.
The first would be to split the String into a char array, then after the rotate go 1-by-1 incrementing the font size (+1 or 2 if bolded) so that they line up, going top to bottom.
The second way would be to make your own font, which I wouldn't recommend. If you draw the String before the rotation, then when it rotates hypothetically if you made the font correctly it will display as it should.
If I can think of another way I will post it.
Edit:
final AffineTransform at = new AffineTransform();
final Font font = g.getFont();
// Derive a new font using a rotatation transform (Theta is angle in radians).
at.rotate(theta);
final Font newFont = font.deriveFont(at);
// set the derived font in the Graphics2D context
g2d.setFont(newFont);
// Render a label instance of type String using the derived font
g2d.drawString(label, x, y);
So, to draw vertically that would be a rotate of 270 degrees, or 3/2 * pi