Ответ Лукаса Барана решает основную проблему, которая, вероятно, приводила к тому, что ваши результаты выглядели плохо Тем не менее, остается более тонкая проблема, которую вы не можете повторить кернингом таким образом. Насколько это серьезная проблема, зависит от используемого вами шрифта. Чтобы сделать кернинг правильным, вы можете сделать что-то вроде этого:
while (i != line.length()) {
String c = line.substring(i, i + 1);
String d = line.substring(0, i + 1);
int cWidth = g.getFontMetrics().stringWidth(c);
int dWidth = g.getFontMetrics().stringWidth(d);
g.drawString(c, xx + dWidth - cWidth, yy);
i++;
}
Это должно разместить каждого персонажа там, где его поместил бы кернинг.