type.code ou Metahoguet worksession - 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.
L'atelier se concentrera sur le dessin collectif d’un ensemble de caractères, à travers un éditeur collaboratif permettant aux participants de travailler en temps réel sur un même set de descriptions et de variables.
Accompagnant cette écriture collective, une vue “image” synchronisée et projetée des caractères 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'une table traçante, rythmant l’atelier et remplissant progressivement les murs d’exposition de la Maison du Livre. Ils seront visibles jusqu’au dimanche 20 novembre.
Photos et fontes
Télécharger les fontes issues du workshop : MetaHoguetOriginal
Metafont
À 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.
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 :
→ 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;
À gauche une plume biseautée, à droite une plume ronde.
Planning des deux journées :
Friday
- 10:00 Coffee
- 10:30 Start - Introduction workshop, Knuth, MetaFont, TeX
- 11:00 First glyph parts demo
- 13:00 Lunch
- 14:00 Drawing of the full set
- 18:00 Wrap-up
Saturday
- 10:00 Coffee
- 10:30 Teams of variations
- 13:00 Lunch
- 14:00 Installing exhibition
- 18:00 Drinks *
Sunday
- 18:30 Exhibition opening : https://www.facebook.com/events/1795989690667629/
Installer Metapost sur votre machine (optionnel et non nécessaire pour le workshop)
sur Ubuntu
sudo apt install texlive-binaries
sudo apt install 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
Todo (OSP missions)
- Introduction : présentation de l'atelier et documentation → Ludi
- Set up of the first points, pieces and variables → Pierre
- Live visualisation → Antoine
- Pad history parsing through etherpad API → Alex Gijs + History font / feature file → Gijs
- Plotter scenography → Gijs
- Raspberry Pi or Laptop / Ethertoff install → Gijs, Alex
for (( ; ; ));
do
rm *.svg
echo 'outputtemplate := "%c.svg";' > metahoguet.svg.mp
curl http://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