PaolMetapost

Découverte et exploration de METAPOST: Approche paramétrique de la création typographique

"À l’opposé des principaux logiciels de dessins de lettres qui, s’inscrivant dans l’héritage de Gutenberg, modélisent celles-ci par leur contour, METAFONT permet de décrire la lettre par son “ductus”, c’est à dire son chemin central ou squelette. Repartant du geste calligraphique, cet outil propose une conception digitale et paramétrique du caractère typographique.
[...]
Le langage Metafont a lui aussi donné naissance à MetaPost qui permet de produire des figures PostScript à partir d'une description géométrique. Metapost est dérivé du système Metafont mais spécialisé dans la production de diagrammes. Alors que Metafont produit des fichiers images associés à des fichiers contenant des informations métriques de police, MetaPost produit des fichiers au format PostScript. L'avantage de Metapost est qu'il produit des graphiques dans un format vectoriel et donc ajustable en terme d'échelle."
- http://write.osp.kitchen/r/metahoguet.md

![abcde] (http://pads.ustensile.be/ether/up/fab09017198cc3be68a4b4a72e2e8c19.jpg){: style="float: left; max-width: 220px;"} ![efg] (http://pads.ustensile.be/ether/up/69b23a08543c601a5c9e326231458b1a.jpg){: style="float: left; max-width: 220px; margin-left: 20px;"} ![adef] (http://pads.ustensile.be/ether/up/5ff6cd58dbe2abbd48e89845cfdc5d36.jpg){: style="float: left; max-width: 220px; margin-left: 20px;"}

• Dans un premier temps installation du pack basic MiKTeX qui contient metapost https://www.ctan.org/pkg/miktex-portable https://miktex.org/howto/install-miktex

• Puis écrire sa recette dans un éditeur de texte
(personnellement j'utilise Atom https://atom.io/)

–variables et structure du a bas de casse–
FICHIER SOURCE

prologues := 3;  
outputtemplate := "%c.svg";  
outputformat := "svg";

% repères verticaux  
leftedge := 0;  
width := 300;  
middle := .5[leftedge,width];

% repères horizontaux  
baseline := 0;  
descender :=-150;  
xheight := 700;  
ascender :=200+xheight;  
c=125;  
p=200;

% Letter a  
beginfig(1);  
pickup pencircle xscaled20 yscaled20;

x1=x5=x6:=leftedge;  
x3=x8=x9:=width;  
x2=x4=x7:=middle;

y1=xheight-c;  
y3:=xheight-c;  
y2:=xheight;  
y4:=xheight-2c+(width/30)*-1;  
y5:=y4-c;  
y6=baseline+c;  
y8:=baseline+p;  
y7:=baseline;  
y9:=baseline;

draw z1{up}..z2..z3..z4{left}..{down}z5--z6{down}..z7..z8--z3;  
draw z3--z9;

endfig;  
end;

• Pour visualiser, enregistrez le fichier au format .mp puis dans le terminal allez à l'emplacement du fichier et executez la commande mpost nomdufichier.mp

a

Avec metapost on peut faire évoluer le squelette de l'aplphabet entier en modifiant la valeur des variables que l'on fixe

xheightwidth

Dans les gif ci-dessus la variable "xheight" modifie la hauteur d'x et "width" la chasse.
Ci-dessous la variable "c" tranforme l'allure des courbes et "p" la jonction au fut c

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Aperçu d'un aplhabet construits avec ces paramètres, squelettes auquels j'ai appliqué un brush et mis en page avec le logiciel vectoriel inkscape https://inkscape.org/fr/

abcdefghijkl

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Différentes documentations sur le language metapost
https://melusine.eu.org/syracuse/metapost/f-mpman-2.pdf
http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html
http://www.ursoswald.ch/metapost/tutorial.html
http://write.osp.kitchen/r/metahoguet.md
http://osp.constantvzw.org:9999/p/metahoguet

§§§§§§§§§

MODIFICATIONS

paramètres.mp

![a] (http://pads.ustensile.be/ether/up/f07b3f6fb7725fbbcfca5c6ecef36f66.svg){: style="float: left; max-width: 220px; margin-left: 20px;"} ![e] ( http://pads.ustensile.be/ether/up/8d1be261940246db7b1652d471e455c7.svg ){: style="float: left; max-width: 220px; margin-left: 20px;"} ![c] ( http://pads.ustensile.be/ether/up/988329798b5297d8ec727006f27a2d16.svg ){: style="float: left; max-width: 220px; margin-left: 20px;"}

![b] ( http://pads.ustensile.be/ether/up/25bb8799d82252338f690e4452adf36a.svg ){: style="float: left; max-width: 220px; margin-left: 20px;"} ![d] ( http://pads.ustensile.be/ether/up/d1ab58ac65650677ac94cd54b555791d.svg ){: style="float: left; max-width: 220px; margin-left: 20px;"} ![f] ( http://pads.ustensile.be/ether/up/fb1a72060083206883fd450354651f1a.svg ){: style="float: left; max-width: 220px; margin-left: 20px;"}

u ![n] ( http://pads.ustensile.be/ether/up/05bdf1e7618ad41308215973df6ba615.svg ){: style="float: left; max-width: 220px; margin-left: 20px;"}