Java Print API - Пробел неправильно напечатан с использованием моноширинного шрифта Courier New.

Позвольте мне сначала описать картинку ниже:

  • Есть два печатных документа. Единственное различие между ними состоит в том, что несколько пробелов "" на бумаге слева заменены точкой "". персонаж в документе справа.
  • Красная линия представляет левую границу, по которой должен быть выровнен текст.
  • Зеленая кривая представляет мое намерение выровнять все символы, которые она соединяет, в один столбец. На самом деле зеленая кривая должна быть вертикальной линией.

enter image description here

Я хочу, чтобы все символы, выделенные зеленой линией, были напечатаны в одном столбце.

Шрифт строки - моноширинный Courier New. Однако кажется, что пробелы не печатаются как моноширинные (см. «Пунктирные» линии и строки с пробелами в начале).

Для печати строки я использую стандартный API службы печати Java поверх компонента JTextPane:

PrinterJob pj = PrinterJob.getPrinterJob(); 
pj.setPrintable(myTextPane);
pj.print();

Насколько мне известно, API службы печати Java фактически вызывает методы paint () myTextPane. Поэтому предварительный просмотр должен выглядеть точно так же, как печатная версия String.

Однако это не так. Предварительный просмотр, похоже, не неверно интерпретирует моноширинные символы пробела (см. Последнее изображение). Предварительный просмотр выглядит именно так, как я хочу, чтобы текст был напечатан.

enter image description here

Есть предложения, как заставить JavaPrintServiceAPI правильно печатать символы моноширинного пробела?

6
задан Michal Vician 11 January 2012 в 11:17
поделиться