Fichier 506.jps — Modifié le 18 Juin 2006 à 13 h 20
%% 3 lignes de jps a eliminer pour avoir du pur postscript
%% taille fenetre en jps
-12 12 setxrange
-2 3 setyrange
20 setxunit
%% fin du jps a eliminer
%% 2 definitions preliminaires : "defppathtable" et "interpolfunct"
%% voir http://melusine.eu.org/syracuse/bbgraf/jps2ps/pps/defppathtable.pps
%% et http://melusine.eu.org/syracuse/bbgraf/jps2ps/pps/interpolfunct.pps
%% definition d'une fonction numerique a partir de son graphe (défini
%% par un chemin)
%% on utilisera ensuite cette fonction numerique pour deformer le texte
newpath
-200.0 9.99988 moveto
-170.858 20.0947 -134.665 23.7141 -99.9998 19.9999 curveto
-29.9998 12.4999 -29.9998 12.4999 39.9998 4.99994 curveto
63.2333 2.51058 81.0974 12.7908 99.9998 19.9999 curveto
128.472 30.8586 165.365 34.548 200.0 30.0 curveto
defppathtable
/table exch def
/f {table interpolfunct} def
%% juste pour visualiser le chemin
0 0 1 setrgbcolor
stroke
0 setgray
%% le fichier de Manuel Luque
%% modifie par jpv, dim jun 18 13:18:13 CEST 2006
% (c) P. Kleiweg 1997
% adaptation plagiat M.L. 05/06/2006
%% les parametres du fichier :
%% le decalage pour positionner le texte dans la page
%% 297 600 translate
%% le decalage (en picas) du texte par rapport a sa ligne de base
/decalage_vertical 0 def
%% la police et sa taille
/Times-Roman findfont 40 scalefont setfont
%% le texte a deformer (les x sont dans [-warphalf ; warphalf])
/warptxt (Modulation d'amplitude) def
%% la procedure de base pour la transformation des points du chemin
%% (x, y) --> (X, Y)
%% cette fonction peut utiliser les variables warpwidth et warphalf
/warp {
3 dict begin
/y exch def
/x exch def
x y
%% on multiplie y par f (x)/20 (on divise par 20 car les f(x)
%% oscillent autour de 20)
x f 20 div mul
end
} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% tout ce qui suit n'a pas a etre modifie %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/warpwidth warptxt stringwidth pop def %% largeur horizontale du texte
/warphalf warpwidth 2 div def %% demi-largeur horizontale
%% pour remplacer 'move'
/warpmove{
%% on teste le booleen place 2 tokens plus en avant sur la pile
%% si c'est 'true', alors on en est au 1er appel => on initialise
%% le chemin
2 index {
newpath
} if
%% puis on applique warp a notre point
warp moveto
%% on enleve le 'true' pour mettre un 'false' a la place
pop false
} bind def
%% pour remplacer 'lineto
/warpline {
warp lineto
} bind def
%% pour remplacer 'curveto'
/warpcurve {
6 2 roll warp
6 2 roll warp
6 2 roll warp
curveto
} bind def
%% 'warpit' declenche la transformation du chemin courant
/warpit {
true
{ warpmove } { warpline } { warpcurve } { closepath } pathforall
pop
} bind def
newpath
%% on se deplace (init chemin) de facon a
%% centrer la ligne de base du texte en (0 , - decalage_vertical)
warphalf neg decalage_vertical neg moveto
warptxt true charpath %% on cree le chemin
%% maintenant on y va
warpit %% on applique le pathforall
stroke %% puis on encre