Introduction
À 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. Comme il s'agit d'un outil de dessin, il peut être étendu à d'autres applications qui ne sont pas uniquement typographique.
Exemples de typo faites avec Metapost/Metafont:
- Metaflop
- OCR BPI d'Antoine Gelgon
- D'autres expérimentations développées par le collectif Open Source Publishing
metABC comme ABCdaire
L'atelier se concentrera sur le dessin collectif d’un abécédaire, à travers un éditeur collaboratif permettant aux participants de travailler en temps réel sur un même set de descriptions et de variables. Qui dit abécédaire, dit aussi illustration. Cet atelier permettra aux étudiants de s'intéresser au dessin de lettre sans avoir de connaissances typographiques au préalable. On tentera de voir comment dessin de lettre et illustration peuvent s'entremêler, se supperposer ou s'opposer.
Accompagnant cette écriture collective, une vue “image” synchronisée et projetée des caractères et illustrations permettra de voir les dessins s’actualiser et réagir aux changements apportés dans le code.
Les résultats seront plottés à l'aide d'un plotter, nous crérons en fonction du projet un poster ou une petite édition qui sera présentées lors de la cession de présentation qui aura lieu le lundi 12 décembre.
Quelques exemples d'abécédaires
Bruno Munari. ABC une petite leçon d'anglais
Abécédaire de guerre (1914)
Abécédaire hongrois
Abécédaire antropomorphique
Plus de références sur Gallica
L'atelier
- Chaque étudiant réalise une lettre de l'alphabet (dans l'ordre de la liste des présence)
- Le gabarit de chaque lettre/illustration s'inscrit dans un carré de 10 cm x 10 cm
programme
21/11
- 16h → 16h40 : Introduction à Metapost et briefing du workshop
- 16h40 → 17h : Prise en main du dispositif
- 17h → 17h30 : Premières recherches et dessins
- 17h40 → 17h50 : Pause
- 17h50 → 19h00 : Dessins dans metapost et premiers prints sur le plotter
Un peu d'histoire
Metafont
![] ( http://zigzaganimal.be/wp-content/uploads/2013/04/2_knuth-figure0.jpg.gif)
À partir de 1977 Donald Knuth démarre l'écrture du logiciel TeX et du système de création de polices Metafont. Metafont est un langage utilisé pour composer des polices matricielles qui fut utilisé par Knuth pour créer la police Computer Modern. Il a été développé en même temps que TeX.
C’est avec ce langage que Knuth a dessiné la famille de fontes Computer Modern.
![] (http://luc.devroye.org/GUST--LatinModernRoman10-b.png)
![] ( http://www.micropress-inc.com/fonts/ecfonts/ecf2t.gif)
Metapost
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 et compatible avec nos outils les plotters (en convertissant le svg vers hpgl).
Comparaison des dessins de deux O exportés respectivement de Metafont et MetaPost, avec à gauche la sortie vectorielle Metapost, à droite le dessin vectorisé à partir du bitmap de Metafont : ![] (http://antoine-gelgon.fr/MetaPost-Doc/MPvsMF.png)
→ Exemples de figures dessinées avec Metapost
→ Metapost - A Very Brief Tutorial
Médiographie, ressources
Documentation plus large
- Metapost raconté aux piétons, Yves Soulet - cahiers GUTenberg, n°52-53, octobre 2009
- The METAFONT tutorial, ChristopheGrandsire - Version 0.33, December 30, 2004
- Metafont, Guide pratique, Bernard Desgraupes - Vuibert 1999
- Lessons Learned from Metafont, Donald E. Knuth - Visible Language, 1985
Vocabulaire de base
Pour enclencher la description d'une nouvelle figure :
beginfig(1)
Chaque ligne de commande se termine par un point virgule.
Description d'une ligne horizontale rejoingnant 2 points :
draw z1--z2;
Decription d'une courbe rejoingant 3 points
draw z1..z2..z3;
Pour terminer la description d'une figure :
endfig;
Ici un exemple de description avec des points
beginfig(6)
z1=(1,0);
z2=(4,5);
z3=(5,0);
z4=(1,2);
z5=(3,1);
z6=(6,2);
draw z1--z2--z3{up}..z4..z5..z6;
endfig;
→ Aperçu du résultat :
Pour faire varier la forme du tracé, on utilise les paramètres circle, square ou razor pour définir la forme du stylo (pen) avec la commande suivante (ici pour choisir une plume biseautée):
pickup penrazor;
![] (https://upload.wikimedia.org/wikipedia/commons/3/34/Metafont_pens.png)
À gauche une plume biseautée, à droite une plume ronde.
Installer Metapost sur votre machine (optionnel et non nécessaire pour le workshop)
sur Mac, installer TexShop
sur Windows, installe MikTeX
sur Ubuntu
sudo apt install texlive-binaries texlive-metapost
sur Archlinux
sudo pacman -S texlive-bin
Générer les figures à partir d'un etherpad en ligne
via le terminal avec la commande suivante (en replaçant format par "svg" ou "eps")
for (( ; ; )); do curl http://adresse-du-pad/export/txt >| metahoguet.mp && mpost -interaction=batchmode -s 'outputformat="format"'metahoguet.mp ; sleep 9; done
for (( ; ; ));
do
rm *.svg
echo 'outputtemplate := "%c.svg";' > metahoguet.svg.mp
curlhttp://osp.constantvzw.org:9999/p/metahoguet/export/txt >> metahoguet.svg.mp
mpost -interaction=batchmode -s 'outputformat="svg"' metahoguet.svg.mp
sleep 2
done
Ou idem en une seule ligne pour le terminal :
for (( ; ; )); do rm *.eps; echo 'outputtemplate := "%c.eps";' > metahoguet.eps.mp; curl
http://osp.constantvzw.org:9999/p/metahoguet/export/txt>> metahoguet.eps.mp; mpost -interaction=batchmode -s 'outputformat="svg"' metahoguet.svg.mp; sleep 2; done
for (( ; ; )); do rm *.eps; echo 'outputtemplate := "%c.eps";' > meta.mp; curl http://osp.constantvzw.org:9999/p/metahoguet/export/txt >> meta.mp; mpost -interaction=batchmode -s 'outputformat="eps"' meta.mp; sleep 2; done
for i in ../*.svg; do echo $(basename ${i%.svg}); done
for i in ../*.svg; do echo $(basename $i .svg); done