Fichier ml_4.jps — Modifié le 19 Juin 2006 à 10 h 15
%% 3 lignes de jps a eliminer pour avoir du pur postscript
-12 12 setxrange
-2 8 setyrange
20 setxunit
%% fin du jps a eliminer
%% definition de la modulation par un chemin, exemple de Manuel Luque
%% 2 definitions preliminaires : "defppathtable" et "interpolfunct"
newpath
-140 0 moveto
0 120 lineto
140 0 lineto
defppathtable
/table exch def
/f {table interpolfunct} def
%% juste pour visualiser le chemin
gsave
0 0 1 setrgbcolor
3 setlinewidth
closepath
stroke
grestore
%% variations a partir d'un fichier original de :
% (c) P. Kleiweg 1997
%% modifie par jpv, dim jun 18 13:18:13 CEST 2006
%% les parametres du fichier :
%% le decalage (en picas) du texte par rapport a sa ligne de base
/decalage_vertical 0 def
%% la police et sa taille
%% Caractères accentués
/ReEncode { exch findfont
dup length dict begin { 1 index /FID eq {pop pop} {def} ifelse
}forall /Encoding ISOLatin1Encoding def currentdict end definefont
pop }bind def
/Font /Times-Roman /ISOfont ReEncode /ISOfont def
Font findfont 28 scalefont setfont
%% le texte a deformer (les x sont dans [-warphalf ; warphalf])
/warptxt (La géométrie du triangle) 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 14 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