Позвольте мне сначала описать картинку ниже:
Я хочу, чтобы все символы, выделенные зеленой линией, были напечатаны в одном столбце.
Шрифт строки - моноширинный Courier New. Однако кажется, что пробелы не печатаются как моноширинные (см. «Пунктирные» линии и строки с пробелами в начале).
Для печати строки я использую стандартный API службы печати Java поверх компонента JTextPane:
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(myTextPane);
pj.print();
Насколько мне известно, API службы печати Java фактически вызывает методы paint () myTextPane. Поэтому предварительный просмотр должен выглядеть точно так же, как печатная версия String.
Однако это не так. Предварительный просмотр, похоже, не неверно интерпретирует моноширинные символы пробела (см. Последнее изображение). Предварительный просмотр выглядит именно так, как я хочу, чтобы текст был напечатан.
Есть предложения, как заставить JavaPrintServiceAPI правильно печатать символы моноширинного пробела?