Metafont

Un article de Wikipédia, l'encyclopédie libre.

METAFONT
Développeur Donald Knuth
Dernière version 2.71828
Environnement Multiplate-forme

Metafont est un langage employé pour composer des polices matricielles.

Ce langage a été conçu par Donald Knuth et fait partie du célèbre système de composition TeX. Ce langage comprend des instructions graphiques et sa syntaxe de base ressemble à celle des langages de la famille Algol. Une caractéristique de Metafont est de donner la possibilité de définir les contours des caractères avec des relations géométriques puissantes; par exemple, un point peut être défini comme l'intersection d'un segment de droite et d'une courbe de Bézier. Des instructions permettent d'effectuer des homothéties, des rotations, des symétries, des translations etc. Metafont interprète ces instructions placées dans un fichier source d'extension .mf et génère un fichier d'image d'extension .gf (generic font) contenant la police et ce dernier peut être compressé en un fichier d'extension .pk (packed) à l'aide du programme GFtoPK. Metafont peut aussi produire un fichier d'extension .tfm (TeX Font Metric) d'informations métriques d'une police.

Metafont est le plus souvent appelé sans demande directe de l'utilisateur. Les fichiers au format DVI ne contiennent que des références aux polices de caractères, plutôt que des références à l'ensemble des points ou des vecteurs constituant un caractère, c'est-à-dire à son œil. D'autres formats comme le PostScript, ne se limitent pas à de telles références. En conséquence, les œils doivent être consultés toutes les fois qu'une demande est faite de visualiser, d'imprimer ou de convertir un fichier DVI. La plupart des distributions de TeX sont configurées de sorte que, toutes les polices indisponibles dans la résolution exigée lors du traitement, soient produites par des appels à Metafont. Les œils sont alors stockés dans des fichiers pour leur réutilisation ultérieure.

D'autre part, vous pouvez employer Metafont pour produire n'importe quel type de graphique, et pas seulement des caractères. Cependant, MetaPost est préféré pour créer des illustrations avancées, parce qu'il a la possibilité de produire du PostScript .

[modifier] Langage de description

Voici un petit exemple du Metafont-Logofont :

1: beginlogochar("F",14);
2: x1=x2=x3=leftstemloc;
3: x4=w-x1+ho; x5=x4-xgap;
4: y2=y5; y3=y4; bot y1=-o;
5: top y3=h; y2=barheight;
6: draw z1--z3--z4; draw z2--z5;
7: labels(1,2,3,4,5); endchar;

Tout d'abord, les coordonnées des points qui définissent F, sont calculées.
La ligne 1 définit un nouveau symbole ayant comme nom F et comme code 14.
Les abscisses des points 1, 2 et 3 sont initialisées à leftstemloc, une valeur qui indique la position de la ligne gauche.
La ligne 3 définit x4 de telle sorte que le point 4 se trouve à la même distance du bord droit, que le point 1 du bord gauche.
Dans la ligne 6, les points 1, 3 et 4 sont joints par des segments de droite (segment vertical gauche et segment horizontal supérieur du F). Ensuite les points 2 et 5 sont joints (petite ligne horizontale dans le milieu du F).

[modifier] Références