2010-03-17 4 views
1

je le code postscript suivant:Rotation du texte en postscript

/outputtext { 
    /data exch def 
    /rot exch def 
    /xfont exch def 
    /Times-Roman findfont 
    xfont scalefont 
    setfont 
    /y1 exch def 
    /x1 exch def 
    x1 y1 moveto 
    rot rotate 
    data show 
} def 


% x y fontsize rotation (text) outputtext 
20 300 12 0 (text1) outputtext 
20 400 12 90 (text2) outputtext 
20 500 12 90 (text3) outputtext 
20 600 12 0 (text4) outputtext 
showpage 

La fonction affiche simplement le texte en fonction d'un x, y co-ords et le texte à afficher, il y a aussi une variable de rotation. Pour une raison quelconque, lorsque je produis du texte avec une rotation de> 0 degré, tout autre texte qui vient après cela ne fonctionne pas, je n'arrive pas à comprendre pourquoi c'est le cas. Dans l'exemple ci-dessus, 'text1' et 'text2' s'afficheront, mais pas 3 et 4.

Répondre

2

Trouvé, besoin de faire un négatif de la rotation (donc si c'était une rotation de 90 degrés, il faut alors être tourné -90 degrés)

nécessaire ce qui suit:

rot neg rotate 

Ainsi, la fonction devient:

/outputtext { 
    /data exch def 
    /rot exch def 
    /xfont exch def 
    /y1 exch def 
    /x1 exch def 
    /Times-Roman findfont 
    xfont scalefont 
    setfont 
    x1 y1 moveto 
    rot rotate 
    data show 

    rot neg rotate 
} def 
3

la commande rotate dans Postscri pt fait pivoter l'espace de coordonnées entier, pas une opération de dessin individuelle. 90 rotate met toutes les opérations supplémentaires en haut de la feuille.

+0

Si vous souhaitez faire pivoter uniquement du texte mais pas le reste sur la page, appelez gsave avant de faire pivoter et grestore après la sortie du texte. – pi3

0

Le "Rotate" est utilisé pour faire pivoter le texte affichant en Postscript

commande et Current Transformation Matrix (MC) tournent: 45 tourner 10 10 moveTo (Postscript) montrent

CTM Matrice: [0,7071 0,7071 -0,7071 0,7071 0 0] concat 10 10 moveTo (Postscript) montrent