Fonte vectorielle de PecheuxGraph

La fonte de caractères de la bibliothèque PecheuxGraph est étudiée pour tenir le moins de place possible tout en offrant le maximum de possibilités. Elle est définie par des vecteurs, ce qui permet les agrandissements agréables. Pour des raisons de taille, les vecteurs sont définis dans une matrice de 7 pixels de haut (exception pour le caractère _ qui est sur 8 pixels de haut). La largeur est variable et va de 1 à 7 pixels. Il y a deux types de vecteurs, les segments de droites (appelées droite dans la suite) et les arcs de cercle (désignés par arc plus tard). Pour les droites, le point de départ est un point de la matrice, sa longueur est un entier et l'orientation va par sauts de 22,5°. Pour les arcs, le centre appartient à la matrice et il est dessiné par huitième de cercle dans le sens horaire. La faible définition permet d'avoir une fonte qui occupe peu de place, car un vecteur est défini sur 16 bits.

Il est possible qu'un tracé dépasse de la matrice. C'est le cas des jambages des minuscules (gjpq).

La fonte utilise 3 tables:
- une table contenant la largeur du caractère, le nombre de vecteurs (1 octet par caractère)
- une table contenant l'adresse où est stocké le premier vecteur (1 octet par caractère)
- une table contenant les différents vecteurs (2 octets par vecteur)
Il y a environ 6 octets par caractères en moyenne, car il y a des réutilisations. Par exemple pour coder les vecteurs de ,;:. il ne faut que 3 vecteurs <virgule en bas> <point en haut> <point en bas>. La virgule occupe 1 vecteur et commence à <virgule en bas>, point-virgule occupe 2 vecteur et commence au même endroit...

Prenons l'exemple du caractère P. Ce caractère est défini dans une matrice de 7 pixels de haut comme presque tous les caractères, sur 5 pixels de large, un dernier pixel est ajouté pour chaque caractère pour l'espace inter-caractère. Les largeurs des caractères vont de 1 (par exemple pour les caractères |.,!:; ) à 7 (@AMOQV_mw).

P utilise 4 vecteurs:
- une droite verticale (repérée 0) dessinée en rouge, commençant en (0,0), de longueur 6, de direction vers le bas. En plus si on est en mode empattement, cette droite accepte un empattement en haut et un en bas, dessinés en vert. Les empattements du haut sont toujours horizontaux, dirigés vers la gauche, et font 1/2 pixel de long. Les empattements du bas sont toujours horizontaux, toujours dans les deux directions, et font 1/2 pixel de chaque côté.
- deux droites horizontales sans empattements (repérées 1 et 2)
- un arc (repéré 3) de centre (2,2), de rayon 2, commençant au nord, finissant au sud.

Les chiffres qui apparaissent sont les numéros des vecteurs, dans l'ordre de la définition dans la table. 0 indique le vecteur numéro 0, 1 le vecteur numéro 1... Pour les arcs, le chiffre est placé au centre du tracé. Pour les droites, il est placé au premier quart. Le segments sont d'ailleurs dessinés en partant obligatoirement du point le plus en haut à gauche.

Pour la taille N, une case correspond à N pixels. La taille par défaut étant de 2, les caractères occupent alors 14 pixels de haut. Ne pouvant dessiner des demi-pixels, les empattements ne peuvent pas être dessinés en taille 1. Pour la taille 2 ou 3, les empattements seront de 1 pixels... En taille 2, P occupera donc 11 pixels de large (plus 2 pixels pour l'espace inter-caractères. Le petit + sur le côté gauche indique que ce caractère a au moins un empattement qui augmente la largeur du caractère de 1/2 pixel si le mode serif est actif.

Définition des caractères


dansetrad.fr Contactez-moi