      SUBROUTINE GSCHAR2(X,Y,N,CHAINE)
      INCLUDE 'Parametres.f'
      REAL*4 X,Y
      CHARACTER*1024 CHAINE,CHCH
      logical*4 assezloin
      if(n.le.0) return
      if (assezloin(x,y)) return
      nn = min(1024,n)
      if (ipostscript.eq.1) then       
        IX = origine_x + facteur_en_x*X
        IY = origine_y + facteur_en_y*Y
        CHCH = CHAINE(1:NN)//char(0)
        IF (icoul_texte.ne.icoul_courante) then
          call x11loadcolor(icoul_texte)
          if (angle_texte.eq.0.) then
            if (ifonte_courante.eq.5) then
              call x11txtsrnrot2(CHCH,nn,ix,iy,icoulfond,angle_texte)
            else
              call x11txtsrn2(CHCH,NN,ix,iy,icoulfond)
            endif
          else
            call x11txtsrnrot2(CHCH,nn,ix,iy,icoulfond,angle_texte)
          endif
          call x11loadcolor(icoul_courante)
c
        else
          if (angle_texte.eq.0.) then
            if (ifonte_courante.eq.5) then
              call x11txtsrnrot2(CHCH,nn,ix,iy,icoulfond,angle_texte)
            else
              call x11txtsrn2(CHCH,NN,ix,iy,icoulfond)
            endif
          else
            call x11txtsrnrot2(CHCH,nn,ix,iy,icoulfond,angle_texte)
          endif
        endif
      else
        if (sauve_graphic) return
        xxxx = origine_x + facteur_en_x*X
        yyyy = origine_y + facteur_en_y*Y
        call parenthese_ps(chch,nn)
        IF (ipostscript.ne.-1.and.icoul_texte.ne.icoul_eff) then
          write(ilaser_file,'(f4.2,2f5.2,a)') table_rouge(icoul_texte)
     &                                       ,table_vert(icoul_texte)
     &                                       ,table_bleu(icoul_texte)
     &                                       ,' c'
          call ecriseconome(ilaser_file,xxxx,0,'bidon')
          call ecriseconome(ilaser_file,yyyy,nn+7,
     &                     ' 0 ('//chaine(1:nn)//') E')
          write(ilaser_file,'(f4.2,2f5.2,a)') 
     &          table_rouge(icoul_eff)
     &         ,table_vert(icoul_eff)
     &         ,table_bleu(icoul_eff)
     &         ,' c'
        else
          call ecriseconome(ilaser_file,xxxx,0,'bidon')
          call ecriseconome(ilaser_file,yyyy,nn+7,
     &                     ' 0 ('//chaine(1:nn)//') E')
        endif
      endif
      end
