private void calcCoordinates(final float x,final float[][] Trm,float charSpacing){
  final float[][] trm=new float[3][3];
  for (int xx=0; xx < 3; xx++) {
    System.arraycopy(Trm[xx],0,trm[xx],0,3);
  }
  x1=x;
  x2=trm[2][0] - (charSpacing * trm[0][0]);
  if (glyphData.isHorizontal()) {
    if (trm[1][0] < 0) {
      x1=x + trm[1][0] - (charSpacing * trm[0][0]);
      x2=trm[2][0];
    }
 else     if (trm[1][0] > 0) {
      x1=x;
      x2=trm[2][0];
    }
  }
 else   if (trm[1][0] > 0) {
    x1=trm[2][0];
    x2=x + trm[1][0] - (charSpacing * trm[0][0]);
  }
 else   if (trm[1][0] < 0) {
    x2=trm[2][0];
    x1=x + trm[1][0] - (charSpacing * trm[0][0]);
  }
}

private void calcCoordinates ( final float x , final float [ ] [ ] Trm , float charSpacing ) { final float [ ] [ ] trm = new float [ 3 ] [ 3 ] ; for ( int xx = 0 ; xx < 3 ; xx ++ ) { System . arraycopy ( Trm [ xx ] , 0 , trm [ xx ] , 0 , 3 ) ; } x1 = x ; x2 = trm [ 2 ] [ 0 ] - ( charSpacing * trm [ 0 ] [ 0 ] ) ; if ( glyphData . isHorizontal ( ) ) { if ( trm [ 1 ] [ 0 ] < 0 ) { x1 = x + trm [ 1 ] [ 0 ] - ( charSpacing * trm [ 0 ] [ 0 ] ) ; x2 = trm [ 2 ] [ 0 ] ; } else if ( trm [ 1 ] [ 0 ] > 0 ) { x1 = x ; x2 = trm [ 2 ] [ 0 ] ; } } else if ( trm [ 1 ] [ 0 ] > 0 ) { x1 = trm [ 2 ] [ 0 ] ; x2 = x + trm [ 1 ] [ 0 ] - ( charSpacing * trm [ 0 ] [ 0 ] ) ; } else if ( trm [ 1 ] [ 0 ] < 0 ) { x2 = trm [ 2 ] [ 0 ] ; x1 = x + trm [ 1 ] [ 0 ] - ( charSpacing * trm [ 0 ] [ 0 ] ) ; } }
calculate the x coords for text here y coords are calculated in the method processtextarray ( final byte [ ] stream , int startcommand , int datapointer )
