Problemas para imprimir texto justificado usando PrinterJob

Senhores presciso de ajuda…

Tenho uma classe (DesenhaTermo.java) que estende de um JPanel e implementa uma Printable , onde tem a função de desenhar um texto recebido como argumento.

A classe que acessa esta primeira vem a ser uma destinada para impressão, a qual envia a string a ser imprimida para a classe DesenhaTermo.java pega o JPanel formado e envia para impressao através de um printjob.print();

O problema é que no formar o JPanel as linhas justificadas saem normais, isto é justificadas como eu queria, mas quando este JPanel é mandado para a impressão, a justificação cai fora, sendo que os paragrafos, centralizações, negritos continuam normalmente, ficando somente “desjustificado” …

obs: para desenhar o texto justificado eu uso um objeto TextLayout e seu método getJustifiedLayout assim:

      [code]  

//pega o que está na string e adiciona a str
AttributedString str = new AttributedString(line);

//adiciona as propriedades na fonte do texto
str.addAttribute (TextAttribute.FONT, new Font(FONTE, style,tamanho));

LineBreakMeasurer quebrador = new LineBreakMeasurer(str.getIterator(), gr.getFontRenderContext());

//inicializa layout
TextLayout linha = quebrador.nextLayout(larguraImprimivel);

//justifica linha
linha = linha.getJustifiedLayout(larguraImprimivel);

//Desenha a linha no JPanel
while (linha != null) {

            posY += linha.getAscent();
           
            linha.draw(gr, posX, posY);
           
           
            posY += linha.getDescent() + linha.getLeading();
           

            linha = quebrador.nextLayout(larguraImprimivel);
           

        }

[/code]

e para imprimir eu uso

[code]

    try {

//job é um objeto PrinterJob inicializado anteriormente assim como pageFormat que é um objeto PageFormat

     job.setPrintable (new DesenhaTermo(), pageFormat);
      
        
        if (job.printDialog()) {
       
        job.print();
            
                 }


    } catch (Exception pex) {
        System.err.println(" Erro ao imprimir  o termo " + pex);
    }
    [/code][/code]

descobri… a razao por não imprimir está na linha que diz

LineBreakMeasurer quebrador =  new LineBreakMeasurer(str.getIterator(),  gr.getFontRenderContext()); 

não pode pegar o FontRenderContext retornado do objeto gráfico gr, tem que criar um novo objeto, aí entaum funciona… assim:

LineBreakMeasurer quebrador = new LineBreakMeasurer(str.getIterator(), new FontRenderContext(null,true,true)); [/code]